You are on page 1of 316

SoMachine Basic

EIO0000001477 12/2016

SoMachine Basic
Gua de la biblioteca de funciones
genricas
12/2016
EIO0000001477.07

www.schneider-electric.com
La informacin que se ofrece en esta documentacin contiene descripciones de carcter general
y/o caractersticas tcnicas sobre el rendimiento de los productos incluidos en ella. La presente
documentacin no tiene como objeto sustituir dichos productos para aplicaciones de usuario
especficas, ni debe emplearse para determinar su idoneidad o fiabilidad. Los usuarios o
integradores tienen la responsabilidad de llevar a cabo un anlisis de riesgos adecuado y
completo, as como la evaluacin y las pruebas de los productos en relacin con la aplicacin o el
uso de dichos productos en cuestin. Ni Schneider Electric ni ninguna de sus filiales o asociados
asumirn responsabilidad alguna por el uso inapropiado de la informacin contenida en este
documento. Si tiene sugerencias de mejoras o modificaciones o ha hallado errores en esta
publicacin, 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 electrnicos o mecnicos, 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 documentacin del sistema, las reparaciones solo
podr realizarlas el fabricante.
Cuando se utilicen dispositivos para aplicaciones con requisitos tcnicos 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, daos o un funcionamiento incorrecto del equipo.
Si no se tiene en cuenta esta informacin, se pueden causar daos personales o en el equipo.
2016 Schneider Electric. Reservados todos los derechos.

2 EIO0000001477 12/2016
Tabla de materias

Informacin de seguridad . . . . . . . . . . . . . . . . . . . . . . . . 9
Acerca de este libro . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Captulo 1 Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Cmo utilizar los ejemplos de cdigo fuente . . . . . . . . . . . . . . . . . . . . 18
Bloques de operacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Bloques de comparacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Captulo 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
Captulo 3 Instrucciones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
3.1 Procesamiento booleano . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Instrucciones booleanas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Operadores de carga (LD, LDN, LDR, LDF). . . . . . . . . . . . . . . . . . 54
Operadores de asignacin (ST, STN, R, S) . . . . . . . . . . . . . . . . . . 56
Operadores AND lgicos (AND, ANDN, ANDR, ANDF) . . . . . . . . . . 58
Operadores OR lgicos (OR, ORN, ORR, ORF) . . . . . . . . . . . . . . . . 60
Operadores OR exclusivos (XOR, XORN, XORR, XORF) . . . . . . . . . 62
Operador NOT (N) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
Instrucciones de comparacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
3.2 Procesamiento numrico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Introduccin a operaciones numricas . . . . . . . . . . . . . . . . . . . . . . . . 68
Instrucciones de asignacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Asignacin de cadenas de bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Asignacin de palabras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
Operadores aritmticos en enteros . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Instrucciones lgicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Instrucciones de desplazamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Instrucciones de conversin de BCD/binario. . . . . . . . . . . . . . . . . . . . 82
Instrucciones de conversin 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 aritmticas en objetos de coma flotante . . . . . . . . . . . . 94
Instrucciones trigonomtricas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Instrucciones de conversin de ngulos . . . . . . . . . . . . . . . . . . . . . . . 99
Instrucciones de conversin de entero/coma flotante . . . . . . . . . . . . . 100
3.5 ASCII . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
Instrucciones ROUND . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
Instrucciones de conversin de ASCII a entero . . . . . . . . . . . . . . . . . . 105
Instrucciones de conversin de entero a ASCII . . . . . . . . . . . . . . . . . . 107
Instrucciones de conversin de ASCII a flotante . . . . . . . . . . . . . . . . . 109
Instrucciones de conversin 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
Asignacin de tablas de palabras, palabras dobles o coma flotante . . 116
Funciones de suma en tablas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
Funciones de comparacin de tablas . . . . . . . . . . . . . . . . . . . . . . . . . 120
Funciones de bsqueda en tablas . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
Funciones de bsqueda de valores mximo y mnimo en tablas . . . . 124
Nmero de apariciones de un valor en una tabla . . . . . . . . . . . . . . . . 126
Funciones de desplazamiento circular de tablas . . . . . . . . . . . . . . . . . 127
Funciones de clasificacin en tablas . . . . . . . . . . . . . . . . . . . . . . . . . . 129
Funciones de interpolacin 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 instantnea (READ_IMM_IN). . . 138
Salida incrustada digital de escritura instantnea (WRITE_IMM_OUT) 140
Parmetro de bloque de funciones de lectura inmediata (READ_IMM) 142
Parmetro de bloque de funciones de escritura inmediata
(WRITE_IMM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
Captulo 4 Objetos de E/S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
4.1 Contador rpido (%FC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
Contador rpido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 Modulacin de ancho de pulsos (%PWM). . . . . . . . . . . . . . . . . . . . . . 149
Modulacin de ancho de pulsos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
Captulo 5 Objetos de red . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
Objetos de red . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
Captulo 6 Objetos de software . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
6.1 Uso de bloques de funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
Principios de programacin del bloque de funciones . . . . . . . . . . . . . 155
Aadido de un bloque de funciones . . . . . . . . . . . . . . . . . . . . . . . . . . 157
Configuracin de un bloque de funciones . . . . . . . . . . . . . . . . . . . . . . 159
6.2 Temporizador (%TM). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
Descripcin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
Configuracin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
TON: temporizador de retardo de conexin . . . . . . . . . . . . . . . . . . . . 164
TOF: temporizador de retardo de desconexin. . . . . . . . . . . . . . . . . . 167
TP: temporizador de pulso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
Ejemplo de programacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
6.3 Contador (%C). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
Descripcin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
Configuracin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
Ejemplo de programacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
6.4 Mensaje (%MSG) e intercambio (EXCH) . . . . . . . . . . . . . . . . . . . . . . 180
Descripcin general. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
Descripcin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
Configuracin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
Ejemplo de programacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
Ejemplos de ASCII . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
Peticiones y ejemplos estndar Modbus . . . . . . . . . . . . . . . . . . . . . . . 196
6.5 Registro LIFO/FIFO (%R) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
Descripcin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
Configuracin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
Funcionamiento del registro LIFO . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
Funcionamiento del registro FIFO . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
Ejemplo de programacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212

EIO0000001477 12/2016 5
6.6 Drums (%DR). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
Descripcin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
Configuracin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
Ejemplo de programacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
6.7 Registro de bits de desplazamiento (%SBR) . . . . . . . . . . . . . . . . . . . . 222
Descripcin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
Configuracin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
Ejemplo de programacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
6.8 Contador de pasos (%SC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
Descripcin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
Configuracin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
Ejemplo de programacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
6.9 Fechadores (%SCH) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
Descripcin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
Programacin y configuracin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
6.10 Reloj de tiempo real (%RTC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
Descripcin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
Configuracin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
6.11 PID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
Funcin PID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
6.12 Pasos de Grafcet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
Pasos de Grafcet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
Captulo 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
Captulo 8 Objetos de accionamiento . . . . . . . . . . . . . . . . . . . . . . . . 249
Objetos de accionamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
Captulo 9 Objetos de comunicacin . . . . . . . . . . . . . . . . . . . . . . . . . 251
9.1 Leer datos desde un dispositivo remoto (%READ_VAR). . . . . . . . . . . 252
Descripcin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
Configuracin de la funcin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
Ejemplo de programacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
9.2 Escritura de datos en un dispositivo Modbus (%WRITE_VAR) . . . . . . 262
Descripcin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
Configuracin de la funcin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
Ejemplo de programacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269

6 EIO0000001477 12/2016
9.3 Leer y escribir datos en un dispositivo Modbus
(%WRITE_READ_VAR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
Descripcin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
Configuracin de la funcin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
Ejemplo de programacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
9.4 Comunicacin en una conexin ASCII (%SEND_RECV_MSG) . . . . . 278
Descripcin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
Configuracin de la funcin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
Ejemplo de programacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
9.5 Enviar Recibir SMS (%SEND_RECV_SMS) . . . . . . . . . . . . . . . . . . . . 286
Descripcin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
Configuracin de funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
Captulo 10 Funciones de reloj . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
Funciones de reloj . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
Marcas de fecha y hora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
Ajuste de fecha y hora. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
Glosario ......................................... 309
ndice ......................................... 311

EIO0000001477 12/2016 7
8 EIO0000001477 12/2016
Informacin de seguridad

Informacin 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 continuacin pueden aparecer a lo largo de la documentacin o en el equipo para
advertir de peligros potenciales, o para ofrecer informacin que aclara o simplifica los distintos
procedimientos.

EIO0000001477 12/2016 9
TENGA EN CUENTA LO SIGUIENTE:
La instalacin, el manejo, las revisiones y el mantenimiento de equipos elctricos debern ser
realizados slo por personal cualificado. Schneider Electric no se hace responsable de ninguna
de las consecuencias del uso de este material.
Una persona cualificada es aquella que cuenta con capacidad y conocimientos relativos a la
construccin, el funcionamiento y la instalacin de equipos elctricos, y que ha sido formada en
materia de seguridad para reconocer y evitar los riesgos que conllevan tales equipos.

10 EIO0000001477 12/2016
Acerca de este libro

Presentacin

Objeto
En esta gua se describe cmo utilizar bloques de funciones e instrucciones en los programas que
cree con el software SoMachine Basic. Las descripciones se aplican a todos los controladores
lgicos compatibles con SoMachine Basic.

Campo de aplicacin
La informacin de este manual es aplicable slo para SoMachine Basic productos compatibles.
Este documento se ha actualizado para la publicacin de SoMachine Basic V1.5.
Las caractersticas tcnicas de los dispositivos que se describen en este documento tambin se
encuentran online. Para acceder a esta informacin online:

Paso Accin
1 Vaya a la pgina de inicio de Schneider Electric www.schneider-electric.com.
2 En el cuadro Search, escriba la referencia del producto o el nombre del rango de productos.
No incluya espacios en blanco en la referencia ni en el rango de productos.
Para obtener informacin sobre cmo agrupar mdulos similares, utilice los asteriscos (*).

3 Si ha introducido una referencia, vaya a los resultados de bsqueda de Product datasheets y


haga clic en la referencia deseada.
Si ha introducido el nombre de un rango de productos, vaya a los resultados de bsqueda de
Product Ranges y haga clic en la gama deseada.
4 Si aparece ms de una referencia en los resultados de bsqueda Products, haga clic en la
referencia deseada.
5 En funcin del tamao de la pantalla, es posible que deba desplazar la pgina hacia abajo para
consultar la hoja de datos.
6 Para guardar o imprimir una hoja de datos como archivo .pdf, haga clic en Download XXX
product datasheet.

Las caractersticas que se indican en este manual deben coincidir con las que figuran online. De
acuerdo con nuestra poltica de mejoras continuas, es posible que a lo largo del tiempo revisemos
el contenido con el fin de elaborar documentos ms claros y precisos. En caso de que detecte
alguna diferencia entre el manual y la informacin online, utilice esta ltima para su referencia.

EIO0000001477 12/2016 11
Documentos relacionados

Ttulo de la documentacin Nmero de referencia


SoMachine Basic - Gua de funcionamiento EIO0000001354 (ENG)
EIO0000001355 (FRA)
EIO0000001356 (GER)
EIO0000001357 (SPA)
EIO0000001358 (ITA)
EIO0000001359 (CHS)
EIO0000001366 (POR)
EIO0000001367 (TUR)
Modicon M221 Logic Controller Gua 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 tcnicas y otra informacin tcnica de nuestro sitio
webhttp://www.schneider-electric.com/ww/en/download

12 EIO0000001477 12/2016
Informacin relativa al producto

ADVERTENCIA
PRDIDA DE CONTROL
El diseador del esquema de control debe tener en cuenta las posibles modalidades de fallo
de rutas de control y, para ciertas funciones de control crticas, proporcionar los medios para
lograr un estado seguro durante y despus de un fallo de ruta. Funciones de control crticas
son, por ejemplo, una parada de emergencia y una parada de sobrerrecorrido, un corte de
alimentacin y un reinicio.
Para las funciones de control crticas deben proporcionarse rutas de control separadas o
redundantes.
Las rutas de control del sistema pueden incluir enlaces de comunicacin. Deben tenerse en
cuenta las implicaciones de retardos de transmisin imprevistos o fallos del enlace.
Tenga en cuenta todas las reglamentaciones para la prevencin de accidentes y las
directrices de seguridad locales.1
Cada instalacin de este equipo debe probarse de forma individual y exhaustiva antes de
entrar en servicio.
El incumplimiento de estas instrucciones puede causar la muerte, lesiones serias o dao al
equipo.

1 Para obtener informacin adicional, consulte NEMA ICS 1.1 (ltima edicin), "Safety Guidelines
for the Application, Installation, and Maintenance of Solid State Control" (Directrices de seguridad
para la aplicacin, la instalacin y el mantenimiento del control de estado esttico) y NEMA ICS
7.1 (ltima edicin), "Safety Standards for Construction and Guide for Selection, Installation and
Operation of Adjustable-Speed Drive Systems" (Estndares de seguridad para la construccin y
gua para la seleccin, instalacin y utilizacin de sistemas de unidades de velocidad ajustable) o
su equivalente aplicable a la ubicacin especfica.

ADVERTENCIA
FUNCIONAMIENTO IMPREVISTO DEL EQUIPO
Utilice solo software aprobado por Schneider Electric para este equipo.
Actualice el programa de aplicacin siempre que cambie la configuracin de hardware fsica.
El incumplimiento de estas instrucciones puede causar la muerte, lesiones serias o dao al
equipo.

EIO0000001477 12/2016 13
Terminologa derivada de los estndares
Los trminos tcnicos, smbolos y las descripciones correspondientes del presente manual o que
aparecen en la parte interior o exterior de los propios productos se derivan, por lo general, de los
trminos y las definiciones de estndares internacionales.
En el rea de los sistemas de seguridad funcional, unidades y automatizacin general se incluyen,
pero sin limitarse a ellos, trminos como seguridad, funcin de seguridad, estado de seguridad,
fallo, reinicio tras fallo, avera, funcionamiento incorrecto, error, mensaje de error, peligroso, etc.
Estos estndares incluyen, entre otros:

Estndar Descripcin
EN 61131-2:2007 Controladores programables, parte 2: Requisitos y ensayos de los equipos.
ISO 13849-1:2008 Seguridad de la maquinaria: partes de seguridad de los sistemas de control.
Principios generales del diseo.
EN 61496-1:2013 Seguridad de la maquinaria: equipo de proteccin electrosensible.
Parte 1: Requisitos y ensayos generales.
ISO 12100:2010 Seguridad de las mquinas. Principios generales para el diseo. Evaluacin del
riesgo y reduccin del riesgo
EN 60204-1:2006 Seguridad de las mquinas. Equipo elctrico de las mquinas. Parte 1:
Requisitos generales
EN 1088:2008 Seguridad de la maquinaria. Dispositivos de bloqueo asociados con
ISO 14119:2013 protecciones: principios de diseo y seleccin
ISO 13850:2006 Seguridad de la maquinaria. Parada de emergencia: principios de diseo
EN/IEC 62061:2005 Seguridad de la maquinaria. Seguridad funcional de los sistemas de control
programable de seguridad elctrica y electrnica
IEC 61508-1:2010 Seguridad funcional de sistemas de seguridad programable elctricos y
electrnicos: requisitos generales.
IEC 61508-2:2010 Seguridad funcional de los sistemas de seguridad electrnicos programables
elctricos y electrnicos: requisitos de los sistemas de seguridad electrnicos
programables elctricos y electrnicos.
IEC 61508-3:2010 Seguridad funcional de los sistemas de seguridad electrnicos programables
elctricos y electrnicos: requisitos de software.
IEC 61784-3:2008 Comunicacin digital de datos para la medicin y control: buses de campo de
seguridad funcional.
2006/42/EC Directiva de maquinaria
2014/30/EU Directiva de compatibilidad electromagntica
2014/35/EU Directiva de baja tensin

14 EIO0000001477 12/2016
Adems, los trminos utilizados en este documento se pueden usar de manera tangencial porque
se obtienen de otros estndares como:

Estndar Descripcin
Serie IEC 60034 Mquinas elctricas giratorias
Serie IEC 61800 Accionamientos elctricos de potencia de velocidad variable
Serie IEC 61158 Comunicacin digital de datos para la medicin y control - Bus de campo para
su uso en Sistemas de control

Por ltimo, el trmino zona de funcionamiento se puede utilizar junto con la descripcin de peligros
especficos, 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 estndares mencionados anteriormente podran o no aplicarse a los productos
especficos citados en la presente documentacin. Para obtener ms informacin en relacin con
los diferentes estndares aplicables a los productos descritos en este documento, consulte las
tablas de caractersticas de las referencias de dichos productos.

EIO0000001477 12/2016 15
16 EIO0000001477 12/2016
SoMachine Basic
Introduccin
EIO0000001477 12/2016

Captulo 1
Introduccin

Introduccin

Descripcin general
En este captulo se proporciona informacin sobre cmo utilizar los ejemplos de cdigo fuente y
los bloques que se requieren para ejecutar muchos de los ejemplos de operaciones e
instrucciones de asignacin que se indican en este documento.

Contenido de este captulo


Este captulo contiene los siguientes apartados:
Apartado Pgina
Cmo utilizar los ejemplos de cdigo fuente 18
Bloques de operacin 21
Bloques de comparacin 24

EIO0000001477 12/2016 17
Introduccin

Cmo utilizar los ejemplos de cdigo fuente

Descripcin general
Excepto donde se mencione explcitamente, los ejemplos de cdigo fuente contenidos en este
manual son vlidos para los lenguajes de programacin Diagrama de contactos y Lista de
instrucciones. Puede ser necesario ms de un escaln para un ejemplo completo.

Procedimiento de reversibilidad
Para obtener el cdigo fuente de Diagrama de contactos equivalente:

Paso Accin
1 Seleccione y copie (Ctrl+C) el cdigo fuente del primer escaln del programa de muestra de
este manual.
2
En SoMachine Basic, cree un nuevo escaln haciendo clic en en la barra de
herramientas.
3 En este escaln, haga clic en el botn LD > IL para visualizar el cdigo fuente de Lista de
instrucciones.
4 Seleccione el nmero de lnea 0000, haga clic con el botn derecho del ratn y elija Pegar
instrucciones para pegar el cdigo fuente en el escaln:

NOTA: Recuerde eliminar la instruccin LD de la ltima lnea del escaln si ha pegado las
instrucciones insertando las lneas antes del operador LD predeterminado.
5 Haga clic en el botn IL > LD para visualizar el cdigo fuente de Lista de instrucciones.
6 Repita los pasos previos para cualquiera de los escalones adicionales del programa de
ejemplo.

18 EIO0000001477 12/2016
Introduccin

Ejemplo
Programa Lista de instrucciones:

Escaln Cdigo fuente


0 BLK %R0
LD %M1
I
LD %I0.3
ANDN %R2.E
O
END_BLK
1 LD %I0.3
[%MW20:=%R2.O]
2 LD %I0.2
ANDN %R2.F
[%R2.I:=%MW34]
ST %M1

EIO0000001477 12/2016 19
Introduccin

Diagrama de contactos correspondiente:

20 EIO0000001477 12/2016
Introduccin

Bloques de operacin

Insercin de operaciones IL e instrucciones de asignacin en diagramas de contactos


Puede utilizar el smbolo grfico del Bloque de operacin para insertar operaciones de listas de
instrucciones e instrucciones de asignacin en escalones de diagrama de contactos:

El Bloque de operacin puede contener varios operandos y niveles de clculo. Por ejemplo:
%MF10 := SIN(%MF12 + 60.0) + COS(%MF13) + %MF10 + 1.2
Para insertar un bloque de operacin en un escaln:

Paso Accin
1
Haga clic en el botn Bloque de operacin en la barra de herramientas.
2 Haga clic en el rea de accin (las ltimas 2 columnas) del escaln para insertar el Bloque de
operacin.
3 Haga doble clic en la lnea de expresin de operacin.

El botn Codificacin inteligente (vase pgina 21) aparece al final de la lnea. Haga clic
en este botn para obtener ayuda sobre la seleccin de una funcin y la sintaxis de la
instruccin.
4 Escriba una operacin de lista de instrucciones vlida o una instruccin de asignacin y pulse
INTRO.

Informacin sobre herramientas de codificacin inteligente


Para facilitar la seleccin de funciones, SoMachine Basic muestra informacin sobre herramientas
cuando se escriben nombres de funcin en los bloques de operacin.
Hay dos tipos de informacin sobre herramientas:
Una lista de nombres de funcin, que se actualiza de forma dinmica con los nombres de
funcin que empiezan por los caracteres escritos. Por ejemplo, al escribir "AS" se muestra
ASCII_TO_FLOAT, ASCII_TO_INT y ASIN.
Ayuda sobre la sintaxis de una funcin, que se muestra al escribir un parntesis de apertura.
Por ejemplo, al escribir "ABS(" se muestra:

EIO0000001477 12/2016 21
Introduccin

Uso del asistente de Edicin inteligente de cdigo


El asistente de Edicin inteligente de cdigo aparece al hacer clic en el botn Edicin inteligente

de cdigo que se encuentra en la lnea de expresin de la operacin:

Siga estas instrucciones:

Paso Accin
1 Opcionalmente, filtre la lista por categora de funcin:
Todos los tipos
ASCII
Coma flotante
Objetos de E/S
Coma flotante
Procesamiento numrico
Tabla
PID

2 Seleccione una funcin para aadirla a la expresin.


3 Haga clic en Insertar funcin.

22 EIO0000001477 12/2016
Introduccin

Obtener ayuda con la sintaxis


Si la sintaxis de la operacin de lista de instrucciones o de la instruccin de asignacin es
incorrecta, el borde del cuadro de la expresin de operacin se vuelve de color rojo. Si necesita
ayuda, haga lo siguiente:
Mueva el ratn sobre la lnea de expresin de operacin;o bien
Seleccione Herramientas Mensajes de programa.

EIO0000001477 12/2016 23
Introduccin

Bloques de comparacin

Insercin de expresiones de comparacin de IL en diagramas de contactos


Puede utilizar el smbolo grfico del Bloque de comparacin para insertar expresiones de
comparacin de listas de instrucciones en escalones de diagrama de contactos:

Siga estas instrucciones:

Paso Accin
1

Haga clic en el botn Bloque de comparacin en la barra de herramientas.


2 Haga clic en algn lugar del escaln para insertar el Bloque de comparacin.
3 Haga doble clic en la lnea Expresin de comparacin.
4 Escriba una operacin de comparacin de listas de instrucciones vlida y pulse INTRO.

Obtener ayuda con la sintaxis


Si la operacin de comparacin de listas de instrucciones es incorrecta, el borde del cuadro
Expresin de comparacin se vuelve de color rojo. Si necesita ayuda, haga lo siguiente:
Mueva el ratn sobre la lnea Expresin de comparacin oo
Seleccione Herramientas Mensajes de programa.

24 EIO0000001477 12/2016
SoMachine Basic
Objetos de lenguaje
EIO0000001477 12/2016

Captulo 2
Objetos de lenguaje

Objetos de lenguaje

Contenido de este captulo


Este captulo contiene los siguientes apartados:
Apartado Pgina
Objetos 26
Objetos de bit de memoria 27
Objetos de E/S 29
Objetos de palabra 32
Objetos de coma flotante y de palabra doble 37
Objetos estructurados 42
Objetos indexados 45
Objetos de bloques de funciones 47

EIO0000001477 12/2016 25
Objetos de lenguaje

Objetos

Descripcin general
En SoMachine Basic, el trmino objeto se utiliza para representar un rea de la memoria del
controlador lgico reservada para que la utilice una aplicacin. Los objetos pueden ser:
Variables de software simples, como bits de memoria y palabras.
Direcciones de las entradas y salidas digitales o analgicas.
Variables internas del controlador, como palabras y bits del sistema.
Funciones predefinidas del sistema o de los bloques de funciones, como temporizadores y
contadores.
La memoria del controlador est preasignada para determinados tipos de objetos, o bien se asigna
automticamente cuando una aplicacin se descarga en el controlador lgico.
Los objetos solo pueden ser direccionados por un programa una vez que se ha asignado memoria.
Los objetos se direccionan mediante el prefijo %. Por ejemplo, %MW12 es la direccin de una
palabra de memoria, %Q0.3 es la direccin de una salida digital incrustada y %TM0 es la direccin
de un bloque de funciones Timer.

26 EIO0000001477 12/2016
Objetos de lenguaje

Objetos de bit de memoria

Introduccin
Los objetos de bit de memoria son variables de software de tipo bit que pueden utilizarse como
operandos y verificarse mediante instrucciones booleanas.
Ejemplos de objetos de bit:
Bits de memoria
Bits de sistema
Bits de pasos
Bits extrados de palabras

El rango de objetos vlidos va de 0 a la referencia mxima utilizada en su aplicacin (consulte la


gua de programacin de su controlador lgico).

Sintaxis
Utilice este formato para dirigir objetos de bits de pasos, de memoria y de sistema:

En esta tabla se describen los elementos en el formato de direccionamiento:

Grupo Elemento Descripcin


Smbolo % El smbolo de porcentaje siempre precede a una variable de
software.
Tipo de objeto M Los bits de memoria almacenan valores intermedios mientras se
ejecuta un programa.
S Los bits de sistema proporcionan informacin de control y de estado
del controlador.
X Los bits de pasos proporcionan el estado de las actividades del
paso Grafcet.
Identificador de instancia i El identificador del objeto que representa su instancia secuencial en
de objeto la memoria. La cantidad mxima de objetos depende de la cantidad
de objetos configurada para los lmites de la memoria disponible.
Para verificar la cantidad mxima de memoria disponible, consulte
la gua de programacin del Logic Controller.

Para obtener informacin sobre cmo dirigir los bits de E/S, consulte Objetos de E/S
(vase pgina 29).
Para obtener informacin sobre cmo dirigir un bit extrado de una palabra, consulte Extraccin
de un bit de un objeto de palabra (vase pgina 36).

EIO0000001477 12/2016 27
Objetos de lenguaje

Descripcin
En esta tabla se enumeran y se describen los objetos de bits de pasos, de memoria y de sistema
que se utilizan como operandos en las instrucciones booleanas:

Tipo Descripcin Direccin o Acceso de


valor escritura(1)
Valores 0 1 (Falso o Verdadero) 01
inmediatos
Memoria Los bits de memoria son reas de memoria interna %Mi S
utilizadas para almacenar valores binarios.
Nota: los objetos de E/S no utilizados no pueden
emplearse como bits de memoria.
Sistema Los bits de sistema %S0 a %S127 permiten monitorizar la %Si Depende de i
operacin correcta del controlador y la ejecucin correcta
del programa de aplicacin, adems de controlar
determinadas funciones a nivel de sistema.
Pasos Grafcet Los bits %X1 a %Xi se asocian a pasos Grafcet. El bit de %Xi S
paso Xi se establece en 1 cuando el paso
correspondiente est activo, y en 0 cuando el paso est
desactivado.
(1) Escrito mediante el programa o utilizando una tabla de animacin.

Ejemplo
En esta pgina se muestran algunos ejemplos de direccionamiento de objetos de bit:

Objeto de bit Descripcin


%M25 Bit de memoria nmero 25
%S20 Bit de sistema nmero 20
%X4 Paso Grafcet nmero 4

28 EIO0000001477 12/2016
Objetos de lenguaje

Objetos de E/S

Introduccin
Los objetos de E/S incluyen tanto bits como palabras. Todas las entradas y salidas fsicas estn
asignadas a estos objetos en la memoria interna. Los objetos de bit de E/S pueden utilizarse como
operandos y se pueden comprobar con instrucciones booleanas. Los objetos de palabra de E/S
pueden utilizarse en la mayora de las instrucciones no booleanas como funciones e instrucciones
que contienen operaciones aritmticas.
Ejemplos de objetos de E/S:
Entradas digitales
Salidas digitales
Entradas analgicas
Salidas analgicas
Entradas y salidas de comunicacin

El rango de objetos vlidos oscila entre 0 y el mximo configurado y soportado por su controlador
(consulte la Gua de hardware y la Gua de programacin del Logic Controller).

Sintaxis
En esta imagen se muestra el formato de la direccin de entrada/salida:

En esta tabla se describen los componentes del formato del direccionamiento:

Componente Elemento Valor Descripcin


Smbolo % El smbolo de porcentaje siempre precede a una direccin
interna.
Tipo de objeto I Entrada digital (objeto de bit)
Q Salida digital (objeto de bit)
IW Valor de la entrada analgica (objeto de palabra)
QW Valor de la salida analgica (objeto de palabra)
IWS Estado de canal de entrada analgica (objeto de palabra)
QWS Estado de canal de salida analgica (objeto de palabra)
(1) m es el nmero de mdulos locales configurados (mximo 7).
(2) n es el nmero de mdulos remotos configurados (mximo n+7). El nmero de posicin mximo es 14.
(3) p es el nmero del cartucho del controlador. q es el nmero de canal del cartucho.

EIO0000001477 12/2016 29
Objetos de lenguaje

Componente Elemento Valor Descripcin


Nmero de y 0 Canal de E/S incrustadas en el logic controller o en un
mdulo cartucho insertado en el logic controller.

1...m(1) Canal de E/S en un mdulo de ampliacin conectado


directamente con el controlador.
m+1...n(2) Canal de E/S en un mdulo de ampliacin conectado
utilizando los mdulos transmisor/receptor de TM3.
Nmero de canal z De 0 a 31 Nmero de canal de E/S del controlador lgico o el mdulo
de ampliacin. El nmero de canales disponibles depende
del modelo del controlador lgico o del tipo del mdulo de
ampliacin.
p0q(3) Canal de E/S en un cartucho insertado en el logic controller.
El nmero de canales disponibles depende del tipo de
cartucho.
(1) m es el nmero de mdulos locales configurados (mximo 7).
(2) n es el nmero de mdulos remotos configurados (mximo n+7). El nmero de posicin mximo es 14.
(3) p es el nmero del cartucho del controlador. q es el nmero de canal del cartucho.

Descripcin
En esta tabla se enumeran y describen todos los objetos de E/S que se utilizan como operandos
en instrucciones:

Tipo Direccin o Acceso de Descripcin


valor escritura(1)
Bits de entrada %Iy.z(2) No(3) Estos bits son las imgenes lgicas de los estados
elctricos de la E/S digital fsica. Se almacenan en la
Bits de salida %Qy.z(2) S memoria de datos y se actualizan entre cada exploracin
de la lgica del programa.
Palabra de %IWy.z(2) No Estos objetos de palabra contienen el valor analgico del
entrada canal correspondiente.
Palabra de %QWy.z(2) S
salida
Estado de la %IWSy.z(2) No Estos objetos de palabra contienen el estado del canal
palabra de analgico correspondiente.
entrada
Estado de la %QWSy.z(2) No
palabra de
salida
(1) Escrito mediante el programa o utilizando una tabla de animacin.
(2) y es el nmero de mdulo y z es el nmero de canal. Consulte Direccionamiento de sintaxis de E/S
(vase pgina 29) para obtener descripciones de y y z.
(3) Aunque no pueda escribir en los bits de entrada, estos se pueden forzar.

30 EIO0000001477 12/2016
Objetos de lenguaje

Ejemplos
En la tabla se presentan varios ejemplos de direccionamiento de E/S:

Objeto de E/S Descripcin


%I0.5 Nmero de canal 5 de la entrada digital del controlador (las E/S incrustadas son
el nmero de mdulo 0).
%Q3.4 Nmero de canal 4 de la salida digital del mdulo de ampliacin en la direccin
3 (E/S del mdulo de ampliacin).
%IW0.1 Entrada analgica 1 en el controlador (E/S incrustadas).
%QW2.1 Salida analgica 1 en el mdulo de ampliacin en la direccin 2 (E/S del mdulo
de ampliacin).
%IWS0.101 Estado de canal de entrada analgica del canal de entrada 1 en el primer
cartucho del logic controller.
%QWS1.1 Estado de canal de salida analgica del canal de salida 1 del mdulo de
ampliacin en la direccin 1 (E/S del mdulo de ampliacin).

EIO0000001477 12/2016 31
Objetos de lenguaje

Objetos de palabra

Introduccin
Objetos de palabra direccionados en forma de palabras de 16 bits, almacenados en la memoria
de datos y que pueden contener un valor entero desde -32.768 hasta 32.767 (excepto para el
bloque de funciones del Contador Rpido, que est entre 0 y 65.535).
Ejemplos de objetos de palabra:
Valores inmediatos
Palabras de memoria (%MWi)
Palabras constantes (%KWi)
Palabras de intercambio de E/S (%IWi, %QWi, %IWSi, %QWSi)
Palabras de sistema (%SWi)
Bloques de funciones (datos de tiempo de ejecucin o configuracin)

El rango de objetos vlidos va desde 0 hasta la mxima referencia utilizada en su aplicacin


(consulte la gua de programacin del controlador lgico).
Por ejemplo, si la referencia mxima en su aplicacin para palabras de memoria es %MW9, el
espacio asignado ser desde %MW0 hasta %MW9. En este ejemplo, el valor de %MW10 no es vlido
y no se puede acceder a l ni interna ni externamente.

Sintaxis
Utilice este formato para dirigir palabras de sistema, de memoria y constantes:

En esta tabla se describen los elementos en el formato de direccionamiento:

Grupo Elemento Descripcin


Smbolo % El smbolo de porcentaje siempre precede a una direccin interna.
Tipo de objeto M Las palabras de memoria almacenan valores mientras se ejecuta un
programa.
K Las palabras constantes almacenan valores constantes o mensajes
alfanumricos. Su contenido solo se puede escribir o modificar
utilizando SoMachine Basic.
S Las palabras de sistema proporcionan informacin de control y estado
para el controlador lgico.
Formato W Palabra de 16 bits.

32 EIO0000001477 12/2016
Objetos de lenguaje

Grupo Elemento Descripcin


Identificador de i El identificador del objeto que representa su instancia secuencial en la
instancia de objeto memoria. La cantidad mxima de objetos depende de la cantidad de
objetos configurada para los lmites de la memoria disponible. Para
verificar la cantidad mxima de memoria disponible, consulte la gua de
programacin del Logic Controller.

Formato
El contenido de las palabras o los valores se almacena en la memoria de usuario en cdigo binario
de 16 bits (complemento a dos) mediante la convencin que aparece a continuacin:

En la notacin binaria con signo, el bit 15 se asigna por convencin al signo del valor codificado:
Bit 15 establecido en 0: el contenido de la palabra es un valor positivo.
Bit 15 establecido en 1: el contenido de la palabra es un valor negativo (los valores negativos
estn expresados en lgica de complemento a dos).
Las palabras y los valores inmediatos (consulte la lista de excepciones (vase pgina 34) para
conocer los enteros sin signo) pueden introducirse o recuperarse en el formato siguiente:
Decimal
Mn.: -32.768, Mx.: 32.767 (1.579, por ejemplo)
Hexadecimal
Mn.: 16#0000, Mx.: 16#FFFF (por ejemplo, 16#A536)
Sintaxis alternativa: #A536
Las reglas de formato ASCII son las siguientes:
La funcin siempre lee primero el byte ms significativo.
Todo carcter ASCII que se encuentre fuera del intervalo ['0' - '9'] ([16#30 - 16#39]) se
considera un carcter de fin, excepto en el caso de un signo menos '-' (16#2D) cuando se
coloca como primer carcter.
En caso de desbordamiento (>32.767 o <-32.768), el bit del sistema %S18 (desborde
aritmtico o error detectado) se establece en 1 y se devuelve el valor 32.767 o -32.768.
Si el primer carcter de un operando es un carcter de "fin", se devuelve el valor 0 y el bit
%S18 se establece en 1.
Por ejemplo, "HELLO":
%MW0:="HE"
%MW1:="LL"
%MW2:="O"

EIO0000001477 12/2016 33
Objetos de lenguaje

Lista de excepciones
En esta tabla se enumera el rango de valores de los objetos que son enteros sin signo:

Objeto Valor
%SW De 0 a 65.535
%FC.V y %FC.P De 0 a 65.535
%FC.VD y %FC.PD De 0 a 4.294.967.295
%HSC.V, %HSC.P, %HSC.S0, %HSC.S1, y %HSC.C De 0 a 65.535
%HSC.DV, %HSC.PD, %HSC.S0D, %HSC.S1D, y %HSC.CD De 0 a 4.294.967.295
%HSC.T De 100 a 1.000
%PWM.P De 0 a 32.767
%PWM.R De 0 a 100
%PLS.P De 0 a 32.767
%PLS.N De 0 a 32.767
%PLS.ND De 0 a 2.147.483.647

Aparte de los objetos de la lista de excepciones, el resto de los datos tiene los rangos de valores
siguientes:
Palabras: de -32.768 a 32.767
Palabras dobles: de -2.147.483.648 a 2.147.483.647

Descripcin
En esta tabla se describen los objetos de palabra:

Palabras Descripcin Direccin o valor Acceso de escritura(1)


Valores Se trata de valores enteros expresados en - Sin
inmediatos el mismo formato que las palabras de 16
bits, lo que permite que los valores se
puedan asignar a estas palabras.
Base 10 (decimal) De -32.768 a 32.767
Base 16 (hexadecimal) De 16#0000 a
16#FFFF
Memoria Palabras "temporales" empleadas para %MWi S
almacenar valores durante la operacin en
la memoria de datos.
(1) Escrito mediante el programa o utilizando una tabla de animacin.

34 EIO0000001477 12/2016
Objetos de lenguaje

Palabras Descripcin Direccin o valor Acceso de escritura(1)


Constantes Almacenan constantes o mensajes %KWi S, durante la
alfanumricos. Su contenido se puede configuracin y en la
escribir o modificar con SoMachine Basic modalidad online
durante la configuracin y en la modalidad mediante Propiedades
online (vase SoMachine Basic, Gua de de la palabra
funcionamiento). constante
(vase SoMachine
Basic, Gua 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.
Realizan operaciones en la aplicacin
(por ejemplo, el ajuste de fechadores).
Bloques de Estas palabras corresponden a los valores %TM2.P, %Ci.P, S
funciones o parmetros actuales de los bloques de etc.
funciones.
(1) Escrito mediante el programa o utilizando una tabla de animacin.

El nmero mximo de objetos disponibles est determinado por el controlador lgico. Consulte la
gua de programacin de su controlador lgico para conocer el nmero mximo de objetos.

Ejemplo
En esta tabla se presentan diversos ejemplos de direccionamiento de objetos de palabras:

Objeto de palabra Descripcin


%MW15 Palabra de memoria nmero 15
%KW26 Palabra constante nmero 26
%SW30 Palabra de sistema nmero 30

EIO0000001477 12/2016 35
Objetos de lenguaje

Extraccin de bits de los objetos de palabra


En esta tabla se describe cmo extraer 1 de los 16 bits de los siguientes objetos de palabra:

Objeto de palabra Direccin o valor Acceso de escritura(1)


Memoria %MWi:Xk S
Sistema %SWi:Xk Depende de i
Constante %KWi:Xk No
Valor de entrada %IWy.z:Xk(2) No

Valor de salida %QWy.z:Xk(2) S

Estado de entrada %IWSy.z:Xk(2) No

Estado de salida %QWSy.z:Xk(2) S

(1) Escrito mediante el programa o utilizando una tabla de animacin.


(2) Para obtener informacin sobre objetos de palabra de E/S, consulte Direccionamiento de objetos de E/S
(vase pgina 29).
Xk Indica el nmero del bit que debe extraerse del objeto de palabra. Por ejemplo, %MW0.X3; se extraer el
bit almacenado en la tercera posicin secuencial de la palabra de memoria %MW0.

36 EIO0000001477 12/2016
Objetos de lenguaje

Objetos de coma flotante y de palabra doble

Introduccin
Un objeto de coma flotante es un nmero real; es decir, un nmero con una parte fraccionaria (por
ejemplo: 3,4E+38, 2,3 o 1,0).
Una palabra doble consta de 4 bytes almacenados en la memoria de datos y que contienen un
valor complementario a dos comprendido entre -2147483648 y +2147483647.
Las operaciones con coma flotante y palabras dobles no se pueden realizar en todos los
controladores lgicos.
Para obtener informacin sobre compatibilidad, consulte la gua de programacin de su
controlador lgico.

Formato y valor de la coma flotante


El formato de coma flotante utilizado es el de la norma IEEE STD 734-1985 (equivalente a
IEC 559). La longitud de las palabras es de 32 bits, lo que corresponde a nmeros de coma
flotante de decimal simple.
En esta tabla se representa el formato de un valor de coma flotante:

Bit 31 Bits {30...23} Bits {22...0}


Signo del exponente Exponente Significando

La precisin de la representacin es de 2 a 24. Para visualizar los nmeros de coma flotante no


es necesario mostrar ms de 6 dgitos tras la coma decimal.
NOTA: El valor 1285 se interpreta como un valor entero; para tenerse en cuenta como valor de
coma flotante, debe escribirse: 1285,0.

Rango lmite de funciones aritmticas en objetos de coma flotante


En esta tabla se describe el rango lmite de las funciones aritmticas en los objetos de coma
flotante:

Funcin aritmtica Rango lmite y operaciones no vlidas


Tipo Sintaxis NaN (No es un nmero) Infinito
Raz cuadrada de un SQRT(x) x<0 x>
operando SQRT(3.402824E+38)
es el nmero mximo que
se puede obtener
Potencia de un entero por EXPT(y, x) x < 0 e y = nmero X ^ Y > 3,402824E+38
un real (donde: fraccionario
EXPT(%MF,%MW) x^y = %MW^%MF)

EIO0000001477 12/2016 37
Objetos de lenguaje

Funcin aritmtica Rango lmite y operaciones no vlidas


Tipo Sintaxis NaN (No es un nmero) Infinito
Logaritmo de Base 10 LOG(x) x<0 Clculo posible hasta que
se obtiene el valor
mximo de x
(3,402824E+38)
Logaritmo natural LN(x) x<0 Sin valor mximo de x.
LN(3.402824E+38) es
el nmero mximo que se
puede obtener
Exponencial natural EXP(x) Sin lmite en el rango real x > 88,72283
Si x < 103,973, el
resultado es 0

Comprobacin de validez
Cuando el resultado no se encuentra dentro del rango vlido, el bit de sistema %S18 se establece
en 1.
La palabra de estado %SW17 indica la causa de un error detectado en una operacin de coma
flotante.
Diferentes bits de la palabra %SW17:

%SW17:X0 Operacin no vlida, el resultado no es un nmero (NaN)


%SW17:X1 Reservado
%SW17:X2 Divisin entre 0, el resultado no es vlido (Infinito o +Infinito)
%SW17:X3 Resultado superior a +3,402824E+38 en valor absoluto, el resultado no es vlido
(Infinito o +Infinito)
%SW17:X4 to X15 Reservado

El sistema restablece esta palabra a 0 tras un arranque en fro; tambin la puede restablecer el
programa para volver a utilizarla.

Sintaxis
Utilice este formato para dirigir objetos de coma flotante constantes y de memoria:

Utilice este formato para dirigir objetos de palabra doble constantes y de memoria:

38 EIO0000001477 12/2016
Objetos de lenguaje

En esta tabla se describen los elementos en el formato de direccionamiento:

Grupo Elemento Descripcin


Smbolo % El smbolo de porcentaje siempre precede a una direccin interna.
Tipo de objeto M Los objetos de memoria se utilizan para almacenar valores
intermedios mientras se ejecuta un programa.
K Las constantes se utilizan para almacenar valores constantes o
mensajes alfanumricos (nicamente para palabras dobles).
Formato F Objeto de coma flotante de 32 bits.
D Objeto de palabra doble de 32 bits.
Identificador de instancia i Identificador que representa una instancia (posicin secuencial) de
de objeto un objeto en la memoria. Consulte la gua de programacin de su
controlador lgico para conocer el nmero mximo de objetos.

Descripcin 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 Descripcin Direccin Acceso de escritura


Valores inmediatos Nmeros enteros (palabra doble) o - Sin
decimales (coma flotante) de formato
idntico al de los objetos de 32 bits.
Coma flotante de Objetos empleados para almacenar %MFi S
memoria valores durante la operacin en la
Palabra doble de memoria de datos. %MDi S
memoria
Valor de constante Se utiliza para almacenar constantes. %KFi S, durante la
flotante configuracin y en la
modalidad online
mediante Propiedades de
la palabra constante
(vase SoMachine Basic,
Gua de funcionamiento)
Constante doble %KDi S, durante la
configuracin y en la
modalidad online
mediante Propiedades de
la palabra constante
(vase SoMachine Basic,
Gua de funcionamiento)

NOTA: El nmero mximo de objetos est determinado por el controlador lgico; consulte la gua
de programacin de la plataforma de hardware para obtener ms informacin.

EIO0000001477 12/2016 39
Objetos de lenguaje

Ejemplo
En esta tabla se presentan algunos ejemplos del direccionamiento de objetos de palabra doble y
coma flotante:

Objeto Descripcin
%MF15 Objeto de coma flotante de memoria nmero 15
%KF26 Objeto de coma flotante constante nmero 26
%MD15 Palabra doble de memoria nmero 15
%KD26 Palabra doble constante nmero 26

Posibilidad de solapamiento entre objetos


Las palabras simples, de doble longitud y flotantes se guardan en el espacio de datos en una
misma zona de memoria. As, la palabra flotante %MFi y la palabra doble %MDi se corresponden
con las palabras de longitud simple %MWi y %MWi+1; la palabra %MWi contiene los bits menos
significativos y la palabra %MWi+1 los bits ms significativos de la palabra %MFi.
En esta tabla se muestra cmo se superponen las palabras de memoria dobles y las flotantes:

Flotante y doble Direccin impar Palabras de memoria


%MF0 / %MD0 %MW0
%MF1 / %MD1 %MW1
%MF2 / %MD2 %MW2
%MF3 / %MD3 %MW3
%MF4 / %MD4 %MW4
... %MW5
... ...
%MFi / %MDi %MWi
%MFi+1 / %MDi+1 %MWi+1

40 EIO0000001477 12/2016
Objetos de lenguaje

En esta tabla se muestra el solapamiento de constantes flotantes y dobles:

Flotante y doble Direccin impar Palabras de memoria


%KF0 / %KD0 %KW0
%KF1 / %KD1 %KW1
%KF2 / %KD2 %KW2
%KF3 / %KD3 %KW3
%KF4 / %KD4 %KW4
... %KW5
... ...
%KFi / %KDi %KWi
%KFi+1 / %KDi+1 %KWi+1

Ejemplo:
%MF0 corresponde a %MW0 y %MW1. %KF43 corresponde a %KW43 y %KW44.

EIO0000001477 12/2016 41
Objetos de lenguaje

Objetos estructurados

Introduccin
Los objetos estructurados son combinaciones de objetos adyacentes. SoMachine Basic admite
los siguientes tipos de objetos estructurados:
Cadenas de bits
Tablas de palabras
Tablas de palabras dobles
Tablas de palabras flotantes

Cadenas de bits
Las cadenas de bits son series de bits de objetos adyacentes del mismo tipo y con una longitud
definida (L). Se hace referencia a las cadenas de bits a partir de los lmites de bytes.
Ejemplo: Cadena de bits %M8:6

NOTA: %M8:6 es vlida (8 es mltiple de 8) mientras que %M10:16 no es vlida (10 no es mltiple
de 8).
Las cadenas de bits pueden utilizarse con la instruccin de asignacin (vase pgina 56).

Tipos de bits disponibles


Tipos de bits disponibles para cadenas de bits:

Tipo Direccin Acceso de escritura


Bits de entrada digital %I0.0:L o %I1.0:L (1) No

Bits de salida digital %Q0.0:L o %Q1.0:L (1) S

Bits de sistema %Si:L En funcin de i


con i mltiplo de 8
Bits de pasos Grafcet %Xi:L S (mediante el programa)
con i mltiplo de 8
Bits de memoria %Mi:L S
con i mltiplo de 8
(1) Slo se pueden leer los bits de E/S de 0 a 16 de una cadena de bits. Para controladores lgicos con 24
o 32 canales de E/S, los bits superiores a 16 no se pueden leer en una cadena de bits.
L Representa la longitud de los objetos estructurados (cadenas de bits, tabla de palabras, tabla de
palabras dobles y tabla de palabras flotantes).

El nmero de bits est determinado por el controlador lgico, consulte la gua de programacin de
la plataforma de hardware para obtener ms informacin.

42 EIO0000001477 12/2016
Objetos de lenguaje

Tablas de palabras
Una tabla de palabras es una serie de palabras adyacentes del mismo tipo y de una longitud
definida (L; el valor mximo es 255).
Ejemplo: Tabla de palabras %KW10:7

Las tablas de palabras pueden utilizarse con la instruccin de asignacin (vase pgina 56).

Tipos de palabras disponibles


Tipos de palabras disponibles para tablas de palabras:

Tipo Direccin Acceso de escritura


Palabras de memoria %MWi:L S
Palabras constantes %KWi:L No
Palabras de sistema %SWi:L En funcin de i

El nmero de palabras est determinado por el controlador lgico, consulte la gua de


programacin de la plataforma de hardware para obtener ms informacin.

Tablas de palabras dobles


Una tabla de palabras dobles es una serie de palabras adyacentes del mismo tipo y de una
longitud definida (L; el valor mximo es 255).
Ejemplo: Tabla de palabras dobles %KD10:7

Las tablas de palabras dobles pueden utilizarse con la instruccin de asignacin


(vase pgina 56).

EIO0000001477 12/2016 43
Objetos de lenguaje

Tipos de palabras dobles disponibles


Tipos de palabras disponibles para tablas de palabras dobles:

Tipo Direccin 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 valor mximo es 255).
Ejemplo: Tabla de coma flotante %KF10:7

Las tablas de coma flotante pueden utilizarse con la instruccin de asignacin (vase pgina 56).

Tipos de palabras flotantes disponibles


Tipos de palabras disponibles para tablas de palabras flotantes:

Tipo Direccin Acceso de escritura


Palabras de memoria %MFi:L S
Palabras constantes %KFi:L No

44 EIO0000001477 12/2016
Objetos de lenguaje

Objetos indexados

Introduccin
Un objeto indexado es una palabra simple o doble o un objeto de coma flotante con una direccin
de objeto indexado. Existen dos tipos de direccionamiento de objetos:
Direccionamiento directo
Direccionamiento indexado

Direccionamiento directo
La direccin directa de un objeto se establece y se define cuando se escribe un programa.
Ejemplo: %M26 es un bit de memoria con la direccin directa 26.

Direccionamiento indexado
Una direccin indexada de un objeto permite modificar la direccin del objeto mediante el aadido
de un ndice a la direccin directa de ste. El contenido del ndice se aade a la direccin directa
del objeto. El ndice lo define una palabra de memoria %MWi.
Ejemplo: %MW108[%MW2] es una palabra con una direccin compuesta por la direccin directa
108 ms el contenido de la palabra %MW2.
Si la palabra %MW2 tiene un valor de 12, escribir en %MW108[%MW2] es igual que escribir en
%MW120 (108 ms 12).

Objetos disponibles para el direccionamiento indexado


En esta tabla se describen los tipos de objetos disponibles para las direcciones indexadas:

Tipo Direccin 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 (posicin secuencial) de un objeto en
la memoria. Consulte la gua de programacin de su controlador lgico para conocer el nmero mximo
de objetos.
j Identificador de instancia de objeto del objeto de ndice cuyo contenido debe aadirse a la direccin
directa de otro objeto.

Los objetos indexados pueden utilizarse con la instruccin de asignacin (vase pgina 69) y en
instrucciones de comparacin (vase pgina 65).

EIO0000001477 12/2016 45
Objetos de lenguaje

Este tipo de direccionamiento permite explorar series de objetos del mismo tipo (como palabras
de memoria y constantes) de manera sucesiva, modificando el contenido del objeto del ndice en
el programa.

Bit de sistema de desborde de ndice %S20


El desborde de ndice se produce cuando la direccin de un objeto indexado excede los lmites de
la zona de memoria que contiene el mismo tipo de objeto. En resumen:
La direccin del objeto ms el contenido del ndice es menor que 0.
La direccin del objeto ms el contenido del ndice es mayor que la palabra de mayor tamao
a la que se hace referencia directamente en la aplicacin.
En caso de desborde de ndice, el sistema establece en 1 el bit de sistema %S20 y se asigna al
objeto un valor de ndice de 0.
NOTA: El usuario es el responsable de monitorizar cualquier desborde. El programa debe leer
%S20 para un posible procesamiento. A continuacin deber confirmar que se restablece a 0.
%S20 (estado inicial = 0):
En caso de desborde del ndice: establecido en 1 por el controlador.
Reconocimiento de desborde: establecido manualmente en 0 en el programa despus de
modificar el ndice.

ADVERTENCIA
FUNCIONAMIENTO IMPREVISTO DEL EQUIPO
Escriba instrucciones de programacin para comprobar la validez de los operandos que se
van a utilizar en operaciones matemticas.
No utilice operandos de diferentes tipos de datos en operaciones matemticas.
Monitorice siempre los bits del sistema asignados para indicar resultados matemticos no
vlidos.
El incumplimiento de estas instrucciones puede causar la muerte, lesiones serias o dao al
equipo.

46 EIO0000001477 12/2016
Objetos de lenguaje

Objetos de bloques de funciones

Introduccin
Un bloque de funciones es un objeto reutilizable que acepta uno o varios valores de entrada y
devuelve uno o varios valores de salida. A un bloque de funciones siempre se le llama a travs de
una instancia (una copia de un bloque de funciones con su propio nombre y variables dedicados).
Todas las instancias de bloque de funciones tienen un estado persistente (salidas y variables
internas) desde una llamada a la otra.
NOTA: Los bloques de funciones (%FC, %HSC, %PLS y %PWM) y la alarma de estado dirigen sus
entradas y salidas (%I0.x y %Q0.x, afectadas en la configuracin) directamente sin relacin con
el ciclo del controlador. El controlador no actualiza los bits de imgenes (%I0.x y %Q0.x). Por lo
tanto, estos bits de entrada y salida no se pueden utilizar directamente en el programa del usuario,
y en una tabla de animacin que utilice estas entradas/salidas no se pueden mostrar los estados
actuales de estas.

Ejemplo
En esta ilustracin se muestra un bloque de funciones StepCounter:

EIO0000001477 12/2016 47
Objetos de lenguaje

Objetos de bit
Los objetos de bit corresponden a las salidas del bloque de funciones. A estos bits se puede
acceder mediante las instrucciones de verificacin booleanas a travs de uno de los mtodos
siguientes:
Directamente (por ejemplo, LD E) si estn cableados al bloque en programacin
(vase pgina 155) reversible.
Especificando el tipo de bloque (por ejemplo, LD %Ci.E).

Puede accederse a las entradas en forma de instrucciones.

Objetos de palabra
Los objetos de palabra corresponden a parmetros especificados y a valores, tal como se indica
a continuacin:
Parmetros de configuracin de bloque: se puede acceder a algunos parmetros a travs del
programa (por ejemplo, parmetros de preseleccin), pero a otros no (por ejemplo, base de
tiempo).
Valores actuales: por ejemplo, %Ci.V, el valor actual de conteo.

Objetos de palabra doble


Los objetos de palabra doble aumentan la capacidad computacional del controlador lgico
mientras se ejecutan las funciones del sistema, tales como contadores rpidos (%FC), contadores
de alta velocidad (%HSC) y generadores de pulsos (%PLS, %PWM).
Para direccionar los objetos de palabra doble de 32 bits usados con bloques de funciones, solo
tiene que agregar el carcter D a la sintaxis original de los objetos de palabra estndar.
En este ejemplo se muestra cmo direccionar el valor actual de un contador rpido en formato
estndar y en formato de palabra doble:
%FCi.V es el valor actual del contador rpido en formato estndar.
%FCi.VD es el valor actual del contador rpido en formato de palabra doble.

48 EIO0000001477 12/2016
SoMachine Basic
Instrucciones
EIO0000001477 12/2016

Captulo 3
Instrucciones

Instrucciones

Contenido de este captulo


Este captulo contiene las siguientes secciones:
Seccin Apartado Pgina
3.1 Procesamiento booleano 50
3.2 Procesamiento numrico 67
3.3 Programa 85
3.4 Coma flotante 93
3.5 ASCII 102
3.6 Operadores de pila 113
3.7 Instrucciones sobre tablas de objetos 115
3.8 Instrucciones sobre los objetos de E/S 137

EIO0000001477 12/2016 49
Instrucciones

Seccin 3.1
Procesamiento booleano

Procesamiento booleano

Objeto de esta seccin


En esta seccin se ofrece una introduccin a las instrucciones de procesamiento booleano.

Contenido de esta seccin


Esta seccin contiene los siguientes apartados:
Apartado Pgina
Instrucciones booleanas 51
Operadores de carga (LD, LDN, LDR, LDF) 54
Operadores de asignacin (ST, STN, R, S) 56
Operadores AND lgicos (AND, ANDN, ANDR, ANDF) 58
Operadores OR lgicos (OR, ORN, ORR, ORF) 60
Operadores OR exclusivos (XOR, XORN, XORR, XORF) 62
Operador NOT (N) 64
Instrucciones de comparacin 65

50 EIO0000001477 12/2016
Instrucciones

Instrucciones booleanas

Introduccin
Las instrucciones booleanas pueden compararse con los elementos del lenguaje del diagrama de
contactos. Estas instrucciones se resumen en la tabla siguiente:

Elemento Operador Ejemplo de Descripcin


instruccin
Elementos de La instruccin 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.
abierto conectado a un
segmento de alimentacin de
un diagrama de contactos.
Las instrucciones lgicas AND y
OR son equivalentes a los
contactos abiertos tras el primer
contacto conectado al
segmento de alimentacin de
un diagrama de contactos.
Elementos de La instruccin de ST %Q0.0 El objeto de bit asociado toma
accin almacenamiento (ST) equivale un valor lgico del acumulador
a una bobina. de bits (resultado de lgica
anterior).

El resultado booleano de los elementos de prueba se aplica a los elementos de accin como
muestran las siguientes instrucciones:

Escaln Instruccin
0 LD %I0.0
AND %I0.1
ST %Q0.0

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 18) para obtener el diagrama de
contactos equivalente.

Comprobacin de las entradas del controlador


Pueden utilizarse instrucciones de prueba booleanas para detectar flancos ascendentes o
descendentes en las entradas del controlador. Se detecta un flanco cuando el estado de una
entrada cambia de "explorar n-1" a "explorar n". Dicho flanco permanece detectado durante la
exploracin actual.

EIO0000001477 12/2016 51
Instrucciones

Deteccin de un flanco
En esta tabla se resumen las instrucciones de deteccin de flancos y su temporizacin:

Flanco Instruccin IL Diagrama de Diagrama de tiempos


contactos
Flanco LDR %M0
ascendente

Flanco LDF %M0


descendente

Los objetos slo se actualizan al inicio del siguiente ciclo MAESTRO tras la deteccin del flanco. Si se
produce un cambio de estado en un bit de memoria (p. ej., %M0), este se indica con un retardo en la
exploracin.

NOTA: Los flancos ascendentes y descendentes slo se pueden aplicar con objetos de bit de
entrada (%I) y de bit de memoria (%M).

Deteccin de flanco ascendente


La instruccin de cargar flanco ascendente (LDR) equivale a un contacto de deteccin de flanco
ascendente. El flanco ascendente detecta el cambio del valor de entrada de 0 a 1.
Como se muestra en este ejemplo, se utiliza un contacto de deteccin de transicin positiva para
detectar un flanco ascendente:

Escaln Instruccin
0 LDR %I0.0

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 18) para obtener el diagrama de
contactos equivalente.

52 EIO0000001477 12/2016
Instrucciones

Deteccin de flanco descendente


La instruccin de cargar flanco descendente (LDF) equivale a un contacto de deteccin de flanco
descendente. El flanco descendente detecta el cambio de la entrada de control de 1 a 0.
Como se muestra en este ejemplo, se utiliza un contacto de deteccin de transicin negativa para
detectar un flanco descendente:

Escaln Instruccin
0 LDF %I0.0

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 18) para obtener el diagrama de
contactos equivalente.

EIO0000001477 12/2016 53
Instrucciones

Operadores de carga (LD, LDN, LDR, LDF)

Introduccin
Los operadores de carga LD, LDN, LDR y LDF corresponden respectivamente a los contactos
abierto, cerrado, de flanco ascendente y de flanco descendente. LDR y LDF slo se utilizan con
entradas del logic controller y palabras de memoria.

Sintaxis
En esta tabla se enumeran los tipos de operadores de carga con los equivalentes del diagrama de
contactos y los operandos permitidos:

Operadores Equivalente del diagrama Operandos permitidos


de contactos
LD 0/1
%I, %Q, %M, %S, %X, %BLK.x
%IW:Xk, %QW:Xk, %IWS:Xk, %QWS:Xk, %MW:Xk,
LDN %SW:Xk, %KW:Xk

LDR %I, %M

LDF

Ejemplos de codificacin
Ejemplos de instrucciones de carga:

Escaln Instruccin
0 LD %I0.1
ST %Q0.3
1 LDN %M0
ST %Q0.2
2 LDR %I0.1
ST %Q0.4
3 LDF %I0.3
ST %Q0.5

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 18) para obtener el diagrama de
contactos equivalente.

54 EIO0000001477 12/2016
Instrucciones

Diagrama de tiempos
En el siguiente diagrama se muestran la temporizacin (y el efecto en la salida) del cdigo de los
ejemplos de codificacin:

NOTA: La deteccin de flancos del bit de memoria (%M) se lleva a cabo entre exploraciones de
tareas maestras.

EIO0000001477 12/2016 55
Instrucciones

Operadores de asignacin (ST, STN, R, S)

Introduccin
Los operadores de asignacin ST, STN, S y R corresponden respectivamente a las bobinas directa,
inversa, Set y Reset.

Sintaxis
En esta tabla se enumeran los tipos de operadores de asignacin con los equivalentes del
diagrama de contactos y los operandos permitidos:

Operadores Equivalente del diagrama de Operandos permitidos


contactos
ST %Q, %M, %BLK.x
%QW:Xk, %MW:Xk, %S(1), %SW:Xk(1)
STN

S %Q, %M, %S, %X, %BLK.x


%QW:Xk, %MW:Xk, %SW:Xk(1)
R

(1) %S o %SW:Xk se encuentran en objetos de sistema que no son de slo lectura.

Ejemplos de codificacin
Ejemplos de instrucciones de asignacin:

Escaln Instruccin
0 LD %I0.1
ST %Q0.3
STN %Q0.2
S %Q0.4
1 LD %I0.2
R %Q0.4

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 18) para obtener el diagrama de
contactos equivalente.

56 EIO0000001477 12/2016
Instrucciones

Diagrama de tiempos
En el siguiente diagrama se muestran la temporizacin (y el efecto en la salida) del cdigo de los
ejemplos de codificacin:

EIO0000001477 12/2016 57
Instrucciones

Operadores AND lgicos (AND, ANDN, ANDR, ANDF)

Introduccin
Los operadores AND realizan una operacin lgica AND entre el operando (o su inverso, flanco
ascendente o flanco descendente) y el resultado booleano de la instruccin anterior.

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, %Q, %M, %S, %X, %BLK.x
%IW:Xk, %QW:Xk, %IWS:Xk, %QWS:Xk, %MW:Xk,
ANDN %SW:Xk, %KW:Xk

ANDR %I, %M

ANDF

Ejemplos de codificacin
Ejemplos de instrucciones AND lgicas:

Escaln Instruccin
0 LD %I0.1
AND %M1
ST %Q0.3
1 LD %M0
ANDN %I0.0
ST %Q0.2
2 LD %I0.3
ANDR %I0.4
S %Q0.4
3 LD %M3
ANDF %I0.5
S %Q0.5

58 EIO0000001477 12/2016
Instrucciones

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 18) para obtener el diagrama de
contactos equivalente.

Diagrama de tiempos
En el siguiente diagrama se muestran la temporizacin (y el efecto en la salida) del cdigo de los
ejemplos de codificacin:

EIO0000001477 12/2016 59
Instrucciones

Operadores OR lgicos (OR, ORN, ORR, ORF)

Introduccin
Los operadores OR realizan una operacin lgica OR entre el operando (o su inverso, flanco
ascendente o flanco descendente) y el resultado booleano de la instruccin anterior.

Sintaxis
En esta tabla se enumeran los tipos de operadores OR con los equivalentes del diagrama de
contactos y los operandos permitidos:

Operadores Equivalente del Operandos permitidos


diagrama de contactos
OR 0/1
%I, %Q, %M, %S, %X, %BLK.x
%IW:Xk, %QW:Xk, %IWS:Xk, %QWS:Xk, %MW:Xk,
%SW:Xk, %KW:Xk

ORN

ORR %I, %M

ORF

Ejemplos de codificacin
Ejemplos de instrucciones OR lgicas:

Escaln Instruccin
0 LD %I0.1
OR %M1
ST %Q0.0
1 LD %I0.2
ORN %M2
ST %Q0.1

60 EIO0000001477 12/2016
Instrucciones

Escaln Instruccin
2 LD %M0
ORR %I0.3
S %Q0.5
3 LDF %I0.5
ORF %I0.6
S %Q0.0

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 18) para obtener el diagrama de
contactos equivalente.

Diagrama de tiempos
En el siguiente diagrama se muestran la temporizacin (y el efecto en la salida) del cdigo de los
ejemplos de codificacin:

EIO0000001477 12/2016 61
Instrucciones

Operadores OR exclusivos (XOR, XORN, XORR, XORF)

Introduccin
El operador XOR lleva a cabo una operacin de OR exclusivo entre el operando y el resultado
booleano de la instruccin anterior.
El operador XORN lleva a cabo una operacin de OR exclusivo entre el inverso del operando y el
resultado booleano de la instruccin anterior.
El operador XORR lleva a cabo una operacin de OR exclusivo entre el flanco ascendente del
operando y el resultado booleano de la instruccin anterior.
El operador XORF lleva a cabo una operacin de OR exclusivo entre el flanco descendente del
operando y el resultado booleano de la instruccin 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, %Q, %M, %S, %X, %BLK.x
%IW:Xk, %QW:Xk, %IWS:Xk, %QWS:Xk, %MW:Xk,
%SW:Xk, %KW:Xk

XORN

XORR %I, %M

XORF

Ejemplos de codificacin
En caso de utilizar la instruccin XOR:

Escaln Instruccin
0 LD %I0.1
XOR %M1
ST %Q0.3

62 EIO0000001477 12/2016
Instrucciones

Instrucciones lgicas equivalentes del operador XOR:

Escaln Instruccin
0 LD %I0.1
ANDN %M1
OR( %M1
ANDN %I0.1
)
ST %Q0.3

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 18) para obtener el diagrama de
contactos equivalente.

Diagrama de tiempos
En el siguiente diagrama se muestran la temporizacin (y el efecto en la salida) del cdigo de los
ejemplos de codificacin:

Casos especiales
No inserte:
Contactos XOR en la primera posicin de un escaln.
Contactos XOR de forma paralela con otros elementos del diagrama de contactos (consulte el
ejemplo siguiente).
Tal como se muestra en el siguiente ejemplo, la insercin de un elemento de forma paralela con
el contacto XOR generar un error detectado de validacin:

EIO0000001477 12/2016 63
Instrucciones

Operador NOT (N)

Introduccin
El operador NOT (N) tiene un operando implcito: 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.

Ejemplos de codificacin
Ejemplo de una instruccin NOT:

Escaln Instruccin
0 LD %I0.1
N
ST %Q0.0

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 18) para obtener el diagrama de
contactos equivalente.

Diagrama de tiempos
En el siguiente diagrama se muestran la temporizacin (y el efecto en la salida) del cdigo de los
ejemplos de codificacin:

64 EIO0000001477 12/2016
Instrucciones

Instrucciones de comparacin

Introduccin
Los operadores de comparacin se utilizan para comparar 2 operandos.
En esta tabla se enumeran los tipos de operadores de comparacin:

Operador Funcin
> 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 continuacin, se describe la sintaxis de la lista de instrucciones. Puede insertar expresiones de
comparacin de la lista de instrucciones (vase pgina 24) en los escalones del diagrama de
contactos utilizando un elemento grfico de Bloque de comparacin.
Sintaxis de las instrucciones de comparacin:

Operador Sintaxis
>, >=, <, <=, =, <> LD [Op1 operador Op2]
AND [Op1 operador Op2]
OR [Op1 operador Op2]

En esta tabla se muestra la informacin de los operandos:

Tipo Op1 Op2


Palabras %MWi, %KWi, %IW, %QWi, Valor inmediato, %MWi, %KWi, %IW,
%SWi, %BLK.x %QW, %IWSi, %QWSi, %SWi, %BLK.x,
%MWi[%MWi], %KWi[%MWi]
Palabras dobles %MDi, %KDi Valor inmediato, %MDi, %KDi,
%MDi[%MWi], %KD[%MWi]
Palabras de coma %MFi, %KFi Valor de coma flotante inmediato, %MFi,
flotante %KFi, %MFi[%MWi], %KFi[%MWi]

NOTA: Las instrucciones de comparacin pueden utilizarse entre parntesis.

EIO0000001477 12/2016 65
Instrucciones

Ejemplos de codificacin
La comparacin se ejecuta entre corchetes siguiendo las instrucciones LDAND y OR. El resultado
es 1 cuando la comparacin solicitada es verdadera.
Ejemplos de instrucciones de comparacin:

Escaln Instruccin
0 LD %I0.2
AND [%MW10>100]
ST %Q0.3
1 LD %M0
AND [%MW20<%KW35]
ST %Q0.4
2 LD %I0.2
OR [%MF30>=%MF40]
ST %Q0.5

Ejemplo de utilizacin de una instruccin de comparacin entre parntesis:

Escaln Instruccin
0 LD %M0
AND( [%MF20>10.0]
OR %I0.0
)
ST %Q0.1

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 18) para obtener el diagrama de
contactos equivalente.

66 EIO0000001477 12/2016
Instrucciones

Seccin 3.2
Procesamiento numrico

Procesamiento numrico

Objeto de esta seccin


En esta seccin se ofrece una introduccin al procesamiento numrico.

Contenido de esta seccin


Esta seccin contiene los siguientes apartados:
Apartado Pgina
Introduccin a operaciones numricas 68
Instrucciones de asignacin 69
Asignacin de cadenas de bits 70
Asignacin de palabras 72
Operadores aritmticos en enteros 74
Instrucciones lgicas 78
Instrucciones de desplazamiento 80
Instrucciones de conversin de BCD/binario 82
Instrucciones de conversin de palabras simples y dobles 84

EIO0000001477 12/2016 67
Instrucciones

Introduccin a operaciones numricas

Presentacin
Normalmente, las instrucciones numricas se aplican a palabras de 16 bits y a palabras dobles de
32 bits. Se escriben entre corchetes. Si el resultado de la operacin lgica anterior era verdadero
(acumulador booleano = 1), se ejecuta la instruccin numrica. Si el resultado de la operacin
lgica anterior era falso (acumulador booleano = 0), la instruccin numrica no se ejecuta y el
operando permanece intacto.

68 EIO0000001477 12/2016
Instrucciones

Instrucciones de asignacin

Introduccin
Las instrucciones de asignacin se utilizan para cargar el Op2 (operando 2) en el Op1 (operando
1).

Sintaxis
A continuacin, se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de
lista de instrucciones e instrucciones de asignacin (vase pgina 21) en los escalones del
diagrama de contactos utilizando un elemento grfico de Bloque de operacin.
Sintaxis de las instrucciones de asignacin:

Operador Sintaxis
:= [Op1 := Op2]
Op1 toma el valor de Op2

Pueden realizarse operaciones de asignacin en:


Cadenas de bits
Palabras
Palabras dobles
Palabras flotantes
Tablas de palabras
Tablas de palabras dobles
Tablas de palabras flotantes
Objetos de salida de tren de pulsos

EIO0000001477 12/2016 69
Instrucciones

Asignacin de cadenas de bits

Introduccin
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 continuacin, se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de
lista de instrucciones e instrucciones de asignacin (vase pgina 21) en los escalones del
diagrama de contactos utilizando un elemento grfico de Bloque de operacin.
Sintaxis de las asignaciones de cadenas de bits:

Operador Sintaxis
:= [Op1 := Op2]
Op1 toma el valor de Op2

En la tabla siguiente se ofrece informacin detallada de los operandos:

Tipo Op1 Op2


Palabra, palabra %MWi,%QWi, %SWi Valor inmediato,
doble %MWi[%MWi], %MDi, %MDi[%MWi] %MWi, %KWi, %IW, %QWi, %IWSi,
%Mi:L, %Qi:L, %Si:L, %Xi:L %QWSi, %SWi,%BLK.x, %MWi[%MWi],
%TMi.P, %Ci.P, %Ri.I, %Ri.O, %KWi[%MWi], %MDi[%MWi],
%FCi.P, %PLSi.P, %PWMi.P %KDi[%MWi], %Mi:L,%Qi:L,
%Ci.PD, %FCi.PD %Si:L, %Xi:L, %Ii:L
%TMi.P, %Ci.P, %Ri.I, %Ri.O,
%FCi.P, %PLSi.P, %PWMi.P
%Ci.PD, %FCi.PD

NOTA: La abreviatura %BLK.x (por ejemplo, %C0.P) se utiliza para describir cualquier palabra de
bloque de funciones.

70 EIO0000001477 12/2016
Instrucciones

Estructura
Ejemplos de asignaciones de cadenas de bits:

Escaln Instruccin
0 LD 1
[%Q0.0:8:=%M64:8]
1 LD %I0.2
[%MW100:=%M0:16]
2 LDR %I0.3
[%MW104:16:=%KW0]

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 18) para obtener el diagrama de
contactos equivalente.
Normas de uso:
Para asignacin 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 asignacin de palabra a cadena de bits: los bits de palabra se transfieren desde la
derecha (bit de palabra 0 al primer bit de la cadena).

EIO0000001477 12/2016 71
Instrucciones

Asignacin de palabras

Introduccin
Las operaciones de asignacin se pueden ejecutar en las palabras y en las palabras dobles
siguientes:
Palabra (indexada) a palabra (2, por ejemplo) (indexada o no)
Palabra doble (indexada) a palabra doble (indexada o no)
Valor entero inmediato a palabra (Ejemplo 3) o palabra doble (indexada o no)
Cadena de bits a palabra o palabra doble
Coma flotante (indexada o no) a coma flotante (indexada o no)
Palabra o palabra doble a cadena de bits
Valor de coma flotante inmediato a coma flotante (indexado o no)

Sintaxis
A continuacin, se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de
lista de instrucciones e instrucciones de asignacin (vase pgina 21) en los escalones del
diagrama de contactos utilizando un elemento grfico de Bloque de operacin.
Sintaxis de asignaciones de palabras:

Operador Sintaxis
:= [Op1 := Op2]
Op1 toma el valor de Op2

En esta tabla se muestra la informacin de los operandos:

Tipo Op1 Op2


Palabra, palabra %BLK.x, %MWi, %QWi, %SWi Valor inmediato,
doble, cadena de bits %MWi[MWi], %MDi, %MWi, %KWi, %IW, %QWi, %IWSi, QWSi,
%MDi[%MWj], %Mi:L, %Qi:L, %SWi, %MWi[MWi], %KWi[MWi], %MDi,
%Si:L, %Xi:L %MDi[%MWj], %KDi, %KDi[MWj], %Mi:L,
%Qi:L, %Si:L, %Xi:L, %Ii:L
Coma flotante %MFi, %MFi[%MWj] Valor de coma flotante inmediato,
%MFi, %MFi[%MWj], %KFi, %KFi[%MWj]

NOTA: La abreviatura %BLK.x (por ejemplo, R3.I) se utiliza para describir cualquier palabra del
bloque de funciones. Para las cadenas de bits %Mi:L, %Si:L y %Xi:L, la direccin de base del
primer bit de la cadena debe ser un mltiplo de 8 (0, 8, 16, ..., 96, ...).

72 EIO0000001477 12/2016
Instrucciones

Estructura
Ejemplos de asignaciones de palabras:

Escaln Instruccin
0 LD 1
[%SW112:=%MW100]
1 LD %I0.2
[%MW0[%MW10]:=%KW0[%MW20]]
2 LD %I0.3
[%MW10:=100]

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 18) para obtener el diagrama de
contactos equivalente.

EIO0000001477 12/2016 73
Instrucciones

Operadores aritmticos en enteros

Introduccin
Los operadores aritmticos se utilizan para realizar operaciones aritmticas entre 2 operandos
enteros o en 1 operando entero.
En esta tabla se enumeran los tipos de operadores aritmticos:

Operador Funcin
+ Sumar dos operandos
- Restar dos operandos
* Multiplicar dos operandos
/ Dividir dos operandos
REM Resto de la divisin de los dos operandos
SQRT Raz cuadrada de un operando
INC Aumentar un operando
DEC Disminuir un operando
ABS Valor absoluto de un operando

Sintaxis
A continuacin, se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de
lista de instrucciones e instrucciones de asignacin (vase pgina 21) en los escalones del
diagrama de contactos utilizando un elemento grfico de Bloque de operacin.
Sintaxis de las instrucciones aritmticas:

Operador Sintaxis
+,-,*,/,REM [Op1: = Op2 operador Op3]
INC, DEC [operador Op1]
SQRT (1) [Op1: = SQRT(Op2)]
ABS (1) [Op1: = ABS(Op2)]

74 EIO0000001477 12/2016
Instrucciones

En esta tabla se muestra la informacin de los operandos:

Tipo Op1 Op2 y Op3(1)


Palabras %MWi, %QWi, %SWi, %BLK.x(2) Valor inmediato, %MWi, %KWi, %IWi,
%QWi, %IWSi, %QWSi, %SWi, %BLK.x(2)
Palabras dobles %MDi, %BLK.x Immediate value, %MDi, %KDi,
%BLK.x (Valor inmediato, %MDi, %KDi,
%BLK.x) (2)
(1) Con este operador, Op2 no puede ser un valor inmediato. La funcin ABS slo se puede emplear con
palabras dobles (%MD y %KD) y comas flotantes (%MF y %KF). Por lo tanto, OP1 y OP2 deben ser palabras
dobles o comas flotantes.
(2) %BLK.x representa todos objetos de bloques.

Estructura
Ejemplos de instrucciones aritmticas:

Escaln Instruccin
0 LD %M0
[%MW0:=%MW10+10]
1 LD %I0.2
[%MW0:=SQRT(%MW10)]
2 LDR %I0.3
[%MW10:=32767]

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 18) para obtener el diagrama de
contactos equivalente.

Casos especiales
Suma
Desborde durante la operacin con palabras
Si el resultado supera la capacidad de la palabra de resultados, el bit %S18 (desborde) se
establece en 1 y el resultado no es significativo (consulte el escaln 1 del ejemplo de aplicacin
(vase pgina 77)). El programa de usuario gestiona el bit %S18.
NOTA: Para las palabras dobles, los lmites son -2.147.483.648 y 2.147.483.647.
Multiplicacin
Desborde durante la operacin
Si el resultado supera la capacidad de la palabra resultado, el bit %S18 (desborde) se establece
en 1 y el resultado no es significativo.

EIO0000001477 12/2016 75
Instrucciones

Divisin/resto
Divisin entre 0
Si el divisor es 0, la divisin es imposible y el bit del sistema %S18 se establece en 1. El
resultado es incorrecto.
Desborde durante la operacin
Si el cociente de la divisin supera la capacidad de la palabra resultado, el bit %S18 se
establece en 1.
Extraccin de la raz cuadrada
Desborde durante la operacin
La extraccin de la raz cuadrada slo se realiza en valores positivos. De este modo, el
resultado siempre es positivo. Si el operando de la raz cuadrada es negativo, el bit de sistema
%S18 se establece en 1 y el resultado es incorrecto.
Algunos de los errores matemticos detectados podran tener un efecto importante en la ejecucin
de su aplicacin. Es responsabilidad del usuario monitorizar estos posibles errores y programar
instrucciones para controlar adecuadamente la ejecucin de su aplicacin en caso de que se
produzcan uno o ms de estos errores. Las consecuencias de cualquiera de estos errores
detectados dependen de la configuracin, el equipo utilizado y las instrucciones del programa que
se hayan ejecutado antes y despus de la deteccin de los posibles errores.

ADVERTENCIA
FUNCIONAMIENTO IMPREVISTO DEL EQUIPO
Escriba instrucciones de programacin para comprobar la validez de los operandos que se
van a utilizar en operaciones matemticas.
No utilice operandos de diferentes tipos de datos en operaciones matemticas.
Monitorice siempre los bits del sistema asignados para indicar resultados matemticos no
vlidos.
El incumplimiento de estas instrucciones puede causar la muerte, lesiones serias o dao al
equipo.

NOTA: El programa de aplicacin es responsable de la gestin de los bits de sistema %S17 y


%S18. El controlador los establece en 1 y el programa debe restablecerlos para que puedan volver
a utilizarse (para ver un ejemplo, consulte la pgina anterior).

76 EIO0000001477 12/2016
Instrucciones

Ejemplo de aplicacin
Desborde durante la suma:

Escaln Instruccin
0 LD %M0
[%MW0:=%MW1+%MW2]
1 LDN %S18
[%MW10:=%MW0]
2 LD %S18
[%MW10 :=32767]

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 18) para obtener el diagrama de
contactos equivalente.
Si %MW1 = 23.241 y %MW2 = 21.853, el resultado sera (45.094), que no puede expresarse en una
palabra de 16 bits con signo. Por lo tanto, el bit %S18 se establece en 1 y el valor de %MW0 (-20.442)
es incorrecto. En este ejemplo, cuando el resultado es superior a 32.767, su valor se fija en
32.767.

EIO0000001477 12/2016 77
Instrucciones

Instrucciones lgicas

Introduccin
Los operadores lgicos pueden utilizarse para realizar operaciones lgicas entre 2 operandos de
palabra o, en el caso del NOT lgico, en 1 operando de palabra.
En esta tabla se enumeran los diferentes tipos de instrucciones lgicas:

Instruccin Funcin
AND AND (mbito de bit) entre dos operandos
OR OR lgico (mbito de bit) entre dos operandos
XOR OR exclusivo (mbito de bit) entre dos operandos
NOT Complemento lgico (mbito de bit) de un operando

Sintaxis
A continuacin, se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de
lista de instrucciones e instrucciones de asignacin (vase pgina 21) en los escalones del
diagrama de contactos utilizando un elemento grfico de Bloque de operacin.
Sintaxis de las instrucciones lgicas:

Operador Sintaxis Op1 Op2 y Op3


AND, OR, XOR [Op1: = Op2 operador %MWi, %QWi, %SWi, Valor inmediato (1),
Op3] %BLK.x %MWi, %KWi, %IWi,
%QWi, %IWSi, %QWSi,
NOT [Op1:=NOT(Op2)]
%SWi, %BLK.x
(1) Con NOT, Op2 no puede ser un valor inmediato.

Estructura
Ejemplos de instrucciones lgicas:

Escaln Instruccin
0 LD %M0
[%MW0:=%MW10 AND 16#00FF]
1 LD 1
[%MW0:=%KW5 OR %MW10]
2 LD %I0.3
[%MW102:=NOT(%MW100)]

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 18) para obtener el diagrama de
contactos equivalente.

78 EIO0000001477 12/2016
Instrucciones

Ejemplo de aplicacin
Instruccin AND lgica:
[%MW15:=%MW32 AND %MW12]
Cuando %MW32 = 0001 1011 (binario) (27, decimal) y %MW12 = 0011 0110 (binario) (54, decimal),
el resultado ser %MW15 = 0001 0010 (binario) (18, decimal).

EIO0000001477 12/2016 79
Instrucciones

Instrucciones de desplazamiento

Introduccin
Las instrucciones de desplazamiento mueven los bits de un operando un determinado nmero de
posiciones hacia la izquierda o hacia la derecha.
En esta tabla se enumeran los tipos de instrucciones de desplazamiento:

Instruccin Funcin
Desplazamiento lgico
SHL(op2,n) Desplazamiento lgico de n
posiciones hacia la izquierda.
SHR(op2,n) Desplazamiento lgico de n
posiciones hacia la derecha.

Desplazamiento circular
ROL(op2,n) Desplazamiento circular de n
posiciones hacia la izquierda.
ROR(op2,n) Desplazamiento circular de n
posiciones hacia la derecha.

n Valor inmediato entero para:


palabra: 1-16, ambos incluidos
palabra doble: 1-32, ambos incluidos

NOTA: El bit de sistema %S17 indica el valor del ltimo bit expulsado.

80 EIO0000001477 12/2016
Instrucciones

Sintaxis
A continuacin, se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de
lista de instrucciones e instrucciones de asignacin (vase pgina 21) en los escalones del
diagrama de contactos utilizando un elemento grfico de Bloque de operacin.
Sintaxis de las instrucciones de desplazamiento:

Operador Sintaxis
SHL, SHR [Op1: = operador (Op2,n)]
ROL, ROR
n Valor inmediato entero para:
palabra: 1-16, ambos incluidos
palabra doble: 1-32, ambos incluidos

En esta tabla se muestra la informacin de los operandos:

Tipos Op1 Op2


Palabras %MWi, %QWi, %SWi %MWi, %KWi, %IWi, %QWi, %IWSi,
%BLK.x %QWSi, %SWi, %BLK.x
Palabras dobles %MDi %MDi, %KDi
%BLK.x %BLK.x

Estructura
Ejemplos de instrucciones de desplazamiento:

Escaln Instruccin
0 LDR %I0.1
[%MW0:=SHL(%MW10,5)]
1 LDR %I0.2
[%MW10:=ROR(%KW9,8)]

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 18) para obtener el diagrama de
contactos equivalente.

EIO0000001477 12/2016 81
Instrucciones

Instrucciones de conversin de BCD/binario

Introduccin
Las instrucciones de conversin realizan conversiones entre distintas representaciones de
nmeros.
En esta tabla se enumeran los tipos de instrucciones de conversin de BCD/binario:

Instruccin Funcin
BTI Conversin de BCD a binario
ITB Conversin de binario a BCD

Revisin del cdigo BCD


El decimal codificado en binario (BCD) representa un dgito decimal (entre 0 y 9) codificado con
cuatro bits binarios. Un objeto de palabra de 16 bits puede contener un nmero de cuatro dgitos
(entre 0000 y 9999) y, por consiguiente, un objeto de palabra doble de 32 bits podr contener uno
de ocho cifras.
Durante una conversin, el bit de sistema %S18 se establece en 1 si el valor no es BCD. Este bit
se debe verificar y restablecer a 0 mediante el programa.
Representacin BCD de nmeros 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.
La palabra%MW12 expresa el valor decimal 2450 que corresponde al valor binario: 0000 1001
1001 0010.
La palabra %MW5 se convierte en la palabra %MW12 mediante la instruccin BTI.
La palabra %MW12 se convierte en la palabra %MW5 mediante la instruccin ITB.

82 EIO0000001477 12/2016
Instrucciones

Sintaxis
A continuacin, se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de
lista de instrucciones e instrucciones de asignacin (vase pgina 21) en los escalones del
diagrama de contactos utilizando un elemento grfico de Bloque de operacin.
Sintaxis de las instrucciones de conversin BCD/binario:

Operador Sintaxis
BTI, ITB [Op1 := operador (Op2)]

En esta tabla se muestra la informacin de los operandos:

Tipos Op1 Op2


Palabras %MWi, %QWi, %SWi %MWi, %KWi, %IWi, %QWi, %IWSi,
%BLK.x %QWSi, %SWi, %BLK.x
Palabra doble %MDi %MDi, %KDi
%BLK.x %BLK.x

Estructura
Ejemplos de instrucciones de conversin BCD/binario:

Escaln Instruccin
0 LD %M0
[%MW0:=BTI(%MW10)]
1 LD %I0.2
[%MW10:=ITB(%KW9)]

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 18) para obtener el diagrama de
contactos equivalente.

Ejemplo de aplicacin
La instruccin BTI se utiliza para procesar un valor de consigna en las entradas del controlador a
travs de las ruedas codificadoras en BCD.
La instruccin ITB se utiliza para mostrar los valores numricos (por ejemplo, el resultado de un
clculo, el valor actual de un bloque de funciones) en monitores de operacin con codificacin
BCD.

EIO0000001477 12/2016 83
Instrucciones

Instrucciones de conversin de palabras simples y dobles

Introduccin
En esta tabla se describen las instrucciones utilizadas para realizar conversiones entre palabras
simples y dobles:

Instruccin Funcin
LW Extrae el byte menos significativo de una palabra doble a una palabra.
HW Extrae el byte ms significativo de una palabra doble a una palabra.
CONCATW Concatena dos palabras para formar una palabra doble.
DWORD Convierte una palabra de 16 bits en una palabra doble de 32 bits.

Sintaxis
A continuacin, se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de
lista de instrucciones e instrucciones de asignacin (vase pgina 21) en los escalones del
diagrama de contactos utilizando un elemento grfico de Bloque de operacin.
Sintaxis de las instrucciones de conversin de palabras simples y dobles:

Operador Sintaxis Op1 Op2 Op3


LW, HW Op1 = operador (Op2) %MWi %MDi, %KDi, [-]
%BLK.x
CONCATW Op1 = operador (Op2, Op3)) %MDi, %KDi, %MWi, %KWi, %MWi, %KWi,
%BLK.x valor inmediato valor inmediato
DWORD Op1 = operador (Op2) %MDi, %KDi, %MWi, %KWi [-]
%BLK.x

Estructura
Ejemplos de instrucciones de conversin de palabras simples y dobles:

Escaln Instruccin
0 LD %M0
[%MW0:=HW(%MD10)]
1 LD %I0.2
[%MD10:=DWORD(%KW9)]
2 LD %I0.3
[%MD11:=CONCATW(%MW10,%MW5)]

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 18) para obtener el diagrama de
contactos equivalente.

84 EIO0000001477 12/2016
Instrucciones

Seccin 3.3
Programa

Programa

Objeto de esta seccin


En esta seccin se ofrece una introduccin a las instrucciones del programa.

Contenido de esta seccin


Esta seccin contiene los siguientes apartados:
Apartado Pgina
Instrucciones END 86
Instrucciones NOP 88
Instrucciones de salto 89
Instrucciones de subrutina 91

EIO0000001477 12/2016 85
Instrucciones

Instrucciones END

Introduccin
Las instrucciones END definen el final de la ejecucin de una exploracin del programa.

END, ENDC y ENDCN


Hay disponibles 4 instrucciones END diferentes:
END: fin incondicional del programa
ENDC: fin de programa si el resultado booleano de la instruccin de prueba precedente es 1
ENDCN: fin de programa si el resultado booleano de la instruccin de prueba precedente es 0
ENDT: final del escaln de transicin en un programa Grafcet (SFC) (slo vlido en un escaln
de transicin)
De forma predeterminada (modalidad normal), cuando se activa el fin de un programa, las salidas
se actualizan y se inicia la siguiente exploracin.
Si la exploracin es peridica, cuando se alcanza el final del periodo se actualizan las salidas y se
inicia la exploracin siguiente.

Ejemplos
Ejemplo de una instruccin END incondicional:

Escaln Instruccin
0 LD %M1
ST %Q0.1
1 LD %M2
ST %Q0.2
2 END

Ejemplo de una instruccin END condicional:

Escaln Instruccin
0 LD %I0.0
ST %Q0.0
1 LD %I0.1
ST %Q0.1
2 LD %I0.2
ENDC
3 LD %I0.3
ST %Q0.2
4 END

86 EIO0000001477 12/2016
Instrucciones

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 18) para obtener el diagrama de
contactos equivalente.

EIO0000001477 12/2016 87
Instrucciones

Instrucciones NOP

Introduccin
Las instrucciones NOP no realizan ninguna operacin. Utilcelas para "reservar" lneas en un
programa para que pueda insertar instrucciones ms adelante sin modificar los nmeros de lnea.

88 EIO0000001477 12/2016
Instrucciones

Instrucciones de salto

Introduccin
Las instrucciones de salto provocan que la ejecucin de un programa se interrumpa
inmediatamente y que contine a partir de la lnea despus de la lnea del programa que contiene
la etiqueta %Li (i = nmero mximo de mdulos).

JMP, JMPC y JMPCN


Existen tres instrucciones de salto diferentes disponibles:
JMP: salto de programa incondicional.
JMPC: salto de programa si el resultado booleano de la lgica anterior es 1.
JMPCN: salto de programa si el resultado booleano de la lgica anterior es 0.

Ejemplos
Ejemplos de instrucciones de salto:

Escaln Instruccin
0 LD %M15
JMPC %L8
1 LD [%MW24<%MW12]
ST %Q0.3
JMPC %L12
2 %L8:
LD %M12
AND %M13
ST %M12
JMPC %L12
3 LD %M11
S %Q0.0
4 %L12:
LD %I0.0
ST %Q0.4

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 18) para obtener el diagrama de
contactos equivalente.

EIO0000001477 12/2016 89
Instrucciones

Directrices
Las instrucciones de salto no estn permitidas entre parntesis y no deben situarse entre las
instrucciones AND, OR y una instruccin de cierre de parntesis ")".
La etiqueta solo puede situarse antes de una instruccin LD, LDN, LDR, LDF o BLK.
El nmero de etiqueta de la etiqueta %Li debe definirse solo una vez en un programa.
El salto de programa se realiza hacia una lnea de programacin ubicada en sentido
ascendente o descendente. Cuando el salto est ubicado en sentido ascendente, debe
prestarse especial atencin al tiempo de exploracin del programa. Un tiempo de exploracin
prolongado puede provocar la activacin del temporizador de watchdog.

90 EIO0000001477 12/2016
Instrucciones

Instrucciones de subrutina

Introduccin
Las instrucciones de subrutina hacen que un programa lleve a cabo una subrutina y luego vuelva
al programa principal en el punto desde el que se llam a la subrutina.

Procedimiento
Se crea una subrutina en una POU disponible. Consulte POU disponibles (vase SoMachine
Basic, Gua de funcionamiento) para obtener informacin sobre cmo crear una POU disponible
y una subrutina, y cmo definir el nmero de subrutina. Consulte tambin Gestin de POU para
obtener ms informacin sobre cmo gestionar POU con tareas y escalones.
Llamada de una subrutina en tres pasos:
1 La instruccin SRn llama a la subrutina a la que hace referencia un SRn de POU disponible si
el resultado de la instruccin booleana anterior es 1.
2 Se hace referencia a la subrutina mediante una POU disponible SRn, donde n es el nmero de
subrutinas.
3 La instruccin de subrutina debe escribirse independientemente de la POU disponible del
programa principal.
Para obtener ms informacin sobre las subrutinas, consulte Creacin de una tarea peridica
(vase SoMachine Basic, Gua de funcionamiento).

Ejemplos
Ejemplo de instrucciones que contienen una subrutina:

Escaln Instruccin
0 LD %M15
AND %M5
ST %Q0.0
1 LD [%MW24>%MW12]
SR1
2 LD %I0.4
AND %M13
ST %Q0.1
END

Ejemplo de instruccin de subrutina (SR1):

Escaln Instruccin
0 (SR1) LD %I0.0
ST %Q0.0

EIO0000001477 12/2016 91
Instrucciones

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 18) para obtener el diagrama de
contactos equivalente.

Directrices
Una subrutina no debe llamar a otra subrutina. Si se intenta llamar a una subrutina de una POU
disponible, se detectar un error del compilador.
Las instrucciones de subrutina no estn permitidas entre parntesis y no deben situarse entre
las instrucciones AND, OR y una instruccin de cierre de parntesis ")".
Cuando una instruccin de asignacin va seguida directamente de una llamada a una subrutina
en IL, se debe tener cuidado. Esto se debe a que es posible que la subrutina modifique el
contenido del acumulador booleano. Por lo tanto, es posible que tenga un valor de retorno
diferente al que tena antes de la llamada.

92 EIO0000001477 12/2016
Instrucciones

Seccin 3.4
Coma flotante

Coma flotante

Objeto de esta seccin


En esta seccin se describen las instrucciones avanzadas de coma flotante.

Contenido de esta seccin


Esta seccin contiene los siguientes apartados:
Apartado Pgina
Instrucciones aritmticas en objetos de coma flotante 94
Instrucciones trigonomtricas 97
Instrucciones de conversin de ngulos 99
Instrucciones de conversin de entero/coma flotante 100

EIO0000001477 12/2016 93
Instrucciones

Instrucciones aritmticas en objetos de coma flotante

Introduccin
Estas instrucciones permiten efectuar una operacin aritmtica entre 2 operandos de coma
flotante o en 1 operando de coma flotante:

Instruccin Objetivo
+ Suma de dos operandos
- Resta de dos operandos
* Multiplicacin de dos operandos
/ Divisin de dos operandos
LOG Logaritmo de Base 10
LN Logaritmo natural
SQRT Raz 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 continuacin, se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de
lista de instrucciones e instrucciones de asignacin (vase pgina 21) en los escalones del
diagrama de contactos utilizando un elemento grfico de Bloque de operacin.
Operadores y sintaxis de las instrucciones aritmticas 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 aritmticas 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 funcin 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 funcin con un %MWi como Op1.

Estructura
Ejemplo de una instruccin aritmtica:

Escaln Instruccin
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 (vase pgina 18) para obtener el diagrama de
contactos equivalente.

Reglas de utilizacin
Las operaciones con valores de coma flotante y enteros no se pueden mezclar directamente.
Las operaciones de conversin (vase pgina 99) llevan a cabo la conversin a uno de los
formatos.
El bit de sistema %S18 se gestiona del mismo modo que las operaciones con enteros
(vase pgina 99); la palabra %SW17 indica la causa del error detectado.
Cuando el operando de la funcin es un nmero no vlido (por ejemplo, logaritmo de un nmero
negativo), produce un resultado indeterminado o infinito y cambia el bit de %S18 a 1. La palabra
%SW17 seala la causa del error detectado.
NOTA: En la instruccin TRUNC, el bit de sistema %S17 no se ve afectado.

EIO0000001477 12/2016 95
Instrucciones

Ejemplos de aplicacin de la instruccin TRUNC con %MDi


En la siguiente tabla se muestran ejemplos de la instruccin 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 mximo) (1)
%S18 se establece en 1
TRUNC(-94.56E+13) - 2 147 483 648 (palabra doble con signo mnimo) (1)
%S18 se establece en 1
(1) Este ejemplo se aplica a la instruccin TRUNC cuando se utiliza con %MDi. (Cuando se utiliza con %MFi,
la instruccin TRUNC no tiene desborde y, por lo tanto, carece de lmites mximo/mnimo).

96 EIO0000001477 12/2016
Instrucciones

Instrucciones trigonomtricas

Introduccin
Estas instrucciones permiten realizar operaciones trigonomtricas:

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 continuacin, se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de
lista de instrucciones e instrucciones de asignacin (vase pgina 21) en los escalones del
diagrama de contactos utilizando un elemento grfico de Bloque de operacin.
Operadores, operandos y sintaxis de las instrucciones de operaciones trigonomtricas

Operadores Sintaxis Op1 Op2


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

Estructura
Ejemplo de instrucciones Trigonometric:

Escaln Instruccin
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 (vase pgina 18) para obtener el diagrama de
contactos equivalente.

EIO0000001477 12/2016 97
Instrucciones

Reglas de utilizacin
Cuando el operando de la funcin es un nmero no vlido (por ejemplo, el arco coseno de un
nmero 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 parmetro un ngulo entre y ,
pero la precisin decrece progresivamente cuando se trata de ngulos que se encuentran fuera
del periodo comprendido entre y , debido a que el mdulo provoca una
imprecisin en el parmetro antes de realizar cualquier operacin.

98 EIO0000001477 12/2016
Instrucciones

Instrucciones de conversin de ngulos

Introduccin
Estas instrucciones permiten llevar a cabo operaciones de conversin:

DEG_TO_RAD Conversin de grados a radianes, el resultado es el valor del ngulo comprendido


entre 0 y
RAD_TO_DEG Conversin de un ngulo expresado en radianes, el resultado es el valor del ngulo
comprendido entre 0 y 360 grados

Sintaxis
A continuacin, se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de
lista de instrucciones e instrucciones de asignacin (vase pgina 21) en los escalones del
diagrama de contactos utilizando un elemento grfico de Bloque de operacin.
Operadores, operandos y sintaxis de las instrucciones de conversin

Operadores Sintaxis Op1 Op2


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

Estructura
Ejemplo de instrucciones de conversin:

Escaln Instruccin
0 LD %M0
[%MF0:=DEG_TO_RAD(%MF10)]
1 LD %M2
[%MF2:=RAD_TO_DEG(%MF20)]

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 18) para obtener el diagrama de
contactos equivalente.

Reglas de utilizacin
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 lmites, el resultado mostrado ser +1.#QNAN, los
bits %S18 y %SW17:X0 se establecen en 1.

EIO0000001477 12/2016 99
Instrucciones

Instrucciones de conversin de entero/coma flotante

Introduccin
Existen cuatro instrucciones de conversin:

INT_TO_REAL Conversin de una palabra entera a flotante


DINT_TO_REAL Conversin de una palabra doble (entera) a flotante
REAL_TO_INT Conversin de una palabra flotante a entera (el resultado es el valor algebraico ms
cercano)
REAL_TO_DINT Conversin de una palabra flotante a entera doble (el resultado es el valor algebraico
ms cercano)

Sintaxis
A continuacin, se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de
lista de instrucciones e instrucciones de asignacin (vase pgina 21) en los escalones del
diagrama de contactos utilizando un elemento grfico de Bloque de operacin.
Operadores y sintaxis (conversin de una palabra entera a flotante):

Operadores Sintaxis
INT_TO_REAL Op1=INT_TO_REAL(Op2)

Operandos (conversin de una palabra entera a flotante):

Op1 Op2
%MFi %MWi,%KWi

Ejemplo: Conversin de una palabra entera a flotante: 147 a 1,47e+02


Operadores y sintaxis (conversin de una palabra doble entera a flotante):

Operadores Sintaxis
DINT_TO_REAL Op1=DINT_TO_REAL(Op2)

Operandos (conversin de una palabra doble entera a flotante):

Op1 Op2
%MFi %MDi,%KDi

Ejemplo: Conversin de una palabra doble entera a flotante: 68.905.000 a 6,8905e+07

100 EIO0000001477 12/2016


Instrucciones

Operadores y sintaxis (conversin de flotante a palabra entera o palabra doble entera):

Operadores Sintaxis
REAL_TO_INT Op1=operador (Op2)
REAL_TO_DINT

Operadores (conversin de flotante a palabra entera o palabra doble entera):

Tipo Op1 Op2


Palabras %MWi %MFi, %KFi
Palabras dobles %MDi %MFi, %KFi

Ejemplo:
Conversin de flotante a palabra entera: 5.978,6 a 5.979
Conversin de flotante a palabra doble entera: -1.235.978,6 a -1.235.979

NOTA: Si durante una conversin de real a entero (o de real a palabra doble entera), el valor
flotante est fuera de los lmites de la palabra (o palabra doble), el bit %S18 se establece en 1.

Estructura
Ejemplo de instruccin de conversin de entero/flotante:

Escaln Instruccin
0 LD 1
[%MF0:=INT_TO_REAL(%MW10)]
1 LD %I0.8
[%MD2:=REAL_TO_DINT(%MF9)]

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 18) para obtener el diagrama de
contactos equivalente.

Precisin de redondeo
La norma IEEE 754 define cuatro modalidades de redondeo para las operaciones con flotantes.
La modalidad utilizada en las siguientes instrucciones es la modalidad "redondear al valor ms
cercano":
"Si los valores ms cercanos que se pueden representar estn a la misma distancia del resultado
terico, el valor suministrado ser aquel cuyo bit menos significativo sea igual a 0".
Es decir, el valor se redondear hacia el nmero par, ya sea superior o inferior.
Por ejemplo:
Redondeo del valor 10,5 a 10.
Redondeo del valor 11,5 a 12.

EIO0000001477 12/2016 101


Instrucciones

Seccin 3.5
ASCII

ASCII

Objeto de esta seccin


En esta seccin se describen las instrucciones avanzadas de ASCII.

Contenido de esta seccin


Esta seccin contiene los siguientes apartados:
Apartado Pgina
Instrucciones ROUND 103
Instrucciones de conversin de ASCII a entero 105
Instrucciones de conversin de entero a ASCII 107
Instrucciones de conversin de ASCII a flotante 109
Instrucciones de conversin de flotante a ASCII 111

102 EIO0000001477 12/2016


Instrucciones

Instrucciones ROUND

Introduccin
La instruccin ROUND redondea una representacin de coma flotante almacenada en una cadena
ASCII.

Sintaxis
A continuacin, se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de
lista de instrucciones e instrucciones de asignacin (vase pgina 21) en los escalones del
diagrama de contactos utilizando un elemento grfico de Bloque de operacin.
Para la instruccin ROUND, utilice la sintaxis: Op1 := ROUND( Op2,Op3 ).
Por ejemplo:
[%MW0:7:=ROUND(%MW8,4)]

Parmetros
En esta tabla se describen los parmetros de la funcin ROUND:

Parmetros Descripcin
Op1 %MW en el que se almacena el resultado.
Op2 %MW que contiene la coma flotante que se va a redondear.
Op3 Nmero de dgitos significativos necesarios en el redondeo.
Entero de 1 a 8

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

El resultado y el operando no deben tener un tamao superior a 13 bytes: el tamao mximo


de una cadena ASCII es de 13 bytes.
No se admite la notacin cientfica.

EIO0000001477 12/2016 103


Instrucciones

Casos especiales
El software comprueba la sintaxis. Los ejemplos siguientes produciran 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 aplicacin
En esta tabla se muestran ejemplos de la instruccin ROUND:

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

104 EIO0000001477 12/2016


Instrucciones

Instrucciones de conversin de ASCII a entero

Introduccin
Las instrucciones de conversin de ASCII a entero convierten una cadena ASCII en un valor
entero.

Sintaxis
A continuacin, se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de
lista de instrucciones e instrucciones de asignacin (vase pgina 21) en los escalones del
diagrama de contactos utilizando un elemento grfico de Bloque de operacin.
Para las instrucciones de conversin ASCII a entero, use la sintaxis siguiente:
Op1 := ASCII_TO_INT( Op2 )
Por ejemplo:
[%MW0:=ASCII_TO_INT(%MW8)]

Parmetros
En esta tabla se describen los parmetros de la funcin de conversin de ASCII a entero:

Parmetros Descripcin
Op1 %MW en el que se almacena el resultado
Op2 %MW o %KW

Reglas de utilizacin
Las reglas de las instrucciones de conversin de ASCII a entero son las siguientes:
Op2 debe estar entre -32.768 y 32.767.
La funcin siempre lee primero el byte ms significativo.
Todo carcter ASCII que se encuentre fuera del rango [0 - 9] ([16#30 - 16#39]) se considera un
carcter de fin, excepto en el caso de un signo menos '-' (16#2D) cuando se coloca como primer
carcter.
En caso de desbordamiento (>32.767 o <-32.768), el bit de sistema %S18 (desborde aritmtico
o error detectado) se establece en 1 y se devuelve el valor 32.767 o -32.768.
Si el primer carcter del operando es un carcter "separador", se devuelve el valor 0 y el bit
%S18 se establece en 1.
No se admite la notacin cientfica.

EIO0000001477 12/2016 105


Instrucciones

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

Parmetro 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 conversin 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 conversin de entero a ASCII

Introduccin
Las instrucciones de conversin de entero a ASCII convierten un entero en un valor de cadena
ASCII.

Sintaxis
A continuacin, se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de
lista de instrucciones e instrucciones de asignacin (vase pgina 21) en los escalones del
diagrama de contactos utilizando un elemento grfico de Bloque de operacin.
Para las instrucciones de conversin de entero a ASCII, use la sintaxis siguiente:
Op1 := INT_TO_ASCII( Op2 )
Por ejemplo:
[%MW0:4:=INT_TO_ASCII(%MW8)]

Parmetros
En esta tabla se describen los parmetros de la funcin de conversin de entero a ASCII:

Parmetros Descripcin
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 utilizacin
Las reglas de conversin de entero a ASCII son las siguientes:
Op2 debe estar entre -32.768 y 32.767.
La funcin siempre escribe primero el byte ms significativo.
El carcter de fin es "Enter" (ASCII 13).
La funcin determina automticamente cuntos %MWs se deben llenar con valores ASCII (de 1
a 4).

Errores de sintaxis
El software comprueba la sintaxis. Los ejemplos siguientes produciran 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 aplicacin
Para la instruccin 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 conversin de ASCII a flotante

Introduccin
Las instrucciones de conversin de ASCII a flotante convierten una cadena ASCII en un valor de
coma flotante.

Sintaxis
A continuacin, se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de
lista de instrucciones e instrucciones de asignacin (vase pgina 21) en los escalones del
diagrama de contactos utilizando un elemento grfico de Bloque de operacin.
Para las instrucciones de conversin de ASCII a flotante, utilice la sintaxis siguiente:
Op1 := ASCII_TO_FLOAT( Op2 ).
Por ejemplo:
[%MF0:=ASCII_TO_FLOAT(%MW8)]

Parmetros
En esta tabla se describen los parmetros de la funcin de conversin de ASCII a flotante:

Parmetros Descripcin
Op1 %MF
Op2 %MW or %KW

Reglas de utilizacin
Las reglas de conversin de ASCII a flotante son las siguientes:
La funcin siempre lee primero el byte ms significativo.
Todo carcter ASCII que no se encuentre en el intervalo [0 - 9] ([16#30 - 16#39]) se considera
un carcter de "fin", excepto:
punto '.' (16#2E),
menos '-' (16#2D),
ms '+' (16#2B),
EXP 'e' o 'E' (16#65 o 16#45).

El formato de la cadena ASCII puede estar en notacin cientfica (es decir, -2,34567e+13) o
decimal (es decir, 9.826,3457).
En caso de desborde (el resultado del clculo es >3,402824E+38 o <-3,402824E+38):
El bit de sistema %S18 (desborde aritmtico o error detectado) se establece en 1.
%SW17:X3 se establece en 1.
Se devuelve el valor +/- 1.#INF (+ o valor infinito).

EIO0000001477 12/2016 109


Instrucciones

Si el resultado del clculo se encuentra entre -1,175494E-38 y 1,175494E-38, se redondea a


0,0.
Si el operando no es un nmero:
Valor 1.Se devuelve #QNAN.
El bit %SW17:X0 se establece en 1.

Ejemplo de aplicacin
Tenga en cuenta que los siguientes datos ASCII se han almacenado entre %MW10 y %MW14:

Parmetro Valor hexadecimal Valor ASCII


%MW10 16#382D 8, '-'
%MW11 16#322E 2, '.'
%MW12 16#3536 5, 6
%MW13 16#2B65 '+', 'e'
%MW14 16#2032 ' ',2

En esta tabla se muestran ejemplos de la conversin de ASCII a flotante:

Ejemplo Resultado
%MF20 := ASCII_TO_FLOAT(%MW10) %MF20 = -826,5
%MF20 := ASCII_TO_FLOAT(%MW11) %MF20 = 1.#QNAN
%MF20 := ASCII_TO_FLOAT(%MW12) %MF20 = 6500.0
%MF20 := ASCII_TO_FLOAT(%MW13) %MF20 = 1.#QNAN
%MF20 := ASCII_TO_FLOAT(%MW14) %MF20 = 2.0

110 EIO0000001477 12/2016


Instrucciones

Instrucciones de conversin de flotante a ASCII

Introduccin
Las instrucciones de conversin de flotante a ASCII convierten un valor de coma flotante en un
valor de cadena ASCII.

Sintaxis
A continuacin, se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de
lista de instrucciones e instrucciones de asignacin (vase pgina 21) en los escalones del
diagrama de contactos utilizando un elemento grfico de Bloque de operacin.
Para las instrucciones de conversin de flotante a ASCII, use la sintaxis siguiente:
Op1 := FLOAT_TO_ASCII(Op2).
Por ejemplo:
[%MW0:7:=FLOAT_TO_ASCII(%MF8)]

Parmetros
En esta tabla se describen los parmetros de la funcin de conversin de flotante a ASCII:

Parmetro Descripcin
Op1 %MW
Op2 %MF or %KF

Reglas de utilizacin
Las reglas de conversin de flotante a ASCII son las siguientes:
La funcin siempre escribe primero el byte ms significativo.
La representacin se realiza mediante notacin cientfica convencional.
Los resultados "Infinito" o "No es un nmero" devuelven la cadena "NAN".
El carcter de fin es "Enter" (ASCII 13).
La funcin determina automticamente cuntos %MW se deben llenar con valores ASCII.
La precisin de conversin es de 6 cifras.
No se admite la notacin cientfica.

EIO0000001477 12/2016 111


Instrucciones

Errores de sintaxis
El software comprueba la sintaxis. Los ejemplos siguientes produciran 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 aplicacin
Para la instruccin %MW10:7 := FLOAT_TO_ASCII(%MF1):

Nmero para convertir Resultado


123.4567.800 1,23456e+09
0,000000921 9,21e-07
9,87654321 9,87654
1.234 1,234e+03

112 EIO0000001477 12/2016


Instrucciones

Seccin 3.6
Operadores de pila

Operadores de pila

Instrucciones de pila (MPS, MRD, MPP)

Introduccin
Las instrucciones de pila procesan el acceso a las bobinas. Las instrucciones MPS, MRD y MPP
utilizan un rea de almacenamiento temporal denominada "pila" que puede almacenar hasta 32
expresiones booleanas.
NOTA: Estas instrucciones no se pueden utilizar en una expresin entre parntesis.

Sintaxis
En esta tabla se describen las tres instrucciones de pila:

Instruccin Descripcin Funcin


MPS Introducir memoria en pila Almacena el resultado de la ltima instruccin lgica
(contenidos del acumulador) en la parte superior de la
pila (introducir) y desplaza el resto de los valores a la
parte inferior de la pila.
MRD Leer memoria desde pila Lee la parte superior de la pila en el acumulador.
MPP Sacar memoria de pila Copia el valor de la parte superior de la pila en el
acumulador (sacar) y desplaza el resto de los valores
hacia la parte superior de la pila.

NOTA: Para cada instruccin MPS (introducir) debe mostrarse una instruccin MPP (extraer)
coincidente en el mismo escaln.

EIO0000001477 12/2016 113


Instrucciones

Funcionamiento
En este diagrama se muestra cmo funcionan las instrucciones de pila:

Ejemplo de aplicacin
Ejemplo de uso de instrucciones de pila:

Escaln Instruccin
0 LD %I0.0
AND %M1
MPS
AND %I0.1
ST %Q0.0
MRD
AND %I0.2
ST %Q0.1
MRD
AND %I0.3
ST %Q0.2
MPP
AND %I0.4
ST %Q0.3

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 18) para obtener el diagrama de
contactos equivalente.

114 EIO0000001477 12/2016


Instrucciones

Seccin 3.7
Instrucciones sobre tablas de objetos

Instrucciones sobre tablas de objetos

Objeto de esta seccin


En esta seccin se describen las instrucciones para gestionar las tablas de objetos de:
Palabras dobles
Objetos de coma flotante

Contenido de esta seccin


Esta seccin contiene los siguientes apartados:
Apartado Pgina
Asignacin de tablas de palabras, palabras dobles o coma flotante 116
Funciones de suma en tablas 118
Funciones de comparacin de tablas 120
Funciones de bsqueda en tablas 122
Funciones de bsqueda de valores mximo y mnimo en tablas 124
Nmero de apariciones de un valor en una tabla 126
Funciones de desplazamiento circular de tablas 127
Funciones de clasificacin en tablas 129
Funciones de interpolacin en la tabla de coma flotante (LKUP) 131
Funciones de MEDIA de los valores de una tabla de coma flotante 136

EIO0000001477 12/2016 115


Instrucciones

Asignacin de tablas de palabras, palabras dobles o coma flotante

Introduccin
Las operaciones de asignacin se pueden ejecutar en las siguientes tablas de objetos:
Valor entero inmediato a la tabla de palabras (vea el escaln 0 de la estructura de ejemplo
(vase pgina 117)) o a la tabla de palabras dobles
Palabra a tabla de palabras (vea el escaln 1 de la estructura de ejemplo (vase pgina 117))
Tabla de palabras a tabla de palabras (vea el escaln 2 de la estructura de ejemplo
(vase pgina 117))
La longitud de la tabla (L) debe ser igual para ambas tablas.
Palabra doble a tabla de palabras dobles
Tabla de palabras dobles a tabla de palabras dobles
La longitud de la tabla (L) debe ser igual para ambas tablas.
Valor de coma flotante inmediato a tabla de coma flotante
Coma flotante a tabla de coma flotante
Tabla de coma flotante a tabla de coma flotante
La longitud de la tabla (L) debe ser igual para ambas tablas.

Sintaxis
A continuacin, se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de
lista de instrucciones e instrucciones de asignacin (vase pgina 21) en los escalones del
diagrama de contactos utilizando un elemento grfico de Bloque de operacin.
Sintaxis de las asignaciones de tablas de palabras, palabras dobles y coma flotante:

Operador Sintaxis
:= [Op1 := Op2]
Op1 toma el valor de Op2

En esta tabla se muestra la informacin de los operandos:

Tipo Op1 Op2


Tabla de palabras %MWi:L, %SWi:L %MWi:L, %SWi:L, valor entero inmediato,
%MWi, %KWi, %IW, %QW, %SWi, %BLK.x
Tablas de palabras %MDi:L Valor entero inmediato,
dobles %MDi, %KDi,%MDi:L, %KDi:L
Tablas de palabras %MFi:L Valor de coma flotante inmediato, %MFi, %KFi,
flotantes %MFi:L, %KFi:L
L Longitud de la tabla (mximo 255).

NOTA: La abreviatura %BLK.x (por ejemplo, R3.I) se utiliza para describir cualquier palabra del
bloque de funciones.

116 EIO0000001477 12/2016


Instrucciones

Estructura
Ejemplos de asignaciones de tablas de palabras:

Escaln Instruccin
0 LD 1
[%MW0:10:=100]
1 LD %I0.0
[%MW0:10:=%MW11]
2 LDR %I0.3
[%MW10:20:=%KW20:20]

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 18) para obtener el diagrama de
contactos equivalente.

EIO0000001477 12/2016 117


Instrucciones

Funciones de suma en tablas

Introduccin
La funcin SUM_ARR realiza la suma de todos los elementos de una tabla de objetos:
Si la tabla se compone de palabras dobles, el resultado se presenta en forma de palabra doble.
Si la tabla se compone de palabras flotantes, el resultado se presenta en forma de palabra
flotante.

Sintaxis
A continuacin, se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de
lista de instrucciones e instrucciones de asignacin (vase pgina 21) en los escalones del
diagrama de contactos utilizando un elemento grfico de Bloque de operacin.
Sintaxis de la instruccin de suma en tabla:
Res:=SUM_ARR(Tab)
Parmetros de la instruccin de suma en tabla:

Tipo Resultado (Res) Tabla (Tab)


Tablas de palabras dobles %MDi %MDi:L,%KDi:L
Tablas de palabras flotantes %MFi %MFi:L,%KFi:L
L Longitud de la tabla (mximo 255).

NOTA: Cuando el resultado no se encuentra dentro del rango vlido de formato de palabra doble
segn el operando de la tabla, el bit de sistema %S18 se establece en 1.

Estructura
Ejemplo de funcin de suma:

Escaln Instruccin
0 LD %I0.2
[%MD5:=SUM_ARR(%MD3:1)]
1 LD 1
[%MD5:=SUM_ARR(%KD5:2)]
2 LD 1
[%MF2:=SUM_ARR(%MF8:5)]

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 18) para obtener el diagrama de
contactos equivalente.

118 EIO0000001477 12/2016


Instrucciones

Ejemplo de aplicacin
%MD4:=SUM_ARR(%MD30:4)
Donde %MD30= 10, %MD32= 20, %MD34= 30, %MD36= 40
Por tanto, %MD4:= 10 + 20 + 30 + 40

EIO0000001477 12/2016 119


Instrucciones

Funciones de comparacin de tablas

Introduccin
La funcin EQUAL_ARR realiza la comparacin de dos tablas, elemento por elemento.
Si aparece una diferencia, el rango de los primeros elementos diferentes se muestra en forma de
palabra, de lo contrario, el valor mostrado es igual a -1.
La comparacin se realiza en la totalidad de la tabla.

Sintaxis
A continuacin, se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de
lista de instrucciones e instrucciones de asignacin (vase pgina 21) en los escalones del
diagrama de contactos utilizando un elemento grfico de Bloque de operacin.
Sintaxis de la instruccin de comparacin de tablas:
Res:=EQUAL_ARR(Tab1,Tab2)
Parmetros de las instrucciones de comparacin de tablas:

Tipo Resultado (Res) Tablas (Tab1 y Tab2)


Tablas de palabras dobles %MWi %MDi:L,%KDi:L
Tablas de palabras flotantes %MWi %MFi:L,%KFi:L
L Longitud de la tabla (mximo 255).

NOTA: Las tablas deben tener la misma longitud y ser del mismo tipo.

Estructura
Ejemplo de funcin de comparacin de tablas:

Escaln Instruccin
0 LD %I0.2
[%MW5:=EQUAL_ARR(%MD20:7,%KD0:7)]
1 LD 1
[%MW0:=EQUAL_ARR(%MD20:7,%KD0:7)]
2 LD 1
[%MF2:=SUM_ARR(%MF8:5)]

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 18) para obtener el diagrama de
contactos equivalente.

120 EIO0000001477 12/2016


Instrucciones

Ejemplo de aplicacin
%MW5:=EQUAL_ARR(%MD30:4,%KD0:4)
Comparacin 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

Funciones de bsqueda en tablas

Introduccin
Se proponen tres funciones de bsqueda:
FIND_EQR: bsqueda de la posicin en una tabla de palabras dobles o de flotantes del primer
elemento igual a un valor determinado.
FIND_GTR: bsqueda de la posicin en una tabla de palabras dobles o de flotantes del primer
elemento mayor que un valor determinado.
FIND_LTR: bsqueda de la posicin en una tabla de palabras dobles o de flotantes del primer
elemento menor que un valor determinado.
El resultado de estas instrucciones es igual al rango del primer elemento encontrado o a -1 si la
bsqueda es infructuosa.

Sintaxis
A continuacin, se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de
lista de instrucciones e instrucciones de asignacin (vase pgina 21) en los escalones del
diagrama de contactos utilizando un elemento grfico de Bloque de operacin.
Sintaxis de las instrucciones de bsqueda en tablas:

Funcin Sintaxis
FIND_EQR Res:=Funcin(Tab,Val)
FIND_GTR
FIND_LTR

Parmetros de las instrucciones de bsqueda en tablas de palabras flotantes y palabras dobles:

Tipo Resultado (Res) Tabla (Tab) Valor (Val)


Tablas de palabras %MWi %MFi:L,%KFi:L %MFi,%KFi
flotantes
Tablas de palabras %MWi %MDi:L,%KDi:L %MDi,%KDi
dobles
L Longitud de la tabla (mximo 255).

122 EIO0000001477 12/2016


Instrucciones

Estructura
Ejemplo de funcin de bsqueda en tablas:

Escaln Instruccin
0 LD %I0.2
[%MW5:=FIND_EQR(%MD20:7,%KD0)]
1 LD %I0.3
[%MW6:=FIND_GTR(%MD20:7,%KD0)]
2 LD 1
[%MW7:=FIND_LTR(%MF40:5,%KF4)]

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 18) para obtener el diagrama de
contactos equivalente.

Ejemplo de aplicacin
%MW5:=FIND_EQR(%MD30:4,%KD0)
Bsqueda de la posicin 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), rango
3 %MD36=40 -

EIO0000001477 12/2016 123


Instrucciones

Funciones de bsqueda de valores mximo y mnimo en tablas

Introduccin
Se proponen dos funciones de bsqueda:
MAX_ARR: bsqueda del valor mximo en una tabla de palabras dobles y de flotantes.
MIN_ARR: bsqueda del valor mnimo en una tabla de palabras dobles y de flotantes.

El resultado de estas instrucciones es igual al valor mximo (o mnimo) encontrado en la tabla.

Sintaxis
A continuacin, se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de
lista de instrucciones e instrucciones de asignacin (vase pgina 21) en los escalones del
diagrama de contactos utilizando un elemento grfico de Bloque de operacin.
Sintaxis de las instrucciones de bsqueda de valores mximos y mnimos en tablas:

Funcin Sintaxis
MAX_ARR Result:=Function(Tab)
MIN_ARR

Parmetros de las instrucciones de bsqueda de valores mximos y mnimos en tablas:

Tipo Resultado (Res) Tabla (Tab)


Tablas de palabras dobles %MDi %MDn:L,%KDn:L
Tablas de palabras flotantes %MFi %MFn:L,%KFn:L
i Indicador de instancia de objeto para la variable de memoria.
n ndice de memoria de la tabla que indica la direccin de base para la bsqueda.
L Nmero de posiciones que deben considerarse en una bsqueda, incluido el ndice de la direccin de
base (el valor mximo de L es 255).

NOTA: En L se incluyen slo las direcciones que no se superponen durante la bsqueda. Para
obtener ms informacin, consulte Posibilidad de solapamiento entre objetos (vase pgina 40).

Estructura
Ejemplo de funcin de bsqueda en tablas:

Escaln Instruccin
0 LD %I0.2
[%MD0:=MIN_ARR(%MD20:7)]
1 LD 1
[%MF8:=MIN_ARR(%MF40:5)]

124 EIO0000001477 12/2016


Instrucciones

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 18) para obtener el diagrama de
contactos equivalente.

EIO0000001477 12/2016 125


Instrucciones

Nmero de apariciones de un valor en una tabla

Introduccin
Esta funcin OCCUR_ARR realiza una bsqueda en una tabla de palabras dobles o de flotantes del
nmero de elementos iguales a un valor determinado.

Sintaxis
A continuacin, se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de
lista de instrucciones e instrucciones de asignacin (vase pgina 21) en los escalones del
diagrama de contactos utilizando un elemento grfico de Bloque de operacin.
Sintaxis de las instrucciones de bsqueda de valores mximos y mnimos en tablas:

Funcin Sintaxis
OCCUR_ARR Res:=Funcin(Tab,Val)

Parmetros de las instrucciones de bsqueda de valores mximos y mnimos en tablas:

Tipo Resultado (Res) Tabla (Tab) Valor (Val)


Tablas de palabras %MWi %MDi:L,%KDi:L %MDi,%KDi
dobles
Tablas de palabras %MFi %MFi:L,%KFi:L %MFi,%KFi
flotantes
L Longitud de la tabla (mximo 255).

Estructura
Ejemplo de nmero de apariciones:

Escaln Instruccin
0 LD %I0.3
[%MW5:=OCCUR_ARR(%MF20:7,%KF0)]
1 LD %I0.2
[%MW5:=OCCUR_ARR(%MD20:7,%MD1)]

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 18) para obtener el diagrama de
contactos equivalente.

126 EIO0000001477 12/2016


Instrucciones

Funciones de desplazamiento circular de tablas

Introduccin
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.
Ilustracin 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.
Ilustracin de las funciones de ROR_ARR

Sintaxis
A continuacin, se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de
lista de instrucciones e instrucciones de asignacin (vase pgina 21) en los escalones del
diagrama de contactos utilizando un elemento grfico de Bloque de operacin.
Sintaxis de las instrucciones de desplazamiento circular en tablas de palabras dobles o de
flotantes ROL_ARR y ROR_ARR

Funcin Sintaxis
ROL_ARR Funcin(n,Tab)
ROR_ARR

EIO0000001477 12/2016 127


Instrucciones

Parmetros de las instrucciones de desplazamiento circular en tablas de palabras flotantes:


ROL_ARR y ROR_ARR:

Tipo Nmero de posiciones (n) Tabla (Tab)


Tablas de palabras flotantes %MWi, immediate value %MFi:L
Tablas de palabras dobles %MWi, immediate value %MDi:L
L Longitud de la tabla (mximo 255).

NOTA: Si el valor de n es negativo o nulo, no se efectuar ningn desplazamiento.

Estructura
Ejemplo de funcin de desplazamiento circular en tablas:

Escaln Instruccin
0 LD %I0.2
[ROL_ARR(%KW0,%MD20:7)]
1 LD %I0.3
[ROR_ARR(2,%MD20:7)]
2 LD %I0.4
[ROR_ARR(2,%MF40:5)]

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 18) para obtener el diagrama de
contactos equivalente.

128 EIO0000001477 12/2016


Instrucciones

Funciones de clasificacin en tablas

Introduccin
La funcin de clasificacin SORT_ARR realiza las clasificaciones en orden ascendente o
descendente de los elementos de una tabla de palabras dobles o de flotantes y almacena el
resultado en la misma tabla.

Sintaxis
A continuacin, se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de
lista de instrucciones e instrucciones de asignacin (vase pgina 21) en los escalones del
diagrama de contactos utilizando un elemento grfico de Bloque de operacin.
Sintaxis de las funciones de clasificacin en tablas:

Funcin Sintaxis
SORT_ARR Funcin(direccin,Tab)

El parmetro "direccin" proporciona el orden de la clasificacin:


Direccin > 0: la clasificacin se efecta en orden ascendente.
Direccin < 0: la clasificacin se efecta en orden descendente.
Direccin = 0: no se realiza ninguna clasificacin.

El resultado (tabla ordenada) se devuelve en el parmetro Tab (tabla para clasificar).


Parmetros de las funciones de clasificacin en tablas:

Tipo Direccin de la clasificacin Tabla (Tab)


Tablas de palabras dobles %MWi, immediate value %MDi:L
Tablas de palabras flotantes %MWi, immediate value %MFi:L
L Longitud de la tabla (mximo 255).

Estructura
Ejemplo de funcin de clasificacin en tablas:

Escaln Instruccin
0 LD %I0.1
[SORT_ARR(%MW20,%MF0:6)]
1 LD %I0.2
[SORT_ARR(%MW20,%MF0:6)]
2 LD %I0.3
[SORT_ARR(0,%MF40:8)]

EIO0000001477 12/2016 129


Instrucciones

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 18) para obtener el diagrama de
contactos equivalente.

130 EIO0000001477 12/2016


Instrucciones

Funciones de interpolacin en la tabla de coma flotante (LKUP)

Introduccin
La funcin LKUP se usa para interpolar un conjunto de datos de coma flotante de X con respecto
a Y para un valor dado de X.

Revisin de la interpolacin lineal


La funcin LKUP utiliza la regla de interpolacin lineal, como se define en esta ecuacin:

(Ecuacin 1)

para , donde ;

sabiendo que los valores de estn dispuestos en orden ascendente:

NOTA: Si dos valores consecutivos Xi cualesquiera son iguales (Xi=Xi+1=X), la ecuacin (1)
resulta en una excepcin no vlida. En este caso, para solucionar esta excepcin se usa el
algoritmo siguiente en lugar de la ecuacin (1):

(Ecuacin 2)

para , donde .

EIO0000001477 12/2016 131


Instrucciones

Representacin grfica
Este grfico muestra la regla de interpolacin lineal descrita anteriormente:

Sintaxis
A continuacin, se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de
lista de instrucciones e instrucciones de asignacin (vase pgina 21) en los escalones del
diagrama de contactos utilizando un elemento grfico de Bloque de operacin.
La funcin LKUP usa tres operandos, dos de los cuales son atributos de funcin, tal como se
describe en esta tabla:

Sintaxis Op1 Op2 Op3


Variable de salida Valor (X) definido por el Matriz de variables (Xi,Yi)
usuario definida por el usuario
[Op1: = LKUP(Op2,Op3)] %MWi %MF0 Valor entero, %MWi,or %KWi

132 EIO0000001477 12/2016


Instrucciones

Definicin de Op1
Op1 es la palabra de memoria que contiene la variable de salida de la funcin de interpolacin.
En funcin del valor de Op1, puede saber si la interpolacin se ha realizado correctamente o no,
y qu es lo que puede haber causado un fallo, como se explica en esta tabla:

Op1 (%MWi)) Descripcin


0 Interpolacin correcta
1 Se ha detectado un error de interpolacin: matriz incorrecta, Xm < Xm-1
2 Se ha detectado un error de interpolacin: Op2 fuera de rango, X < X1
4 Se ha detectado un error de interpolacin: Op2 fuera de rango, X > Xm
8 Tamao no vlido de la matriz de datos:
Op3 se define como nmero impar o bien
Op3 < 6.

NOTA: Op1 no contiene el valor (Y) de interpolacin calculado. Para un valor dado (X), el resultado
de la interpolacin (Y) est contenido en %MF2 de la matriz Op3 (vase pgina 133).

Definicin de Op2
Op2 es la variable de coma flotante (%MF0 de la matriz de coma flotante de Op3) que contiene el
valor (X) definido por el usuario para el que se va a calcular el valor (Y) interpolado.

Rango vlido para Op2: .

Definicin de Op3
Op3 establece el tamao (Op3 / 2) de la matriz de coma flotante en la que se almacenan los pares
de datos (Xi,Yi).
Los datos Xi e Yi se almacenan en objetos de coma flotante con ndices pares, empezando por
%MF4 (observe que los objetos de coma flotante %MF0 y %MF2 se reservan para la consigna del
usuario X y el valor Y interpolado, respectivamente).
Dada una matriz de (m) pares de datos (Xi,Yi), el ndice superior (u) de la matriz de coma flotante
(%MFu) se establece mediante las relaciones siguientes:
(Ecuacin 3)

(Ecuacin 4)

EIO0000001477 12/2016 133


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, Op3 debe cumplir
los dos requisitos siguientes; de lo contrario, se activar un error en la funcin LKUP:
Op3 es un nmero par y
Op3 6 (ya que debe haber, al menos, dos puntos de datos para que pueda haber
interpolacin lineal).

Estructura
Las operaciones de interpolacin se realizan de la forma siguiente:

Escaln Instruccin
0 LD %I0.2
[%MW20:=LKUP(%MF0,%KW1)]
1 LD %I0.3
[%MW22:=LKUP(%MF0,10)]

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 18) para obtener el diagrama de
contactos equivalente.

Ejemplo de aplicacin
Uso de una funcin de interpolacin LKUP:
[%MW20:=LKUP(%MF0,10)]
En este ejemplo:
%MW20 es Op1 (la variable de salida).
%MF0 es el valor (X) definido por el usuario cuyo valor (Y) correspondiente se debe calcular
mediante interpolacin lineal.
%MF2 almacena el valor (Y) calculado resultante de la interpolacin lineal.
10 es Op3 (calculado mediante la ecuacin 3 explicada anteriormente). Establece el tamao de
la matriz de coma flotante. El elemento ms alto de la serie %MFu, donde u=18 se calcula
mediante la ecuacin 4 descrita anteriormente.

134 EIO0000001477 12/2016


Instrucciones

Existen cuatro pares de puntos de datos almacenados en la matriz Op3 [%MF4,...%MF18]:


%MF4 contiene X1,%MF6 contiene Y1.
%MF8 contiene X2,%MF10 contiene Y2.
%MF12 contiene X3,%MF14 contiene Y3.
%MF16 contiene X4,%MF18 contiene Y4.

EIO0000001477 12/2016 135


Instrucciones

Funciones de MEDIA de los valores de una tabla de coma flotante

Introduccin
La funcin MEAN permite calcular la media de un nmero determinado de valores de una tabla de
coma flotante.

Sintaxis
A continuacin, se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de
lista de instrucciones e instrucciones de asignacin (vase pgina 21) en los escalones del
diagrama de contactos utilizando un elemento grfico de Bloque de operacin.
Sintaxis de la funcin de clculo de la media de una tabla de coma flotante:

Funcin Sintaxis
MEAN Resultado=Funcin(Op1)

Parmetros de la funcin de clculo para un nmero L determinado (mximo 255) de valores de


una tabla de comas flotantes:

Op1 Resultado (Res)


%MFi:L, %KFi:L %MFi

Estructura
Ejemplo de funcin de media:

Escaln Instruccin
0 LD %I3.2
[%MF0:=MEAN(%MF10:5)]

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 18) para obtener el diagrama de
contactos equivalente.

136 EIO0000001477 12/2016


Instrucciones

Seccin 3.8
Instrucciones sobre los objetos de E/S

Instrucciones sobre los objetos de E/S

Objeto de esta seccin


En esta seccin se describen las instrucciones sobre los objetos de E/S.

Contenido de esta seccin


Esta seccin contiene los siguientes apartados:
Apartado Pgina
Entrada incrustada digital de lectura instantnea (READ_IMM_IN) 138
Salida incrustada digital de escritura instantnea (WRITE_IMM_OUT) 140
Parmetro de bloque de funciones de lectura inmediata (READ_IMM) 142
Parmetro de bloque de funciones de escritura inmediata (WRITE_IMM) 143

EIO0000001477 12/2016 137


Instrucciones

Entrada incrustada digital de lectura instantnea (READ_IMM_IN)

Introduccin
La instruccin READ_IMM_IN lee una entrada incrustada digital durante la ejecucin de una tarea
y actualiza la imagen de entrada inmediatamente. As se evita tener que esperar el siguiente
tiempo de ciclo de tarea para actualizar la imagen de entrada.
NOTA: Esta instruccin slo es vlida para las entradas incrustadas digitales (salidas integradas
en el Logic Controller).

Sintaxis
A continuacin, se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de
lista de instrucciones e instrucciones de asignacin (vase pgina 21) en los escalones del
diagrama de contactos utilizando un elemento grfico de Bloque de operacin.
Para la instruccin READ_IMM_IN, utilice la sintaxis siguiente:
Op1 := READ_IMM_IN(Op2)
Donde:

Operando Tipo Descripcin


Op1 %MWi Almacena el cdigo de retorno de la funcin (consulte la
siguiente tabla).
Op2 Valor inmediato (entero) Define el ndice de entrada (%I0.x).
%MWi
%KWi
i Indicador de instancia de objeto para la variable de memoria.

Cdigo de retorno de la funcin


En esta tabla se describe el cdigo de retorno de la funcin:

Cdigo Descripcin
0 No se ha detectado ningn error.
1 La entrada declarada es mayor que la entrada mxima permitida.
2 La entrada declarada est forzada.

Ejemplo
%MW0 := READ_IMM_IN(2)
En la ejecucin de este bloque de operacin, el valor actual de la entrada %I0.2 se lee y la imagen
de entrada se actualiza inmediatamente. El cdigo de retorno de la funcin se guarda en la palabra
de memoria %MW0.

138 EIO0000001477 12/2016


Instrucciones

Estructura
Ejemplo de la instruccin READ_IMM_IN:

Escaln Instruccin
0 LD %M0
[%MW0:=READ_IMM_IN(%MW5)]

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 18) para obtener el diagrama de
contactos equivalente.

EIO0000001477 12/2016 139


Instrucciones

Salida incrustada digital de escritura instantnea (WRITE_IMM_OUT)

Introduccin
La instruccin WRITE_IMM_OUT escribe fsicamente en una salida digital incrustada
inmediatamente, y el valor se lee desde la imagen de salida. As se evita tener que esperar el
siguiente tiempo de ciclo de tarea para escribir a la salida incrustada.
NOTA: Esta funcin slo es vlida para las salidas digitales incrustadas (salidas integradas en el
Logic Controller).

Sintaxis
A continuacin, se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de
lista de instrucciones e instrucciones de asignacin (vase pgina 21) en los escalones del
diagrama de contactos utilizando un elemento grfico de Bloque de operacin.
Para la instruccin WRITE_IMM_OUT, utilice la sintaxis siguiente:
Op1 := WRITE_IMM_OUT(Op2)
Donde:

Operando Tipo Descripcin


Op1 %MWi Almacena el cdigo de retorno de la funcin (consulte la
siguiente tabla).
Op2 Valor inmediato (entero) Define el ndice de salida (%Q0.x).
%MWi
%KWi
i Indicador de instancia de objeto para la variable de memoria.

Cdigo de retorno de la funcin


En esta tabla se describe el cdigo de retorno de la funcin:

Cdigo Descripcin
0 No se ha detectado ningn error.
3 La salida declarada es mayor que la salida mxima permitida.
4 La salida declarada est forzada.
5 La salida declarada se utiliza como una salida de hardware dedicada.
6 La salida declarada se utiliza como una salida de alarma.

140 EIO0000001477 12/2016


Instrucciones

Ejemplo
%MW0 := WRITE_IMM_OUT(%MW5) (con %MW5 = 2)
En la ejecucin de este bloque de operacin, la imagen de salida %Q0.2 se escribe fsicamente
en la salida digital incrustada. El cdigo de retorno de la funcin se guarda en la palabra de
memoria %MW0.

Estructura
Ejemplo de la instruccin WRITE_IMM_OUT:

Escaln Instruccin
0 LD %M0
[%MW0:= WRITE_IMM_OUT(%MW4)]

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 18) para obtener el diagrama de
contactos equivalente.

EIO0000001477 12/2016 141


Instrucciones

Parmetro de bloque de funciones de lectura inmediata (READ_IMM)

Introduccin
La instruccin READ_IMM lee un parmetro de bloque de funciones durante la ejecucin de una
tarea y actualiza la imagen de entrada durante el mismo ciclo.
Esta funcin slo est disponible para determinados parmetros de bloques de funciones. La
instruccin READ_IMM lee directamente desde los registros HSC.V y HSC.P en bloques de
funciones de Contador de alta velocidad (%HSC). Para obtener ms informacin, consulte
Contador de alta velocidad (%HSC).

Sintaxis
A continuacin, se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de
lista de instrucciones e instrucciones de asignacin (vase pgina 21) en los escalones del
diagrama de contactos utilizando un elemento grfico de Bloque de operacin.
Para la instruccin READ_IMM, utilice la sintaxis siguiente:
READ_IMM(Op1)
Donde:

Operando Tipo Descripcin


Op1 %HSCx.P, %HSCx.PD, Esta instruccin lee un parmetro de bloque de funciones dado
%HSCx.V, %HSCx.VD en Op1 y actualiza el valor en la imagen de E/S y en el registro
correspondiente.
x Identificador de instancia de objeto del bloque de funciones.

Ejemplo
A continuacin se muestra un ejemplo de uso de la instruccin READ_IMM:

Escaln Instruccin
0 LD %M0
[READ_IMM(%HSC0.P)]

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 18) para obtener el diagrama de
contactos equivalente.
NOTA: La aplicacin debe estar configurada con un nivel funcional (vase SoMachine Basic, Gua
de funcionamiento) como mnimo del Nivel 3.3 para utilizar la instruccin READ_IMM.

142 EIO0000001477 12/2016


Instrucciones

Parmetro de bloque de funciones de escritura inmediata (WRITE_IMM)

Introduccin
La instruccin WRITE_IMM escribe un parmetro de bloque de funciones durante la ejecucin de
una tarea y actualiza la imagen de salida durante el mismo ciclo.
Esta funcin slo est disponible para determinados parmetros de bloques de funciones. La
instruccin WRITE_IMM escribe directamente desde los registros HSC.V y HSC.P en bloques de
funciones de Contador de alta velocidad (%HSC). Para obtener ms informacin, consulte
Contador de alta velocidad (%HSC).

Sintaxis
A continuacin, se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de
lista de instrucciones e instrucciones de asignacin (vase pgina 21) en los escalones del
diagrama de contactos utilizando un elemento grfico de Bloque de operacin.
Para la instruccin WRITE_IMM, utilice la sintaxis siguiente:
WRITE_IMM(Op1)
Donde:

Operando Tipo Descripcin


Op1 %HSCx.P, %HSCx.PD, Esta instruccin escribe un parmetro de bloque de funciones
%HSCx.V, %HSCx.VD dado en Op1 y actualiza el valor en la imagen de E/S.

x Identificador de instancia de objeto del bloque de funciones.

Ejemplo
A continuacin se muestra un ejemplo de uso de la instruccin WRITE_IMM:

Escaln Instruccin
0 LD %M1
[WRITE_IMM(%HSC0.V)]

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 18) para obtener el diagrama de
contactos equivalente.
NOTA: La aplicacin debe estar configurada con un nivel funcional como mnimo del Nivel 3.3 para
utilizar la instruccin WRITE_IMM.

EIO0000001477 12/2016 143


Instrucciones

144 EIO0000001477 12/2016


SoMachine Basic
Objetos de E/S
EIO0000001477 12/2016

Captulo 4
Objetos de E/S

Objetos de E/S

Contenido de este captulo


Este captulo contiene las siguientes secciones:
Seccin Apartado Pgina
4.1 Contador rpido (%FC) 146
4.2 Contador de alta velocidad (%HSC) 147
4.3 Pulso (%PLS) 148
4.4 Modulacin de ancho de pulsos (%PWM) 149

EIO0000001477 12/2016 145


Objetos de E/S

Seccin 4.1
Contador rpido (%FC)

Contador rpido (%FC)

Contador rpido

Descripcin general
Consulte la Gua de la biblioteca de funciones avanzadas de su controlador.

146 EIO0000001477 12/2016


Objetos de E/S

Seccin 4.2
Contador de alta velocidad (%HSC)

Contador de alta velocidad (%HSC)

Contador de alta velocidad

Descripcin general
Consulte la Gua de la biblioteca de funciones avanzadas de su controlador.

EIO0000001477 12/2016 147


Objetos de E/S

Seccin 4.3
Pulso (%PLS)

Pulso (%PLS)

Pulso

Descripcin general
Consulte la Gua de la biblioteca de funciones avanzadas de su controlador.

148 EIO0000001477 12/2016


Objetos de E/S

Seccin 4.4
Modulacin de ancho de pulsos (%PWM)

Modulacin de ancho de pulsos (%PWM)

Modulacin de ancho de pulsos

Descripcin general
Consulte la Gua de la biblioteca de funciones avanzadas de su controlador.

EIO0000001477 12/2016 149


Objetos de E/S

150 EIO0000001477 12/2016


SoMachine Basic
Objetos de red
EIO0000001477 12/2016

Captulo 5
Objetos de red

Objetos de red

Objetos de red

Presentacin
Los objetos de red se utilizan para la comunicacin a travs de EtherNet/IP, Modbus TCP o
IOScanner serie Modbus.
Hay dos tipos de objeto de red para la comunicacin EtherNet/IP:
%QWE: Input Assembly
%IWE: Output Assembly

Hay dos tipos de objeto de red para la comunicacin Modbus TCP:


%QWM: registros de entrada
%IWM: registros de salida

Para IOScanner serie Modbus, se utilizan los siguientes tipos de objetos de red:
%IN: entradas digitales (IOScanner)
%QN: salidas digitales (IOScanner)
%IWN: registros de entrada (IOScanner)
%QWN: registros de salida (IOScanner)
%IWNS: cdigos de diagnstico 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.
Para obtener ms informacin sobre cmo configurar objetos de red, consulte la gua de
programacin del logic controller.

EIO0000001477 12/2016 151


Objetos de red

152 EIO0000001477 12/2016


SoMachine Basic
Objetos de software
EIO0000001477 12/2016

Captulo 6
Objetos de software

Objetos de software

Contenido de este captulo


Este captulo contiene las siguientes secciones:
Seccin Apartado Pgina
6.1 Uso de bloques de funciones 154
6.2 Temporizador (%TM) 160
6.3 Contador (%C) 172
6.4 Mensaje (%MSG) e intercambio (EXCH) 180
6.5 Registro LIFO/FIFO (%R) 205
6.6 Drums (%DR) 214
6.7 Registro de bits de desplazamiento (%SBR) 222
6.8 Contador de pasos (%SC) 227
6.9 Fechadores (%SCH) 232
6.10 Reloj de tiempo real (%RTC) 237
6.11 PID 242
6.12 Pasos de Grafcet 243

EIO0000001477 12/2016 153


Objetos de software

Seccin 6.1
Uso de bloques de funciones

Uso de bloques de funciones

Contenido de esta seccin


Esta seccin contiene los siguientes apartados:
Apartado Pgina
Principios de programacin del bloque de funciones 155
Aadido de un bloque de funciones 157
Configuracin de un bloque de funciones 159

154 EIO0000001477 12/2016


Objetos de software

Principios de programacin del bloque de funciones

Descripcin general
Un bloque de funciones es un objeto reutilizable que acepta uno o varios valores de entrada y
devuelve uno o varios valores de salida.
Los parmetros de los bloques de funciones no estn disponibles si:
su controlador no admite el bloque de funciones;
el bloque de funciones no est configurado.

Programas de diagrama de contactos


Para utilizar un bloque de funciones en un programa de diagrama de contactos:
1. Inserte (vase pgina 157) el bloque de funciones en un escaln.
2. Conecte las entradas y salidas segn sea necesario.
3. Configure (vase pgina 159) el bloque de funciones especificando los valores de sus
parmetros.

Programas de la lista de instrucciones


Para aadir un bloque de funciones a un programa de lista de instrucciones, puede utilizar uno de
los siguientes mtodos:
Instrucciones del bloque de funciones (por ejemplo, BLK %TM2): este mtodo reversible de
programacin permite que las operaciones que se van a realizar en el bloque se lleven a cabo
en un nico lugar del programa.
Instrucciones especficas (por ejemplo, CU %Ci). Este mtodo no reversible permite que las
operaciones que se van a realizar en las entradas del bloque de funciones se lleven a cabo en
diversos lugares del programa. Por ejemplo:

Lnea Instruccin
1.000 CU %C1
1.074 CD %C1
1.209 R %C1

Utilice las instrucciones BLK, OUT_BLK y END_BLK para la programacin reversible de los bloques
de funciones:
BLK: indica el principio del bloque.
OUT_BLK: se emplea para conectar las salidas del bloque directamente.
END_BLK: indica el final del bloque.
NOTA: Se pueden colocar instrucciones de entrada y de prueba en el bloque relevante
nicamente entre las instrucciones BLK y OUT_BLK (o entre BLK y END_BLK cuando no se
programa OUT_BLK).

EIO0000001477 12/2016 155


Objetos de software

Ejemplo con salidas cableadas


En este ejemplo se muestra un bloque de funciones Counter en un programa con salidas
cableadas:

Escaln Instruccin
0 BLK %C8
LDF %I0.1
R
LD %I0.1
AND %M0
CU
OUT_BLK
LD D
AND %M1
ST %Q0.0
END_BLK

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 18) para obtener el diagrama de
contactos equivalente.

Ejemplo sin salidas cableadas


En este ejemplo se muestra la programacin reversible de un bloque de funciones Counter sin
salidas cableadas:

Escaln Instruccin
0 BLK %C8
LDF %I0.1
R
LD %I0.2
AND %M0
CU
END_BLK
1 LD %C8.D
AND %M1
ST %Q0.4

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 18) para obtener el diagrama de
contactos equivalente.

156 EIO0000001477 12/2016


Objetos de software

Aadido de un bloque de funciones

Para insertar un bloque de funciones en un programa de diagrama de contactos


Siga el procedimiento siguiente:

Paso Accin
1 Cree un nuevo escaln del diagrama de contactos en el rea de trabajo de programacin de
SoMachine Basic. Consulte la Gua de funcionamiento de SoMachine Basic para obtener ms
detalles.
2 Haga clic en el botn Funcin de la barra de herramientas grfica situada en la parte superior
del rea de trabajo de programacin.
Resultado: Se muestra una lista de todos los objetos de bloques de funciones disponibles
(consulte la tabla siguiente).
3 Seleccione el bloque de funciones.
4 Mueva el bloque de funciones a la posicin deseada en el escaln y, a continuacin, haga clic
para insertarlo.

Objetos de bloques de funciones disponibles


En esta tabla se muestran los objetos de bloques de funciones disponibles:

Objeto de bloque de funciones Descripcin


Timer

LIFO/FIFO Register

Shift Bit Register

Step Counter

Counter

Fast Counter

High Speed Counter

EIO0000001477 12/2016 157


Objetos de software

Objeto de bloque de funciones Descripcin


Drum

Pulse

Pulse Width Modulation

Message

Pulse Train Output


NOTA: Para ver una lista completa de objetos PTO consulte la M221
Funciones avanzadas - Gua de la biblioteca, Bloques de funciones PTO.
Bloques de funciones de comunicacin
NOTA: Para obtener una lista de los bloques de funciones de
comunicacin, consulte Objetos de comunicacin (vase pgina 251).

158 EIO0000001477 12/2016


Objetos de software

Configuracin de un bloque de funciones

Para configurar un bloque de funciones en un programa de diagrama de contactos


Siga el procedimiento siguiente:

Paso Accin
1 Haga clic en la etiqueta [Direccin] dentro del bloque de funciones.
Aparece una direccin predeterminada en el cuadro de texto; por ejemplo, "%TM0" para un
bloque de funciones Timer.
Para modificar la direccin predeterminada, elimine el ltimo dgito de la direccin (el
identificador de la instancia).
Aparece una lista de todas las direcciones disponibles.
Seleccione la direccin que se utilizar para identificar esta instancia del bloque de funciones.
Las propiedades del bloque de funciones aparecen en el centro del objeto de bloque de
funciones y en la tabla Propiedades, en la mitad inferior del rea de trabajo de programacin.
Cuando lo desee, puede hacer doble clic en cualquier parte dentro del bloque de funciones
para visualizar las propiedades.
2 De manera opcional, haga clic en la etiqueta [Introducir comentario] dentro del bloque de
funciones y escriba una breve descripcin del bloque de funciones. Por ejemplo,
Temporizador de pulso.
3 De manera opcional, haga clic en la etiqueta [Smbolo] dentro del bloque de funciones y
comience a escribir el nombre del smbolo para asociarlo con este bloque de funciones.
Aparece una lista de todos los smbolos existentes con nombres que comienzan con el
carcter o caracteres que ha escrito; haga clic en el smbolo para usarlo.
A fin de crear un nuevo smbolo para este bloque de funciones, escriba el nombre del smbolo
para crearlo y seleccione el objeto para asociarlo con el smbolo.
Consulte la Gua de funcionamiento de SoMachine Basic para obtener ms informacin sobre
el uso de smbolos.
4 Configure los parmetros disponibles de cada bloque de funciones, como se explica en el
tema "Parmetros" de las descripciones de cada bloque de funciones.

NOTA: Adems, puede visualizar la tabla Propiedades haciendo doble clic en el bloque de
funciones en un escaln.

EIO0000001477 12/2016 159


Objetos de software

Seccin 6.2
Temporizador (%TM)

Temporizador (%TM)

Uso de los bloques de funciones del temporizador


En esta seccin se proporcionan descripciones y directrices de programacin para utilizar bloques
de funciones Timer.

Contenido de esta seccin


Esta seccin contiene los siguientes apartados:
Apartado Pgina
Descripcin 161
Configuracin 162
TON: temporizador de retardo de conexin 164
TOF: temporizador de retardo de desconexin 167
TP: temporizador de pulso 169
Ejemplo de programacin 170

160 EIO0000001477 12/2016


Objetos de software

Descripcin

Introduccin

El bloque de funciones Timer se utiliza para especificar un periodo de tiempo antes de hacer
algo; por ejemplo, activar un evento.

Ilustracin
En esta ilustracin se muestra el bloque de funciones Timer.

Entradas
El bloque de funciones Timer contiene la siguiente entrada:

Etiqueta Descripcin Valor


IN Direccin (o Inicia el Timer cuando se detecta un flanco ascendente (tipos TON
instruccin) de entrada o TP) o un flanco descendente (tipo TOF).

Salidas
El bloque de funciones Timer contiene la siguiente salida:

Etiqueta Descripcin Valor


Q Direccin de salida El bit asociado %TMi.Q se establece en 1 (en funcin del tipo de
(%TMi.Q) Timer) cuando el Timer se agota.

EIO0000001477 12/2016 161


Objetos de software

Configuracin

Parmetros
Para configurar los parmetros, siga el procedimiento de configuracin de un bloque de funciones
(vase pgina 159) y lea la descripcin de las modalidades de asignacin de memoria en la Gua
de funcionamiento de SoMachine Basic.
El bloque de funciones Timer contiene los parmetros siguientes:

Parmetro Descripcin Rango Editable en


modalidad
online?
Utilizado Direccin utilizada Si est seleccionada, esta direccin se est utilizando No
actualmente en un programa.
Direccin Direccin del objeto de Un programa puede contener slo un nmero limitado No
Timer (%TMi) de objetos Timer. Consulte la gua de programacin
de la plataforma correspondiente para saber cul es el
nmero mximo de temporizadores.
Smbolo Smbolo El smbolo asociado con este objeto. Para obtener ms No
informacin, consulte Definicin y uso de los smbolos
en la Gua de funcionamiento de SoMachine Basic.
Tipo Tipo Timer Uno de los siguientes: S1
TON (vase pgina 164): Temporizador de retardo
de conexin (predeterminado)
TOF (vase pgina 167): Temporizador de retardo
de desconexin
TP (vase pgina 169): Temporizador de pulso
(monoestable)
Retentivo True/False Si no se ha seleccionado la casilla Retentivo (valor S1
predeterminado), el valor se restablece cuando se
detecta un flanco descendente del parmetro IN. El
conteo se reinicia desde 0.
Si se ha seleccionado la casilla Retentivo, el
temporizador retiene el valor cuando se detecta un
flanco descendente del parmetro IN antes de que se
alcance el valor Preajuste. El conteo se reinicia a partir
de este valor.
NOTA: La aplicacin debe estar configurada con un
nivel funcional como mnimo del Nivel 3.3 para poder
usar el parmetro Retentivo.

162 EIO0000001477 12/2016


Objetos de software

Parmetro Descripcin Rango Editable en


modalidad
online?
Base Base de tiempo La unidad de referencia de tiempo del temporizador. S1
Cuanto ms pequea sea la unidad de referencia del
temporizador, mayor ser la precisin del
temporizador:
1 ms (solo para las primeras seis instancias)
10 ms
100 ms
1s
1 min (predeterminado)

Preajuste Valor preestablecido 0 - 9999. El valor predeterminado es 9.999. S1


Periodo del temporizador = Preajuste x Base de tiempo
Retardo del temporizador = Preajuste x Base de
tiempo
Este valor preestablecido configurado puede leerse,
probarse y modificarse con el objeto asociado
%TMi.P.
Comentario Comentario Se puede asociar un comentario con este objeto. No
1
El temporizador se restablece de forma inmediata en 0 despus de cualquier cambio en el valor del parmetro en
modalidad online.

Objetos
El bloque de funciones Timer contiene los objetos siguientes:

Objeto Descripcin Rango


%TMi.P Valor Consulte la descripcin en la tabla Parmetros anterior.
preestablecido
%TMi.V Valor actual Palabra que aumenta de 0 al valor preestablecido %TMi.P cuando el
temporizador est en funcionamiento. El programa puede leer y
comprobar el valor, pero no escribir en l.
Su valor puede modificarse en una tabla de animacin.
%TMi.Q Salida Timer Consulte la descripcin en la tabla Salidas anterior.

EIO0000001477 12/2016 163


Objetos de software

TON: temporizador de retardo de conexin

Introduccin
Utilice el temporizador de tipo TON (On-Delay Timer) para controlar las acciones de retardo de
conexin. 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 Descripcin


Efecto de un reinicio en fro (%S0%=1) Fuerza el valor a 0. Establece el %TMi.Q de salida en 0. El valor
preestablecido se restablece al valor definido durante la
configuracin.
Efecto de un reinicio en caliente No tiene ningn efecto en el valor del temporizador ni en su valor
(%S1=1) preestablecido. El valor del temporizador no cambia durante un
corte de alimentacin.
Efecto de una detencin del controlador La detencin del controlador no inmoviliza el valor.
Efecto de un salto del programa Un salto sobre el bloque del temporizador no inmoviliza el
temporizador. El temporizador contina aumentando hasta que
alcanza el valor preestablecido (%TMi.P). En este punto, el bit de
Done (%TMi.Q) asignado a la salida Q del bloque del temporizador
cambia de estado. Sin embargo, la salida asociada conectada
directamente a la salida del bloque no se activa y el autmata no
la explora.
Comprobacin por bit %TMi.Q (bit Permite probar el bit %TMi.Q una sola vez en el programa.
Done)
Efecto de modificar el preajuste %TMi.P La modificacin del valor preestablecido mediante una instruccin
o un ajuste del valor con SoMachine Basic slo tiene efecto
cuando se vuelve a activar el temporizador.

164 EIO0000001477 12/2016


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.V aumenta de 0 a %TMi.P en incrementos de una unidad por cada pulso del parmetro de
la base de tiempo TB.
(3) El bit de salida %TMi.Q se define en 1 cuando el valor ha alcanzado el valor preestablecido %TMi.P.
(4) El bit de salida %TMi.Q permanece en 1 mientras la entrada IN est en 1.
(5) Si se detecta un flanco descendente en la entrada IN, el temporizador (Timer) se detiene aunque el
temporizador (Timer) no haya alcanzado el valor %TMi.P. %TMi.V se establece en 0

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.

(1) El Timer se inicia en el flanco ascendente de la entrada IN


(2) El valor %TMi.V aumenta de 0 a %TMi.P en incrementos de una unidad por cada pulso del parmetro de
la base de tiempo TB.
(3) En el flanco descendente de la entrada IN, el temporizador (Timer) se detiene y permanece sin cambios
a la espera del siguiente flanco ascendente de la entrada IN.

EIO0000001477 12/2016 165


Objetos de software

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

166 EIO0000001477 12/2016


Objetos de software

TOF: temporizador de retardo de desconexin

Introduccin
Utilice el tipo de temporizador TOF (Off-Delay Timer) de Timer para controlar las acciones
de retraso. Este retardo se puede programar mediante el software.

Diagrama de tiempos
En este diagrama se muestra el funcionamiento del tipo TOF Timer.

(1) En un flanco ascendente de la entrada IN, %TMi.Q se establece en 1.


(2) El Timer se inicia en el flanco descendente de la entrada IN.
(3) El valor %TMi.V aumenta hasta el valor preestablecido %TMi.P en incrementos de una unidad por cada
pulso del parmetro de la base de tiempo TB.
(4) El bit de salida %TMi.Q se restablece a 0 cuando el valor alcanza el valor preestablecido %TMi.P.
(5) En un flanco ascendente de la entrada IN, %TMi.V se establece en 0.
(6) En un flanco ascendente de la entrada IN, %TMi.V se establece en 0 aunque no se alcance el valor
preestablecido.

EIO0000001477 12/2016 167


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.

(1) En un flanco ascendente de la entrada IN, %TMi.Q se establece en 1.


(2) El Timer se inicia en el flanco descendente de la entrada IN.
(3) El valor %TMi.V aumenta hasta el valor preestablecido %TMi.P en incrementos de una unidad por cada
pulso del parmetro de la base de tiempo TB.
(4) En el flanco ascendente de la entrada IN, el temporizador se detiene y permanece sin cambios a la espera
del siguiente flanco descendente de la entrada IN.
(5) El bit de salida %TMi.Q se restablece a 0 cuando el valor alcanza el valor preestablecido %TMi.P.
(6) En un flanco ascendente de la entrada IN, %TMi.V se establece en 0 y %TMi.Q se establece en 1.

168 EIO0000001477 12/2016


Objetos de software

TP: temporizador de pulso

Introduccin
El Timer de tipo TP (temporizador de pulso) se emplea para generar pulsos de una duracin
determinada. Este retardo se puede programar mediante el software.

Diagrama de tiempos
En este diagrama se muestra el funcionamiento del Timer de tipo TP.

(1) El Timer se inicia en el flanco ascendente de la entrada IN. El valor actual %TMi.V se establece en 0 si
el Timer an no se ha iniciado y %TMi.Q se establece en 1 cuando se inicia el Timer.
(2) El valor actual %TMi.V del Timer aumenta de 0 al valor preestablecido %TMi.P en incrementos de 1
unidad por pulso del parmetro de la referencia de tiempo TB.
(3) El bit de salida %TMi.Q se establece en 0 cuando el valor actual ha alcanzado el valor preestablecido
%TMi.P.
(4) El valor actual %TMi.V se establece en 0 cuando %TMi.V es igual a %TMi.P y la entrada IN vuelve a 0.
(5) Este Timer no se puede restablecer.
(6) Cuando %TMi.V es igual a %TMi.P y la entrada IN se establece en 0, %TMi.Q se establece en 0.

EIO0000001477 12/2016 169


Objetos de software

Ejemplo de programacin

Introduccin
Los bloques de funciones Timer tienen las siguientes modalidades de funcionamiento:
TON (Timer On-Delay) (vase pgina 164) (temporizador de retardo de conexin): utilizado
para especificar un periodo de tiempo entre la activacin de una entrada especfica y el
encendido de un sensor de salida.
TOF (Timer Off-Delay) (vase pgina 167) (temporizador de retardo de desconexin): utilizado
para especificar un periodo de tiempo entre la no deteccin de una salida asociada con un
sensor y el apagado de la salida correspondiente.
TP (Timer - Pulse) (vase pgina 169) (temporizador de pulso): utilizado para generar un pulso
de duracin determinada.
Los retardos o periodos de pulsos de Timers se pueden programar y configurar desde el
software.

Programacin
Este ejemplo es un bloque de funciones Timer con instrucciones reversibles:

Escaln Instruccin reversible


0 BLK %TM0
LD %M0
IN
OUT_BLK
LD Q
ST %Q0.0
END_BLK
1 LD [%TM0.V<400]
ST %Q0.1
2 LD [%TM0.V>=400]
ST %Q0.2

En este ejemplo se muestra el mismo bloque de funciones Timer con instrucciones no


reversibles:

Escaln Instruccin no reversible


0 LD %M0
IN %TM0
1 LD %TM0.Q
ST %Q0.0

170 EIO0000001477 12/2016


Objetos de software

Escaln Instruccin no reversible


2 LD [%TM0.V<400]
ST %Q0.1
3 LD [%TM0.V>=400]
ST %Q0.2

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 18) para obtener el diagrama de
contactos equivalente.

EIO0000001477 12/2016 171


Objetos de software

Seccin 6.3
Contador (%C)

Contador (%C)

Uso de bloques de funciones del contador


En esta seccin se proporcionan descripciones y directrices de programacin para utilizar bloques
de funciones Counter.

Contenido de esta seccin


Esta seccin contiene los siguientes apartados:
Apartado Pgina
Descripcin 173
Configuracin 175
Ejemplo de programacin 178

172 EIO0000001477 12/2016


Objetos de software

Descripcin

Introduccin

El bloque de funciones Counter cuenta los eventos de forma progresiva y regresiva. Estas
2 operaciones se pueden realizar de manera simultnea.

Ilustracin
En esta ilustracin se presenta el bloque de funciones Counter.

Entradas
El bloque de funciones Counter contiene las siguientes entradas:

Etiqueta Descripcin Valor


R Restablecer entrada Establece el contador (%Ci.V) en 0 cuando la entrada de
(o instruccin) reseteado (R) se ha establecido en 1.
S Establecer entrada Establece el contador (%Ci.V) en el valor preestablecido (%Ci.P)
(o instruccin) cuando la entrada establecida (S) se ha establecido en 1.
CU Conteo progresivo Aumenta el valor del contador (%Ci.V) en 1 en un flanco
ascendente en la entrada Conteo progresivo (CU).
CD Conteo regresivo Disminuye el valor del contador (%Ci.V) en 1 en un flanco
ascendente en la entrada Conteo regresivo (CD).

EIO0000001477 12/2016 173


Objetos de software

Salidas
El bloque de funciones Counter contiene las siguientes salidas:

Etiqueta Descripcin Valor


E Desborde de conteo El bit asociado %Ci.E (contador vaco) se ha establecido en 1 cuando
regresivo el contador alcanza el valor 0. En caso de disminucin posterior, el
valor del contador pasa a 9.999.
D Salida El bit asociado %Ci.D (conteo realizado) se ha establecido en 1
predeterminada cuando %Ci.V = %Ci.P.
alcanzada
F Desborde de conteo El bit asociado %Ci.F=1 (contador completo), cuando %Ci.V cambia
progresivo de 9999 a 0 (establecido en 1 cuando %Ci.V alcanza 0 y se resetea
a 0 si el Counter contina con el conteo progresivo).

174 EIO0000001477 12/2016


Objetos de software

Configuracin

Parmetros
Para configurar los parmetros, siga el procedimiento de configuracin de un bloque de funciones
(vase pgina 159) y lea la descripcin de las modalidades de asignacin de memoria en la Gua
de funcionamiento de SoMachine Basic.
El bloque de funciones Counter contiene los parmetros siguientes:

Parmetro Descripcin Valor Editable en


modalidad
online?
Utilizado Direccin utilizada Si est seleccionada, esta direccin se est No
utilizando actualmente en un programa.
Direccin Direccin de objeto Un programa slo puede contener un nmero No
Counter limitado de objetos de contador. Consulte la gua
de programacin de su controlador para averiguar
el nmero de contadores.
Smbolo Smbolo El smbolo asociado con este objeto. Para obtener No
ms informacin, consulte Definicin y uso de los
smbolos en la Gua de funcionamiento de
SoMachine Basic.
Preajuste Valor preestablecido Valores aceptados por el valor preestablecido [0 S
9.999]. El valor predeterminado es 9.999. Este
valor configurado se puede leer, probar y modificar
utilizando el objeto asociado %Ci.P.
Comentario Comentario Se puede asociar un comentario con este objeto. No

Objetos
El bloque de funciones Counter contiene los objetos siguientes:

Objeto Descripcin Valor


%Ci.V Valor actual de Esta palabra aumenta o disminuye segn las entradas (o
Counter instrucciones) CU y CD (consulte la tabla de entradas
(vase pgina 173)). Solo se pueden leer.
Puede modificarse en una tabla de animacin.
%Ci.P Valor preestablecido Consulte la tabla de parmetros (vase pgina 175).
Puede modificarse en una tabla de animacin.
%Ci.E Vaco Consulte la tabla de salidas (vase pgina 174).
Puede modificarse en una tabla de animacin.

EIO0000001477 12/2016 175


Objetos de software

Objeto Descripcin Valor


%Ci.D Terminado Consulte la tabla de salidas (vase pgina 174).
Puede modificarse en una tabla de animacin.
%Ci.F Completo Consulte la tabla de salidas (vase pgina 174).
Puede modificarse en una tabla de animacin.

Operaciones
En esta tabla se describen las principales fases de las operaciones del bloque de funciones
Counter:

Operacin Accin Resultado


Restablecer La entrada R se establece en el estado El valor actual %Ci.V se fuerza a 0. Las
1 (o se activa la instruccin R). salidas %Ci.E, %Ci.D y %Ci.F estn a 0.
La entrada de restablecimiento tiene
prioridad.
Establecer Si la entrada S se establece en 1 (o si El valor actual %Ci.V toma el valor %Ci.P y
se activa la instruccin S) y la entrada la salida %Ci.D se establece en 1.
restablecida est en el estado 0 (o la
instruccin R est inactiva).
Conteo Aparece un flanco ascendente en la El valor actual %Ci.V aumenta en una
entrada de conteo progresivo CU (o se unidad.
activa la instruccin CU).
El valor actual %Ci.V es igual al valor El bit de salida "preajuste alcanzado" %Ci.D
preestablecido %Ci.P. cambia a 1.
El valor actual %Ci.V cambia de 9999 El bit de salida %Ci.F (desborde de conteo
a 0. progresivo) cambia a 1.
Si el Counter contina con el conteo El bit de salida %Ci.F (desborde de conteo
progresivo. progresivo) se restablece a 0.
Conteo regresivo Aparece un flanco ascendente en la El valor actual %Ci.V disminuye en una
entrada de conteo regresivo CD (o se unidad.
activa la instruccin CD).
El valor actual %Ci.V cambia de 0 a El bit de salida %Ci.E (desborde de conteo
9999. regresivo) cambia a 1.
Si el Counter contina con el conteo El bit de salida %Ci.F (desborde de conteo
regresivo. regresivo) se restablece a 0.

176 EIO0000001477 12/2016


Objetos de software

Casos especiales
En esta tabla se muestra una lista de casos de configuracin/funcionamiento especiales para el
bloque de funciones Counter:

Caso especial Descripcin


Efecto de un reinicio en fro (%S0=1) o INIT El valor actual %Ci.V se establece en 0.
Los bits de salida %Ci.E, %Ci.D, y %Ci.F se
establecen en 0.
El valor preestablecido se inicializa con el valor definido
durante la configuracin.
Efecto de un reinicio en caliente (%S1=1) de No tiene ningn efecto en el valor actual de Counter
una detencin del controlador (%Ci.V).
Efecto de modificar el preajuste %Ci.P La modificacin del valor preestablecido mediante una
instruccin o ajustndolo entra en vigor cuando la
aplicacin procesa el bloque (activacin de una de las
entradas).

NOTA: El efecto de INIT es el mismo que %S0=1.

EIO0000001477 12/2016 177


Objetos de software

Ejemplo de programacin

Introduccin
El ejemplo siguiente muestra un contador que permite contar hasta un mximo de 5.000
elementos. Cada pulso de entrada %I0.2 (cuando el bit de memoria %M0 est establecido en 1)
aumenta el bloque de funciones Counter %C8 hasta su valor preestablecido final (bit %C8.D=1). El
contador se restablece mediante la entrada %I0.1.

Programacin
Este ejemplo es un bloque de funciones Counter con instrucciones reversibles:

Escaln Instruccin reversible


0 BLK %C8
LD %I0.1
R
LD %I0.2
AND %M0
CU
END_BLK
1 LD %C8.D
ST %Q0.0

En este ejemplo se muestra el mismo bloque de funciones Counter con instrucciones no


reversibles:

Escaln Instruccin no reversible


0 LD %I0.1
R %C8
1 LD %I0.2
AND %M0
CU %C8
2 LD %C8.D
ST %Q0.0

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 18) para obtener el diagrama de
contactos equivalente.

Configuracin
Durante la configuracin, deben introducirse los parmetros:
En este ejemplo, el valor Preajuste (%Ci.P): se establece en 5.000.

178 EIO0000001477 12/2016


Objetos de software

Ejemplo de un contador progresivo/regresivo


Esta ilustracin es un ejemplo de un bloque de funciones Counter.

En este ejemplo, %M0 es la orden de aumento (%M0 = Falso) y de disminucin (%M0 = Verdadero).
El contador realiza un conteo del flanco frontal de %I0.0. Si %M0 est establecido en False, en
cada flanco frontal de %I0.0, %C1.V aumenta hasta el valor preestablecido %C1.P y el indicador
Finalizado %C1.D cambia a TRUE. La salida %C1.D establece %M0 y cambia la instruccin en
orden de disminucin. En cada flanco frontal de %I0.0, %C1.V disminuir hasta llegar a 0. El
indicador Vaco (%C1.E) se enciende y restablece %M0 (orden de incremento).

EIO0000001477 12/2016 179


Objetos de software

Seccin 6.4
Mensaje (%MSG) e intercambio (EXCH)

Mensaje (%MSG) e intercambio (EXCH)

Uso de los bloques de funciones del mensaje


En esta seccin se proporcionan descripciones y directrices de programacin para utilizar bloques
de funciones Message.

Contenido de esta seccin


Esta seccin contiene los siguientes apartados:
Apartado Pgina
Descripcin general 181
Descripcin 183
Configuracin 187
Ejemplo de programacin 192
Ejemplos de ASCII 194
Peticiones y ejemplos estndar Modbus 196

180 EIO0000001477 12/2016


Objetos de software

Descripcin general

Introduccin
Un controlador lgico puede configurarse para comunicarse en el protocolo Modbus o puede
enviar o recibir mensajes en modalidad de caracteres (ASCII).
SoMachine Basic ofrece las siguientes funciones para este tipo de comunicaciones:
Instruccin de Intercambio (EXCH) para transmitir/recibir mensajes.
Bloque de funciones Message (%MSG) para controlar los intercambios de datos.

Cuando se procesa una instruccin de Intercambio el controlador lgico utiliza el protocolo


configurado para el puerto especificado. A cada puerto de comunicacin se le puede asignar un
protocolo distinto. Es posible acceder a los puertos de comunicacin agregando el nmero de
puerto a la instruccin de Intercambio (EXCH1, EXCH2) o el bloque de funciones Message (%MSG1,
%MSG2).
Los controladores lgicos implementan mensajes Modbus TCP en la red Ethernet utilizando la
instruccin EXCH3 y el bloque de funciones %MSG3.
En esta tabla se muestra la instruccin de Intercambio y el bloque de funciones Message que
permiten acceder a los puertos de comunicacin del controlador:

Puerto de comunicacin Instruccin de intercambio Bloque de funciones del mensaje


2 lneas serie EXCH1 %MSG1
EXCH2 %MSG2
1 lnea serie y 1 Ethernet EXCH1 %MSG1
EXCH3 %MSG3

Instruccin de intercambio
La instruccin de Intercambio permite a un controlador lgico enviar o recibir informacin dirigida
a dispositivos ASCII o Modbus o procedente de ellos. El usuario define una tabla de palabras
(%MWi:L) que contiene la informacin de control y los datos que se enviarn o recibirn. Consulte
Configuracin de la tabla de transmisin (vase pgina 188). El intercambio de mensajes se
realiza mediante la instruccin de Intercambio.

Sintaxis
A continuacin, se muestra el formato de la instruccin de Intercambio:
[EXCHx %MWi:L]
Donde: x = nmero de puerto; L = nmero total de palabras de la tabla de palabras.
El controlador lgico debe finalizar el intercambio desde la primera instruccin de Intercambio
antes de que se pueda iniciar una segunda instruccin de Intercambio. Se debe utilizar el bloque
de funciones Message cuando se enven varios mensajes.

EIO0000001477 12/2016 181


Objetos de software

Protocolo ASCII
El protocolo ASCII proporciona al Logic Controller un protocolo de modalidad de caracteres simple
que permite transmitir o recibir datos mediante un dispositivo simple. Este protocolo se admite
mediante la instruccin de Intercambio y se controla mediante el bloque de funciones Message.
Pueden utilizarse los tres tipos de comunicaciones siguientes con el protocolo ASCII:
Solo transmisin
Transmisin/recepcin
Solo recepcin

Protocolo Modbus
Si se trata de una conexin serie, el protocolo Modbus es un protocolo maestro/esclavo que
permite a un nico maestro solicitar respuestas de los esclavos o realizar acciones dependiendo
de las peticiones. En Ethernet, diversos maestros (clientes) pueden intercambiar con un esclavo
(servidor). Cada esclavo debe tener una direccin exclusiva. El maestro puede dirigirse a los
esclavos individuales o iniciar un mensaje de difusin para todos los esclavos. Los esclavos
devuelven un mensaje (respuesta) a las peticiones que se les envan individualmente. No se
devuelven respuestas a las peticiones de difusin del maestro.
La modalidad maestro Modbus permite al controlador enviar una peticin Modbus a un esclavo y
esperar una respuesta. La modalidad maestro Modbus slo se admite a travs de la instruccin
de Intercambio. La modalidad maestro Modbus admite Modbus ASCII y Modbus RTU.
La modalidad esclavo Modbus permite al controlador responder a las peticiones Modbus estndar
procedentes de un maestro Modbus.
Para obtener informacin detallada sobre el protocolo Modbus, consulte el documento Protocolo
de aplicacin Modbus que est disponible en http://www.modbus.org.

Esclavo Modbus
El protocolo Modbus admite dos capas de conexin de datos de los formatos del modelo OSI:
ASCII y RTU. Cada uno est definido mediante la implementacin de la capa fsica: ASCII utiliza
7 bits de datos y RTU utiliza 8 bits de datos.
Cuando se utiliza la modalidad Modbus ASCII, cada byte del mensaje se enva como dos
caracteres ASCII. La trama Modbus ASCII comienza con un carcter inicial (':') y finaliza con dos
caracteres finales (CR y LF). El carcter de final de trama est predeterminado en 0x0A (LF). El
valor de comprobacin de la trama Modbus ASCII es un complemento a dos simple de la trama,
excluyendo los caracteres inicial y final.
La modalidad Modbus RTU no vuelve a formatear el mensaje antes de enviarlo; sin embargo,
utiliza una modalidad de clculo de suma de comprobacin diferente, especificado como CRC.
La capa de conexin de datos de Modbus tiene las limitaciones siguientes:
Direccin 1-247
Bits: 128 bits previa peticin
Palabras: 125 palabras de 16 bits previa peticin

182 EIO0000001477 12/2016


Objetos de software

Descripcin

Introduccin

El Message bloque de funciones gestiona el intercambio de datos. Tiene tres funciones:


Comprobacin de errores de comunicacin:
La comprobacin de errores verifica el tamao de cada tabla de intercambio y la validez del
intercambio en relacin con la configuracin.
Coordinacin de varios mensajes:
Para garantizar la coordinacin cuando se envan varios mensajes, el bloque de funciones
Message proporciona la informacin necesaria para determinar el momento en el que ha
finalizado el mensaje anterior.
Transmisin de mensajes prioritarios:
El Message bloque de funciones permite que la transmisin del mensaje en curso se detenga
para permitir el envo inmediato de un mensaje urgente.
La programacin del bloque de funciones Message es opcional.
Cuando se detectan errores, los cdigos se escriben en las palabras de sistema %SW63, %SW64,
y %SW65 para los bloques de intercambio EXCH1, EXCH2 y EXCH3, respectivamente. Para obtener
ms informacin, consulte la Gua de programacin del controlador.

Ilustracin
En esta ilustracin se presenta el bloque de funciones Message:

EIO0000001477 12/2016 183


Objetos de software

Entradas
El bloque de funciones Message contiene la siguiente entrada:

Etiqueta Descripcin Valor


R Restablecer entrada Establecido en 1: reinicializa la comunicacin:
(%MSGx.R) La salida de Comunicacin finalizada (%MSGx.D) se establece en 1

La salida de Error de comunicacin detectado (%MSG.E) se


establece en 0
Se establece un error en cualquier bloque de funciones activo
(%READ_VAR, %WRITE_VAR, etc.).
NOTA: En un puerto de comunicacin slo puede estar activo un bloque
de funciones Message, una instruccin EXCH o un bloque de funciones
de comunicacin a la vez durante un ciclo de tarea maestra. Si intenta
utilizar varios bloques de funciones de comunicacin, MSG o
instrucciones EXCH a la vez en el mismo puerto de comunicacin, los
bloques de funciones devuelven un cdigo de error. Por consiguiente,
verifique que no hay ningn intercambio activo (%MSGx.D es TRUE) en
curso en un puerto de comunicacin antes de iniciar un bloque de
funciones de comunicacin, bloque de funciones Message o instruccin
EXCH. Verifique tambin que el IOScanner no est activo en el puerto de
comunicacin.
NOTA: El IOScanner no actualiza las salidas del bloque de funciones
%MSG. Por consiguiente, el bit %MSG.D es inadecuado para la funcin del
IOScanner.

Salidas
El bloque de funciones Message contiene las siguientes salidas:

Etiqueta Descripcin Valor


D Comunicacin Estado 1:
finalizada Final de la transmisin (si hay transmisin)
(%MSGx.D) Final de la recepcin (carcter final recibido)
Error
Restablecimiento del bloque

Estado 0: peticin en curso


E Error de Estado 1:
comunicacin Comando sin definir
detectado Tabla mal configurada
(%MSGx.E) Carcter incorrecto recibido (velocidad, paridad, etc.)
Tabla de recepcin llena (no actualizada)

Estado 0: longitud del mensaje correcta, conexin establecida


En la tabla siguiente se indican los cdigos de error que se escriben en
las palabras de sistema cuando se detecta un error de comunicacin.

184 EIO0000001477 12/2016


Objetos de software

Cdigos de error de comunicacin


En esta tabla se describen los cdigos de error que se escriben en las palabras de sistema cuando
se detecta un error de comunicacin:

Palabra de Funcin Descripcin


sistema
%SW63 Cdigo de Cdigo de error EXCH1:
error del 0: operacin correcta
bloque 1: el nmero de bytes que se va a transmitir excede el lmite (> 255)
EXCH1 2: tabla de envo insuficiente
3: tabla de palabras insuficiente
4: tabla de recepcin desbordada
5: tiempo de inactividad transcurrido
6: envo
7: comando incorrecto en la tabla
8: puerto seleccionado no configurado/disponible
9: error de recepcin: Este cdigo de error refleja una trama de recepcin
incorrecta o daada. Puede utilizarse debido a una configuracin incorrecta
en los parmetros fsicos (por ejemplo, paridad, bits de datos, velocidad en
baudios, etc.) o a una conexin fsica inestable que causa un
empeoramiento de la seal.
10: no se puede utilizar %KW si se est recibiendo
11: offset de envo mayor que la tabla de envo
12: offset de recepcin mayor que la tabla de recepcin
13: procesamiento EXCH detenido por el controlador
%SW64 Cdigo de Cdigo de error EXCH2: consulte %SW63.
error del
bloque
EXCH2

EIO0000001477 12/2016 185


Objetos de software

Palabra de Funcin Descripcin


sistema
%SW65 Cdigo de 1-4, 6-13: consulte %SW63. (Tenga en cuenta que el cdigo de error 5 no
error del es vlido y se sustituye por los cdigos de error 109 y 122 especficos de
bloque Ethernet que se describen a continuacin).
EXCH3 A continuacin, se indican los cdigos de error especficos de Ethernet:
101: direccin IP incorrecta
102: sin conexin TCP
103: no hay sockets disponibles (todos los canales de conexin estn
ocupados).
104: no hay red.
105: no se puede alcanzar la red.
106: la red perdi la conexin durante el restablecimiento.
107: conexin cancelada por el dispositivo del mismo nivel.
108: conexin restablecida por el dispositivo del mismo nivel.
109: temporizacin de conexin transcurrida.
110: intento de conexin rechazado.
111: el host no funciona.
120: ndice incorrecto (el dispositivo remoto no est indexado en la tabla de
configuracin)
121: error del sistema (MAC, chip, IP duplicada)
122: ha finalizado el tiempo de conexin del proceso de recepcin tras el
envo de los datos
123 - Inicio de Ethernet en curso.

186 EIO0000001477 12/2016


Objetos de software

Configuracin

Error detectado
Si se ha detectado un error al utilizar una instruccin de intercambio, los bits %MSGx.D y %MSGx.E
se establecen en 1, la palabra del sistema %SW63 contiene el cdigo de error para el puerto 1, y
%SW64 contiene el cdigo de error para el puerto 2. Consulte el captulo Palabras de sistema de
la Gua de programacin del logic controller.

Operaciones
En esta tabla se describen las principales fases de las operaciones del bloque de funciones
Message:

Operacin Accin Resultado


Restablecer La entrada R se establece en el Se detiene la transmisin de todos los mensajes que
estado 1 (o se activa la se estn transmitiendo.
instruccin R). La salida del error de comunicacin se restablece a
0.
El bit de finalizacin se establece en 1.

Se puede enviar un mensaje nuevo.


Comunicacin La salida D se establece en el El Logic Controller est preparado para enviar otro
finalizada estado 1. mensaje. Uso del bit %MSGx.D para evitar la prdida de
mensajes cuando se envan varios mensajes.
Error de La salida del error de comunicacin se establece en 1:
comunicacin Debido a un error de programacin de comunicaciones o a un error de transmisin de
detectado mensajes.
Si el nmero de bytes definido en el bloque de datos asociado a la instruccin de
Intercambio (palabra 1, byte menos significativo) es mayor que 128 (+80 en formato
hexadecimal por FA).
Si existe algn problema al enviar un mensaje Modbus a un dispositivo Modbus. En este
caso, debe comprobar el cableado y que el dispositivo de destino sea compatible con la
comunicacin Modbus.

Casos especiales
Esta tabla contiene una lista de casos especiales para el funcionamiento de Message:

Caso especial Descripcin


Efecto de un reinicio en fro (%S0=1) o INIT Fuerza la reinicializacin de la comunicacin.
Efecto de un reinicio en caliente (%S1=1) No tiene ningn efecto.
Efecto de una detencin del controlador Si se est transmitiendo un mensaje, el controlador detiene
la transferencia y reinicializa las salidas %MSGx.D y
%MSGx.E.

EIO0000001477 12/2016 187


Objetos de software

NOTA: El efecto de INIT es el mismo que %S0=1.

Limitaciones
Tenga en cuenta las siguientes limitaciones:
La disponibilidad (para protocolo ASCII) y el tipo del puerto 2 (consulte %SW7) solo se
comprueban en el encendido o reseteado.
La presencia (para protocolo Modbus) y configuracin (RS-485) del puerto 2 se comprueban
durante el encendido o restablecimiento.
El procesamiento de cualquier mensaje en el puerto 1 se cancela cuando SoMachine Basic
est conectado.
Las instrucciones de Intercambio anulan los procesamientos del esclavo Modbus activo.
El procesamiento de las instrucciones de Intercambio no se repite en caso de error detectado.
La entrada de restablecimiento (R) puede utilizarse para anular el procesamiento de recepcin
de la instruccin de Intercambio.
Las instrucciones de Intercambio se configuran con un timeout en caso de protocolo Modbus.
Los mensajes mltiples se controlan a travs de %MSGx.D

Configuracin de la tabla de transmisin/recepcin


El tamao mximo de las tramas enviadas o recibidas es de:
250 bytes para protocolo Modbus.
256 bytes para protocolo ASCII.

La tabla de palabras asociada a la instruccin de Intercambio consta de las tablas de control,


transmisin y recepcin:

Byte ms significativo Byte menos significativo


Modbus ASCII Modbus ASCII
Tabla de control Comando Longitud (transmisin/recepcin)
Offset de recepcin Reservado (0) Offset de transmisin Reservado (0)
Tabla de Byte 1 transmitido Byte 2 transmitido
transmisin
...
...
Byte n transmitido
Byte n+1 transmitido
Tabla de recepcin Byte 1 recibido Byte 2 recibido
...
...
Byte p recibido
Byte p+1 recibido

188 EIO0000001477 12/2016


Objetos de software

NOTA: Adems de las peticiones a los esclavos individuales, el controlador maestro Modbus
puede iniciar una peticin de difusin destinada a todos los esclavos. En caso de peticin de
difusin, el byte Comando debe establecerse en 00, mientras que la direccin de esclavo debe
establecerse en 0.

Tabla de control para protocolo ASCII


El byte Longitud contiene la longitud de la tabla de transmisin en bytes (250 mx.), sobrescrita
por el nmero de caracteres recibidos al final de la recepcin, en caso de que sta se solicite.
El byte Comando debe contener uno de los siguientes elementos:
0: Solo transmisin
1: Envo/recepcin
2: Solo recepcin

Tabla de control para protocolo Modbus


El byte Longitud contiene la longitud de la tabla de transmisin en bytes (250 mx.), sobrescrita
por el nmero de caracteres recibidos al final de la recepcin, en caso de que sta se solicite.
Este parmetro es la longitud en bytes de la tabla de transmisin. Si el parmetro Offset de
emisin es igual a 0, este parmetro ser igual a la longitud de la trama de transmisin. Si el
parmetro Offset de emisin no es igual a 0, no se transmitir un byte de la tabla de transmisin
(indicado por el valor de offset) y este parmetro ser igual a la longitud de la propia trama ms 1.
El byte de comando, en caso de que se produzca una peticin RTU de Modbus (excepto para
difusin), siempre debe ser igual a 1 (Tx y Rx). Para difusin, debe ser 0.
El byte Offset de emisin contiene el rango (1 para el primer byte, 2 para el segundo byte, etc.)
dentro de la tabla de transmisin del byte que se ignorar cuando se transmitan los bytes. Se
utiliza para gestionar envos asociados a valores de byte/palabra en el protocolo Modbus. Por
ejemplo, si este byte contiene 3, el tercer byte se ignorar, haciendo que el cuarto byte de la tabla
sea el tercero en transmitirse.
El byte Offset de recepcin contiene el rango (1 para el primer byte, 2 para el segundo byte, etc.)
dentro de la tabla de recepcin que se agregar cuando se transmita el paquete. Se utiliza para
gestionar envos asociados a valores de byte/palabra en el protocolo Modbus. Por ejemplo, si este
byte contiene 3, el tercer byte de la tabla se rellenara con un 0, y el tercer byte que ha recibido se
introducira en la cuarta ubicacin de la tabla.

EIO0000001477 12/2016 189


Objetos de software

Tablas de transmisin/recepcin para protocolo ASCII


En modalidad de slo transmisin, las tablas de control y transmisin de tipo %MW se rellenan
antes de ejecutar la instruccin de intercambio (EXCH). En la modalidad de slo transmisin no
se requiere espacio para la recepcin de caracteres. Una vez que se han enviado todos los bytes,
%MSGx.D se establece en 1 y se puede ejecutar una nueva instruccin de intercambio (EXCH).
En la modalidad de transmisin/recepcin, las tablas de control y de transmisin se completan
antes de ejecutar la instruccin de intercambio (EXCH), y deben ser de tipo %MW. Se requiere
espacio para un mximo de 256 bytes de recepcin al final de la tabla de transmisin. Cuando se
han transmitido todos los bytes, el controlador lgico cambia a la modalidad de recepcin y est
preparado para recibir bytes.
En la modalidad de slo recepcin, la tabla de control se rellena antes de ejecutar la instruccin
de intercambio y debe ser del tipo %MW. Se requiere espacio para un mximo de 256 bytes de
recepcin al final de la tabla de control. El controlador lgico pasa inmediatamente a la modalidad
de recepcin y est preparado para recibir bytes.
La recepcin finaliza cuando se recibe el ltimo byte utilizado para la trama o se llena la tabla de
recepcin. En este caso, aparece un cdigo de error detectado (tabla de recepcin desbordada)
en las palabras de sistema %SW63 y %SW64. Si se configura un timeout diferente de cero, la
recepcin finaliza cuando termina el timeout. Si se selecciona un timeout de valor cero, no habr
ningn timeout de recepcin. Por consiguiente, para detener la recepcin, la entrada %MSGx.R
deber estar activada.

Tablas de transmisin/recepcin para protocolo Modbus


Al utilizar cualquiera de las dos modalidades (Modbus ASCII o Modbus RTU), la tabla de
transmisin se completa con la peticin antes de ejecutar la instruccin de intercambio (EXCH).
En el momento de la ejecucin, el controlador lgico determina cul es la capa de conexin de
datos y realiza todas las conversiones necesarias para procesar la transmisin y la respuesta. Los
caracteres de inicio, fin y comprobacin no se almacenan en las tablas de transmisin/recepcin.
Cuando se han transmitido todos los bytes, el controlador lgico cambia a la modalidad de
recepcin y est preparado para recibir bytes.
La recepcin finaliza de una de las formas siguientes:
Se detecta un timeout en un carcter o en una trama.
Los caracteres de fin de trama se reciben en modalidad ASCII.
La tabla de recepcin est llena.

Las entradas x del byte transmitido contienen los datos del protocolo Modbus (codificacin RTU)
que se van a transmitir. Si el puerto de comunicacin est configurado para Modbus ASCII, los
caracteres de trama correctos se agregan a la transmisin. El primer byte contiene la direccin del
dispositivo (especfica o de difusin), el segundo byte contiene el cdigo de funcin y el resto
contiene informacin asociada a ese cdigo de funcin.
NOTA: Se trata de una aplicacin tpica, pero que no define todas las posibilidades. No se
realizar ninguna validacin de los datos que se estn transmitiendo.

190 EIO0000001477 12/2016


Objetos de software

Las entradas x de los bytes recibidos contienen los datos del protocolo Modbus (codificacin RTU)
que se van a recibir. Si el puerto de comunicacin est configurado para Modbus ASCII, los
caracteres de trama correctos se eliminan de la respuesta. El primer byte contiene la direccin del
dispositivo, el segundo byte contiene el cdigo de funcin (o cdigo de respuesta) y el resto
contiene informacin asociada a ese cdigo de funcin.
NOTA: Se trata de una aplicacin tpica, pero que no define todas las posibilidades. No se
realizar ninguna validacin de los datos que se estn recibiendo, salvo para la verificacin de la
suma de comprobacin.

EIO0000001477 12/2016 191


Objetos de software

Ejemplo de programacin

Introduccin
A continuacin se muestran ejemplos de programacin de un bloque de funciones Message.

Programacin de una transmisin de varios mensajes sucesivos


La ejecucin de la instruccin Intercambio activa un bloque de funciones Message en el programa
de aplicacin. El mensaje se transmite si el bloque de funciones Message todava no est activo
(%MSGx.D = 1). Si se envan varios mensajes en el mismo ciclo, slo el primer mensaje se
transmite utilizando el mismo puerto.
Ejemplo de transmisin de dos mensajes sucesivos en el puerto 1:

Escaln Instruccin reversible Comentario


0 LD %M142 Escribe en un esclavo, en la direccin 1: valor
[%MW2:=16#0106] 7 en el registro 4.
[%MW3:=0] [%MW2:=16#0106]: Cdigo de comando:
[%MW4:=16#0106] 01 hex, longitud de la transmisin: 06 hex
[%MW5:=4] [%MW3:=0]: Sin recepcin ni offset de
[%MW6:=7] transmisin
[%MW4:=16#0106]: Direccin esclavo:
01 hex, cdigo de funcin: 06 hex (Escritura de
registro nico)
[%MW5:=4]: Direccin de registro
[%MW6:=7]: Valor que va a escribirse
1 LD %MSG1.D %MSG2.D: detecta si el puerto est ocupado o
AND %M0 no y gestiona la coordinacin de mltiples
[EXCH1 %MW2:8] mensajes en consecuencia.
R %M0
2 LDR %I0.0
AND %MSG1.D
[EXCH1 %MW2:8]
S %M0

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 18) para obtener el diagrama de
contactos equivalente.

192 EIO0000001477 12/2016


Objetos de software

Programacin de un intercambio de reinicializacin


Un intercambio se cancela activando la entrada (o instruccin) R. Esta entrada inicializa la
comunicacin y restablece la salida %MSGx.E a 0 y la salida %MSGx.D a 1. Permite reinicializar un
intercambio si se detecta un error.
Ejemplo de reinicializacin de un intercambio:

Escaln Instruccin reversible Comentario


0 BLK %MSG1
LD %M0
R
END_BLK

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 18) para obtener el diagrama de
contactos equivalente.

EIO0000001477 12/2016 193


Objetos de software

Ejemplos de ASCII

Escritura en aplicacin
Ejemplo de aplicacin ASCII:

Escaln Instruccin Comentario


0 LD 1 [%MW10:=16#0104]: Cdigo de comando: 01 hex, longitud
[%MW10:=16#0104] de la transmisin: 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.
AND %MSG2.D
[EXCH2 %MW10:8]
2 LD %MSG2.E
ST %Q0.0
END

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 18) para obtener el diagrama de
contactos equivalente.
Use SoMachine Basic para crear un programa con tres escalones:
En primer lugar, inicialice las tablas de control y de transmisin que va a utilizar para la
instruccin de Intercambio. En este ejemplo se configura un comando para enviar y recibir
datos. La cantidad de datos a enviar se establece en 4 bytes, como se define en la aplicacin,
seguido por el carcter de fin de trama definido en la configuracin. Los caracteres de inicio y
fin no se visualizan en una tabla de animacin, pues solo se muestran caracteres de datos. En
cualquier caso, cuando se utilizan, estos caracteres se transmiten automticamente o se
verifican en la recepcin (con %SW63 y %SW64).
NOTA: Los caracteres de fin definidos en la configuracin se envan automticamente al final
de la trama. Por ejemplo, si ha configurado el primer carcter de fin en 10 y el segundo carcter
de fin en 13, 16#0A0D (cdigos ASCII, 0A = LF y 0D = CR) se enva al final de la trama.
A continuacin, compruebe el bit de estado asociado a %MSG2 y enve la instruccin EXCH2,
solo si el puerto est preparado. Se especifica un valor de ocho palabras para la instruccin
EXCH2. Existen dos palabras de control (%MW10 y %MW11), dos palabras que se usarn para
transmitir informacin (%MW12 y %MW13) y cuatro palabras para recibir datos (de %MW14 a
%MW17).
Finalmente, el estado del error detectado del %MSG2 se detecta y almacena en el primer bit de
salida de la E/S del controlador base local. Para conseguir ms precisin, podra aadirse un
tratamiento adicional del error utilizando %SW64.

194 EIO0000001477 12/2016


Objetos de software

Inicializacin de la tabla de animacin


Ejemplo de inicializacin de una tabla de animacin en la modalidad online:

Direccin 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, haga clic con el botn derecho en la casilla Valores de la
tabla de animacin.
El ltimo paso consiste en descargar la aplicacin al controlador y ejecutarla. Inicialice una tabla
de animacin para animar y visualizar las palabras de %MW10 a %MW16. Esta informacin se
intercambia con el controlador lgico y se visualiza en una tabla de animacin.

EIO0000001477 12/2016 195


Objetos de software

Peticiones y ejemplos estndar Modbus

Maestro Modbus: lectura de N bits


En esta tabla se representan las peticiones 01 y 02 (01 para el bit de memoria o salida; 02 para el
bit de entrada):

Tabla Byte ms significativo Byte menos significativo


ndice
Tabla de control 0 01 06 (longitud de transmisin)(1)
(transmisin/recepcin)
1 03 (offset de recepcin) 00 (offset de transmisin)
Tabla de 2 Esclavo en (de 1 a 247) 01 02 (cdigo de peticin)
transmisin
3 Direccin del primer bit que se leer en el esclavo
4 N1 = Nmero de bits que se van a leer
Tabla de recepcin 5 Esclavo en (de 1 a 247) 01 02 (cdigo de respuesta)
(despus de la 6 00 (byte aadido por la N2
respuesta)
accin offset de = Nmero de bytes de datos que
recepcin) se van a leer
= [1+(N1-1)/8],
donde el resultado es la parte
entera de la divisin.
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
... ... ...
(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 tambin recibe la longitud de la cadena transmitida tras la respuesta..

196 EIO0000001477 12/2016


Objetos de software

Maestro Modbus: lectura de N palabras


En esta tabla se representan las peticiones 03 y 04 (03 para la palabra de memoria o salida; 04
para la palabra de entrada):

Tabla Byte ms significativo Byte menos significativo


ndice
Tabla de control 0 01 (transmisin/recepcin) 06 (longitud de transmisin)(1)
1 03 (offset de recepcin) 00 (offset de transmisin)
Tabla de transmisin 2 Esclavo en (de 1 a 247) 03 04 (cdigo de peticin)
3 Direccin de la primera palabra que se va a leer
4 N = Nmero de palabras que se van a leer
Tabla de recepcin 5 Esclavo en (de 1 a 247) 03 04 (cdigo de respuesta)
(despus de la 6 00 (byte aadido por la accin 2*N (nmero de bytes ledos)
respuesta)
offset de recepcin)
7 Primera palabra leda
8 Segunda palabra leda (si N>1)
... ...
N+6 Palabra N leda (si N>2)
(1) Este byte tambin recibe la longitud de la cadena transmitida tras la respuesta..

NOTA: El offset de recepcin de 3 agrega un byte (valor = 0) en la tercera posicin de la tabla de


recepcin. Esto permite un buen posicionamiento en esta tabla del nmero de bytes ledos y de
los valores de las palabras ledas.

Maestro Modbus: escritura de un bit


En esta tabla se representa la peticin 05 (escriba un solo bit: salida o memoria):

Tabla Byte ms significativo Byte menos significativo


ndice
Tabla de control 0 01 (transmisin/recepcin) 06 (longitud de transmisin)(1)
1 00 (offset de recepcin) 00 (offset de transmisin)
(1) Este byte tambin recibe la longitud de la cadena transmitida tras la respuesta..
(2) Para asignar el valor 1 a un bit, la palabra asociada en la tabla de transmisin debe contener el valor
FF00h, y 0 para asignar el valor 0 a un bit.

EIO0000001477 12/2016 197


Objetos de software

Tabla Byte ms significativo Byte menos significativo


ndice
Tabla de transmisin 2 Esclavo en (de 1 a 247) o 0 en 05 (cdigo de peticin)
caso de difusin
3 Valor que se va a escribir para el MSB de la palabra indexada 4;
0xFF o 0x00(2).
4 Valor de bit que se va a escribir en el esclavo (16#0000 = Falso y
16#FF00 = Verdadero)
Tabla de recepcin 5 Esclavo en (de 1 a 247) 05 (cdigo de respuesta)
(despus de la 6 Direccin del bit escrito
respuesta)
7 Valor escrito
(1) Este byte tambin recibe la longitud de la cadena transmitida tras la respuesta..
(2) Para asignar el valor 1 a un bit, la palabra asociada en la tabla de transmisin debe contener el valor
FF00h, y 0 para asignar el valor 0 a un bit.

NOTA:
Esta peticin no necesita utilizar un offset.
La trama de respuesta es la misma que la de esta peticin (en un caso normal).

Maestro Modbus: escritura de palabra


En esta tabla se representa la peticin 06 (escriba un solo bit: salida o memoria):

Tabla Byte ms significativo Byte menos significativo


ndice
Tabla de control 0 01 (transmisin/recepcin) 06 (longitud de transmisin)(1)
1 00 (offset de recepcin) 00 (offset de transmisin)
Tabla de transmisin 2 Esclavo en (de 1 a 247) o 0 en 06 (cdigo de peticin)
caso de difusin
3 Direccin de la palabra que se va a escribir
4 Valor de la palabra que se va a escribir
Tabla de recepcin 5 Esclavo en (de 1 a 247) 06 (cdigo de respuesta)
(despus de la 6 Direccin de la palabra escrita
respuesta)
7 Valor escrito
(1) Este byte tambin recibe la longitud de la cadena transmitida tras la respuesta..

NOTA:
Esta peticin no necesita utilizar un offset.
La trama de respuesta es la misma que la de esta peticin (en un caso normal).

198 EIO0000001477 12/2016


Objetos de software

Maestro Modbus: escritura de N bits


En esta tabla se representa la peticin 15 (escriba N bits: salida o memoria):

Tabla Byte ms significativo Byte menos significativo


ndice
Tabla de control 0 01 8 + nmero de bytes (transmisin)
(transmisin/recepcin)
1 00 (offset de recepcin) 07 (offset de transmisin)
Tabla de 2 Esclavo en (de 1 a 247) o 15 (cdigo de peticin)
transmisin 0 en caso de difusin
3 Direccin del primer bit que se va a escribir
4 N1 = Nmero de bits que se van a escribir
5 00 (byte no enviado, N2
efecto de offset) = Nmero de bytes de datos que se
van a escribir
= [1+(N1-1)/8],
donde el resultado es la parte entera
de la divisin.
6 Valor del primer byte Valor del segundo byte
7 Valor del tercer byte Valor del cuarto byte
... ... ...
(N2/2)+5 (si N2 es Valor del byte N2o
par)
(N2/2+1)+5 (si N2
es impar)
Tabla de recepcin Esclavo en (de 1 a 247) 15 (cdigo de respuesta)
(despus de la Direccin del primer bit escrito
respuesta)
Nmeros de los bits escritos (= N1)

NOTA: El offset de transmisin = 7 suprime el sptimo byte de la trama enviada. Permite tambin
una correspondencia correcta entre los valores de las palabras en la tabla de transmisin.

EIO0000001477 12/2016 199


Objetos de software

Maestro Modbus: escritura de N palabras


En esta tabla se representa la peticin 16:

Tabla Byte ms significativo Byte menos significativo


ndice
Tabla de control 0 01 (transmisin/recepcin) 8 + (2*N) (longitud de
transmisin)
1 00 (offset de recepcin) 07 (offset de transmisin)
Tabla de transmisin 2 Esclavo en (de 1 a 247) o 0 en 16 (cdigo de peticin)
caso de difusin
3 Direccin de la primera palabra que se va a escribir
4 N = Nmero de palabras que se van a escribir
5 00 (byte no enviado, efecto de 2*N = Nmero 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 recepcin N+6 Esclavo en (de 1 a 247) 16 (cdigo de respuesta)
(despus de la N+7 Direccin de la primera palabra escrita
respuesta)
N+8 Nmero de palabras escritas (= N)

NOTA: El offset de transmisin = 7 suprime el sptimo byte de la trama enviada. Permite tambin
una correspondencia correcta entre los valores de las palabras en la tabla de transmisin.

Peticin Modbus: lectura de identificacin de dispositivo


En esta tabla se representa la peticin 43 (identificacin del dispositivo de lectura):

Escaln Instruccin Comentario


0 LD 1 [%MW800:=16#0106]: encabezado Modbus estndar
[%MW800:=16#0106] [%MW801:=16#0000]: ningn offset de envo y recepcin
[%MW801:=16#0000] [%MW802:=16#032B]: direccin de esclavo, cdigo funcional
[%MW802:=16#032B]
[%MW803:=16#0E01]: tipo MEI, cdigo de identificacin de
[%MW803:=16#0E01]
lectura de dispositivo
[%MW804:=16#0000]
[%MW804:=16#0000]: ID de objeto, sin uso

200 EIO0000001477 12/2016


Objetos de software

Peticin Modbus: diagnstico


En esta tabla se representa la peticin 8 (diagnstico):

Escaln Instruccin Comentario


0 LD 1 [%MW1000:=16#0106]: encabezado Modbus estndar
[%MW1000:=16#0106] [%MW1001:=16#0000]: ningn offset de envo y recepcin
[%MW1001:=16#0000] [%MW1002:=16#0308]: direccin de esclavo, cdigo funcional
[%MW1002:=16#0308]
[%MW1003:=16#0000]: cdigo de subfuncin
[%MW1003:=16#0000]
[%MW1004:=16#1234]: cualquier dato
[%MW1004:=16#1234]
La respuesta de esclavo ser una copia de la peticin. Esta
modalidad se denomina modalidad eco o espejo.

Ejemplo 1: Escritura de la aplicacin Modbus


Programa maestro:

Escaln Instruccin Coment ario


0 LD 1 [%MW0:=16#0106]: longitud de transmisin = 6
[%MW0:=16#0106] [%MW1:=16#0300]: offset de recepcin = 3, offset de envo = 0
[%MW1:=16#0300] %MW2 a %MW4: transmisin
[%MW2:=16#0203]
[%MW2:=16#0203]: esclavo 2, funcin 3 (lectura de varias
[%MW3:=16#0000]
palabras)
[%MW4:=16#0004]
[%MW3:=16#0000]: direccin de la primera palabra que se va a
leer en el esclavo: a direccin 0
[%MW4:=16#0004]: nmero de palabras que se van a leer: 4
palabras (%MW0 a %MW3)
1 LD 1
AND %MSG2.D
[EXCH2 %MW0:11]
2 LD %MSG2.E
ST %Q0.0
END

Programa del esclavo:

Escaln Instruccin Comentario


0 LD 1
[%MW0:=16#6566]
[%MW1:=16#6768]
[%MW2:=16#6970]
[%MW3:=16#7172]
END

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 18) para obtener el diagrama de
contactos equivalente.

EIO0000001477 12/2016 201


Objetos de software

Con ayuda de SoMachine Basic, cree un programa de aplicacin para el maestro y el esclavo.
Para el esclavo, escriba algunas palabras de memoria para un conjunto de valores conocidos. En
el maestro, se inicializa la tabla de palabras de la instruccin de Intercambio para leer cuatro
palabras del esclavo en la direccin Modbus 2 que comienza en la ubicacin %MW0.
NOTA: Observe el uso del offset de recepcin establecido en %MW1 del maestro Modbus. El offset
de 3 aadir un byte (valor = 0) en la tercera posicin del rea de recepcin de la tabla. De este
modo, las palabras se alinean en el maestro, de forma que se mantengan correctamente dentro
de los lmites de palabras. Sin este offset, cada palabra de datos se dividira en dos palabras en
el bloque de Intercambio. Este offset se utiliza por comodidad.
Antes de ejecutar la instruccin EXCH2, la aplicacin comprueba el bit de comunicacin 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 podra aadir una comprobacin adicional
de errores mediante %SW64 para una mayor precisin.
Inicializacin de la tabla de animacin en la modalidad online correspondiente a la parte de la tabla
de recepcin:

Direccin Valor Formato


%MW5 0203 Hexadecimal
%MW6 0008 Hexadecimal
%MW7 6566 Hexadecimal
%MW8 6768 Hexadecimal
%MW9 6970 Hexadecimal
%MW10 7172 Hexadecimal

Despus de descargar y configurar los controladores lgicos para que se ejecuten, abra una tabla
de animacin en el maestro. Examine la seccin de respuesta de la tabla para comprobar que el
cdigo de respuesta sea 3 y asegurarse de que se haya ledo el nmero de bytes correcto. En este
ejemplo, las palabras ledas del esclavo (comenzando por %MW7) estn correctamente alineadas
con los lmites de palabras del maestro.

202 EIO0000001477 12/2016


Objetos de software

Ejemplo 2: Escritura de la aplicacin Modbus


Programa maestro:

Escaln Instruccin Comentario


0 LD 1 [%MW0:=16#010C]: longitud de la tabla de transmisin: 0C hex = 12
[%MW0:=16#010C] dec, de %MW2 a %MW7
[%MW1:=16#0007] [%MW1:=16#0007]
[%MW2:=16#0210]
[%MW2:=16#0210]: direccin del esclavo 2, escritura de palabras con
[%MW3:=16#0010]
el cdigo funcional 10h
[%MW4:=16#0002]
[%MW3:=16#0010]: de la direccin 16 en el esclavo
[%MW5:=16#0004]
[%MW6:=16#6566] [%MW4:=16#0002]: escritura de 2 palabras
[%MW7:=16#6768] [%MW5:=16#0004]: nmero 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:

Escaln Instruccin Comentario


0 LD 1
[%MW18:=16#FFFF]
END

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 18) para obtener el diagrama de
contactos equivalente.
Con ayuda de SoMachine Basic, cree un programa de aplicacin 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
peticin Modbus intentara escribir en ubicaciones que no existen en el esclavo.
En el maestro, se inicializa la tabla de palabras de la instruccin EXCH2 para leer cuatro bytes en
el esclavo en la direccin Modbus 2 en la direccin %MW16 (10 hexadecimal).
NOTA: Observe el uso del offset de transmisin establecido en %MW1 de la aplicacin 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 transmisin de la tabla de palabras,
de modo que se mantengan correctamente dentro de los lmites de palabras.

EIO0000001477 12/2016 203


Objetos de software

Antes de ejecutar la instruccin EXCH2, la aplicacin comprueba el bit de comunicacin 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 podra aadir una comprobacin adicional
de errores detectados mediante %SW64 para una mayor precisin.
Inicializacin de la tabla de animacin en el maestro:

Direccin 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

Inicializacin de la tabla de animacin en el esclavo:

Direccin Valor Formato


%MW16 6566 Hexadecimal
%MW17 6768 Hexadecimal

Despus de descargar y configurar todos los controladores lgicos para que se ejecuten, abra una
tabla de animacin 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 animacin para examinar la parte de la tabla de
recepcin de los datos de intercambio. Estos datos indican la direccin del esclavo, el cdigo de
respuesta, la primera palabra escrita y el nmero de palabras escritas comenzando por %MW8 en
el ejemplo anterior.

204 EIO0000001477 12/2016


Objetos de software

Seccin 6.5
Registro LIFO/FIFO (%R)

Registro LIFO/FIFO (%R)

Uso de bloques de funciones del registro LIFO/FIFO


En esta seccin se proporcionan descripciones y directrices de programacin para utilizar bloques
de funciones LIFO/FIFO Register.

Contenido de esta seccin


Esta seccin contiene los siguientes apartados:
Apartado Pgina
Descripcin 206
Configuracin 208
Funcionamiento del registro LIFO 210
Funcionamiento del registro FIFO 211
Ejemplo de programacin 212

EIO0000001477 12/2016 205


Objetos de software

Descripcin

Introduccin

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.

Ilustracin
En esta ilustracin se muestra el bloque de funciones LIFO/FIFO Register.

Entradas
El bloque de funciones LIFO/FIFO Register contiene las siguientes entradas:

Etiqueta Descripcin Valor


R Restablecer En el estado 1, inicializa el LIFO/FIFO Register.
entrada (o
instruccin)
I Entrada (o Con cada flanco ascendente almacena el contenido de la palabra
instruccin) de asociada %Ri.I en el LIFO/FIFO Register.
almacenamiento
O Entrada (o Con cada flanco ascendente, carga una palabra de datos del
instruccin) de LIFO/FIFO Register en la palabra asociada %Ri.O.
recuperacin

206 EIO0000001477 12/2016


Objetos de software

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

Etiqueta Descripcin Valor


E Salida vaca El bit asociado %Ri.E indica que el LIFO/FIFO Register est vaco.
(%Ri.E) El valor de %Ri.E puede probarse, por ejemplo, en una tabla de
animacin o con una instruccin.
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
animacin o con una instruccin.

EIO0000001477 12/2016 207


Objetos de software

Configuracin

Parmetros
Para configurar los parmetros, siga el procedimiento de configuracin de un bloque de funciones
(vase pgina 159) y lea la descripcin de las modalidades de asignacin de memoria en la Gua
de funcionamiento de SoMachine Basic.
El bloque de funciones LIFO/FIFO Register contiene los parmetros siguientes:

Parmetro Descripcin Valor Editable en


modalidad
online?
Utilizado Direccin utilizada Si est seleccionada, esta direccin se est utilizando No
actualmente en un programa.
Direccin Direccin de objeto Un programa puede contener slo un nmero limitado de No
LIFO/FIFO Register objetos LIFO/FIFO Register. Consulte la gua de
programacin de la plataforma de hardware para saber
cul es el nmero mximo de registros.
Smbolo Smbolo El smbolo asociado con este objeto. Para obtener ms No
informacin, consulte Definicin y uso de los smbolos en
la Gua 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 Descripcin Valor


%Ri.I LIFO/FIFO Register Se puede leer, verificar y escribir.
palabra de entrada Puede modificarse en una tabla de animacin.
%Ri.O LIFO/FIFO Register Se puede leer, verificar y escribir.
palabra de salida Puede modificarse en una tabla de animacin.
%Ri.E Salida vaca 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 Descripcin


Efecto de un reinicio en fro (%S0=1) o INIT Inicializa el contenido de LIFO/FIFO Register. El bit de
salida %Ri.E asociado a la salida E se establece en 1.
Efecto de un reinicio en caliente (%S1=1) o una No tiene ningn efecto en el valor actual de LIFO/FIFO
detencin del controlador Register ni en el estado de sus bits de salida.

NOTA: El efecto de INIT es el mismo que %S0=1.

EIO0000001477 12/2016 209


Objetos de software

Funcionamiento del registro LIFO

Introduccin
En la operacin LIFO (Last In, First Out), el ltimo elemento de datos introducido es el primero que
se recupera.

Funcionamiento
En esta tabla se describe el funcionamiento de LIFO:

Etapa Descripcin Ejemplo


1 Almacenamiento:
Cuando se recibe una peticin de almacenamiento
(flanco ascendente en la entrada I o activacin de la
instruccin I), el contenido de la palabra de entrada
%Ri.I se almacena en la parte superior de la pila (fig.
a). Cuando la pila est llena (salida F=1), no es posible
continuar el almacenamiento.

2 Recuperacin:
Cuando se recibe una peticin de recuperacin (flanco
ascendente en la entrada
O o activacin de la instruccin O), la palabra de datos
superior (la ltima palabra introducida) se carga en la
palabra %Ri.O (fig. b). Cuando el LIFO/FIFO
Register est vaco (salida E=1), no es posible
continuar la recuperacin. La palabra de salida %Ri.O
no se modifica y conserva su valor.

3 Resetear:
La pila se puede restablecer en cualquier momento
(estado 1 en la entrada R o activacin de la instruccin
R). La pila est vaca despus de un reseteado (%Ri.E
=1).

210 EIO0000001477 12/2016


Objetos de software

Funcionamiento del registro FIFO

Introduccin
En la operacin FIFO (First In, First Out), el primer elemento de datos introducido es el primero
que se recupera.

Funcionamiento
En esta tabla se describe el funcionamiento de FIFO:

Etapa Descripcin Ejemplo


1 Almacenamiento:
Cuando se recibe una peticin de almacenamiento
(flanco ascendente en la entrada I o activacin de la
instruccin I), el contenido de la palabra de entrada
%Ri.I se almacena en la parte superior de la pila (fig. a).
Cuando la cola est llena (salida F=1), no es posible
continuar el almacenamiento.

2 Recuperacin:
Cuando se recibe una peticin de recuperacin (flanco
ascendente en la entrada O o activacin de la instruccin
O), la palabra de datos inferior en la cola se carga en la
palabra %Ri.O y los contenidos del LIFO/FIFO
Register se desplazan una posicin hacia abajo en la
cola (fig. b).
Cuando el LIFO/FIFO Register est vaco (salida
E=1), no es posible continuar la recuperacin. La palabra
de salida %Ri.O no se modifica y conserva su valor.

3 Resetear:
La cola se puede restablecer en cualquier momento
(estado 1 en la entrada R o activacin de la instruccin
R). La cola est vaca despus de un reseteado
(%Ri.E=1).

EIO0000001477 12/2016 211


Objetos de software

Ejemplo de programacin

Introduccin
El siguiente ejemplo de programacin muestra el contenido de una palabra de memoria (%MW34)
que se carga en un LIFO/FIFO Register (%R2.I) al recibir una peticin de almacenamiento
(%I0.2) si LIFO/FIFO Register %R2 no est completo (%R2.F = 0). La peticin de almacena-
miento en el LIFO/FIFO Register se realiza mediante %M1. La peticin de recuperacin se
confirma mediante la entrada %I0.3, y %R2.O se carga en %MW20 si el registro no est vaco
(%R2.E = 0).

Programacin
Este ejemplo es un bloque de funciones LIFO/FIFO Register con instrucciones reversibles:

Escaln Instruccin reversible


0 BLK %R2
LD %M1
I
LD %I0.3
ANDN %R2.E
O
END_BLK
1 LD %I0.3
[%MW20:=%R2.O]
2 LD %I0.2
ANDN %R2.F
[%R2.I:=%MW34]
ST %M1

En este ejemplo se muestra el mismo bloque de funciones LIFO/FIFO Register con


instrucciones no reversibles:

Escaln Instruccin no reversible


0 LD %M1
I %R2
1 LD %I0.3
ANDN %R2.E
O %R2
2 LD %I0.3
[%MW20:=%R2.O]
3 LD %I0.2
ANDN %R2.F
[%R2.I:=%MW34]
ST %M1

212 EIO0000001477 12/2016


Objetos de software

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 18) para obtener el diagrama de
contactos equivalente.

EIO0000001477 12/2016 213


Objetos de software

Seccin 6.6
Drums (%DR)

Drums (%DR)

Uso de los bloques de funciones de Drum


En esta seccin se proporcionan descripciones y directrices de programacin para utilizar bloques
de funciones Drum.

Contenido de esta seccin


Esta seccin contiene los siguientes apartados:
Apartado Pgina
Descripcin 215
Configuracin 216
Ejemplo de programacin 219

214 EIO0000001477 12/2016


Objetos de software

Descripcin

Introduccin

El bloque de funciones Drum funciona segn un principio similar a un secuenciador Drum


electromecnico, que cambia el paso segn los eventos externos. En cada paso, el punto superior
de una leva proporciona un comando, que es ejecutado por el controlador. En el caso de un bloque
de funciones Drum, estos puntos superiores se simbolizan mediante el estado 1 para cada paso
y se asignan a bits de salida %Qi.j o a bits de memoria %Mi.

Ilustracin
En esta figura se muestra el bloque de funciones Drum en modalidad offline.

Pasos Muestra el nmero total de pasos configurados en el Asistente Drum.


Paso Aparece en la modalidad offline cuando se crea un bloque. En la modalidad online, muestra el nmero
de paso actual.

Entradas
El bloque de funciones Drum contiene las siguientes entradas:

Etiqueta Descripcin Valor


R Para volver al paso 0 (o instruccin) En el estado 1, ajusta el Drum al paso 0.
U Entrada (o instruccin) de avance En un flanco ascendente, hace que el Drum avance un
paso y actualiza los bits de control.

Salidas
El bloque de funciones Drum contiene la siguiente salida:

Etiqueta Descripcin Valor


F Salida (%DRi.F) Indica que el paso actual equivale al ltimo paso definido. Se puede
probar el bit asociado %DRi.F.

EIO0000001477 12/2016 215


Objetos de software

Configuracin

Parmetros
Para configurar los parmetros, siga el procedimiento de configuracin de un bloque de funciones
(vase pgina 159) y lea la descripcin de las modalidades de asignacin de memoria en la Gua
de funcionamiento de SoMachine Basic.
El bloque de funciones Drum contiene los parmetros siguientes:

Parmetro Descripcin Rango Editable en


modalidad
online?
Utilizado Direccin utilizada Si est seleccionada, esta direccin se est No
utilizando actualmente en un programa.
Direccin Direccin de objeto Un programa puede contener slo un nmero No
Drum limitado de objetos Drum. Consulte la Gua de
programacin de su controlador para
determinar el nmero mximo de objetos
Drum.
Smbolo Smbolo El smbolo asociado con este objeto. Para No
obtener ms informacin, consulte Definicin
y uso de los smbolos en la Gua de
funcionamiento de SoMachine Basic.
Configuracin Asistente Drum Haga clic para mostrar el Asistente Drum S (todos los
(vase pgina 217). parmetros
de la ventana
Asistente
Drum)
Comentario Comentario Se puede asociar un comentario con este No
objeto.

Objetos
El bloque de funciones Drum contiene el siguiente objeto:

Objeto Descripcin Rango


%DRi.S Nmero del paso actual 0<=%DRi.S<=7. Palabra que se puede leer y escribir. El
valor escrito debe ser un valor inmediato decimal. Cuando se
escribe, el efecto se produce en la siguiente ejecucin del
bloque de funciones.
Se puede modificar en una tabla de animacin o en la
modalidad online.
%DRi.F Completo Consulte la tabla de salidas (vase pgina 215).

216 EIO0000001477 12/2016


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.
Una lista de bits de control est asociada con una salida configurada (%Qi.j) o una palabra de
memoria (%Mi). En el transcurso del paso actual, los bits de control adquieren los estados
binarios definidos para este paso.

Asistente Drum
Utilice el Asistente Drum para configurar el bloque de funciones Drum.
Configure el campo Nmero de pasos con un valor entre 1 y 8, as como las salidas o los bits de
memoria asociados a cada paso: del Bit0 al Bit15 y, a continuacin, haga clic en OK.

NOTA: La configuracin tambin se puede llevar a cabo mediante bits de memoria (%Mi).

EIO0000001477 12/2016 217


Objetos de software

Casos especiales
Esta tabla contiene una lista de casos especiales para el funcionamiento de Drum:

Caso especial Descripcin


Efectos de un reinicio en fro Restablece el Drum en el paso 0 (actualizacin de los bits de control).
(%S0=1)
Efecto de un reinicio en Actualiza los bits de control despus del paso actual.
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 ms reciente.
Actualizacin de los bits de Solo ocurre cuando se produce un cambio de paso o un reinicio en fro o en
control caliente.

218 EIO0000001477 12/2016


Objetos de software

Ejemplo de programacin

Introduccin
A continuacin se muestra un ejemplo de programacin de un Drum que est configurado de
modo que ninguno de los controles est establecido en el paso 0 y los controles estn
establecidos para los pasos 1 a 6 de las salidas %Q0.0 a %Q0.5 respectivamente (consulte la
Configuracin (vase pgina 221)).
Las primeras 6 salidas de %Q0.0 a %Q0.5 se activan sucesivamente cada vez que la entrada
%I0.1 se establece en 1. Cuando el valor de la entrada %I0.0 es alto, los siguientes valores se
restablecen a 0:
Salida de Drum F (%DRi.F = 0)
Nmero del paso actual (%DRi.S = 0)

Programacin
Este ejemplo es un bloque de funciones Programa del bloque de funciones de Drum:

Escaln Instruccin
0 BLK %DR1
LD %I0.0
R
LD %I0.1
U
OUT_BLK
LD F
ST %Q0.7
END_BLK

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 18) para obtener el diagrama de
contactos equivalente.

EIO0000001477 12/2016 219


Objetos de software

Diagrama de tiempos
En este diagrama se muestra el funcionamiento de Drum:

(1) En un flanco ascendente en la entrada U, se aumenta el paso actual.


(2) Cuando se actualiza el paso actual, se actualizan las salidas.
(3) Cuando se alcanza el ltimo paso, la salida F se establece en 1.
(4) Cuando el ltimo paso est activo, un flanco ascendente en la entrada U restablece el paso actual a 0.

220 EIO0000001477 12/2016


Objetos de software

(5) El valor actual (flanco ascendente) %DR0.R = 1 se establece en 0.


(6) El usuario escribe el valor del nmero de paso: %DR0.S = 4
(7) El valor escrito por el usuario se actualiza en el siguiente tiempo de ejecucin.

Configuracin
Durante la configuracin se define la siguiente informacin:
Nmero 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

Asignacin 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.1
2 %Q0.2
3 %Q0.3
4 %Q0.4
5 %Q0.5

EIO0000001477 12/2016 221


Objetos de software

Seccin 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 seccin se proporcionan descripciones y directrices de programacin para utilizar bloques
de funciones Shift Bit Register.

Contenido de esta seccin


Esta seccin contiene los siguientes apartados:
Apartado Pgina
Descripcin 223
Configuracin 224
Ejemplo de programacin 226

222 EIO0000001477 12/2016


Objetos de software

Descripcin

Introduccin

El bloque de funciones Shift Bit Register proporciona un desplazamiento de bits de


datos binarios hacia la izquierda o la derecha (0 o 1).

Ilustracin
En esta ilustracin se muestra el bloque de funciones Shift Bit Register:

El valor actual del Shift Bit Register se muestra en el centro del bloque de funciones:
Valor decimal, por ejemplo 7
Valor binario, por ejemplo 111
Valor hexadecimal, por ejemplo 16#7

Entradas
El bloque de funciones Shift Bit Register contiene las siguientes entradas:

Etiqueta Descripcin Valor


R Restablecer entrada (o Cuando el parmetro de funcin R es 1, los bits de registro de
instruccin) 0 a 15 %SBRi.j se establecen en 0.
CU Desplazar hacia la entrada En un flanco ascendente, desplaza un bit de registro hacia la
(o instruccin) izquierda izquierda.
CD Desplazar hacia la entrada En un flanco ascendente, desplaza un bit de registro hacia la
(o instruccin) derecha derecha.

EIO0000001477 12/2016 223


Objetos de software

Configuracin

Parmetros
Para configurar los parmetros, siga el procedimiento de configuracin de un bloque de funciones
(vase pgina 159) y lea la descripcin de las modalidades de asignacin de memoria en la Gua
de funcionamiento de SoMachine Basic.
El bloque de funciones Shift Bit Register contiene los siguientes parmetros:

Parmetro Descripcin Valor


Utilizado Direccin utilizada Si est seleccionada, esta direccin se est utilizando
actualmente en un programa.
Direccin Direccin de objeto de Shift Un programa solo puede contener un nmero limitado de
Bit Register objetos de Shift Bit Register. Consulte la gua de
programacin de la plataforma de hardware para saber cul
es el nmero mximo de registros.
Smbolo Smbolo El smbolo asociado con este objeto. Para obtener ms
informacin, consulte Definicin y uso de los smbolos en la
Gua de funcionamiento de SoMachine Basic.
Comentario Comentario Se puede asociar un comentario con este objeto.

Objetos
El bloque de funciones Shift Bit Register contiene los siguientes objetos:

Objeto Descripcin Valor


%SBRi Nmero de registro De 0 a 7
Puede modificarse en una tabla de animacin.
%SBRi.j Bit de registro Los bits 0 a 15 (j = 0 a 15) del registro de desplazamiento
pueden probarse mediante una instruccin de prueba y
escribirse usando una instruccin de asignacin.

224 EIO0000001477 12/2016


Objetos de software

Funcionamiento
En la siguiente ilustracin se muestra un modelo de bit antes y despus de una operacin de
desplazamiento:

Esto tambin es aplicable para una peticin de desplazamiento de un bit a la derecha (bit 15 a bit
0) mediante la instruccin CD. El bit 0 se pierde.
Si un registro de 16 bits no es adecuado, se puede utilizar el programa para mostrar en cascada
diversos registros.

Casos especiales
En esta tabla hay una lista de casos especiales para programar el bloque de funciones Shift
Bit Register:

Caso especial Descripcin


Efecto de un reinicio en fro (%S0=1) Establece todos los bits de la palabra de registro en 0.
Efecto de un reinicio en caliente (%S1=1) No tiene efecto sobre los bits de la palabra de registro.

EIO0000001477 12/2016 225


Objetos de software

Ejemplo de programacin

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

Programacin
En este ejemplo, un bit se desplaza hacia la izquierda cada segundo mientras que el bit 0 asume
el estado al bit 15.
En instrucciones reversibles:

Escaln Instruccin reversible


0 BLK %SBR0
LD %S6
CU
END_BLK
1 LD %SBR0.15
ST %SBR0.0

En instrucciones no reversibles:

Escaln Instruccin no reversible


0 LD %S6
CU %SBR0
1 LD %SBR0.15
ST %SBR0.0

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 18) para obtener el diagrama de
contactos equivalente.

226 EIO0000001477 12/2016


Objetos de software

Seccin 6.8
Contador de pasos (%SC)

Contador de pasos (%SC)

Uso de los bloques de funciones del contador de pasos


En esta seccin se proporcionan descripciones y directrices de programacin para utilizar bloques
de funciones Step Counter.

Contenido de esta seccin


Esta seccin contiene los siguientes apartados:
Apartado Pgina
Descripcin 228
Configuracin 229
Ejemplo de programacin 230

EIO0000001477 12/2016 227


Objetos de software

Descripcin

Introduccin

Un bloque de funciones Step Counter permite realizar una serie de pasos a los que se
pueden asignar acciones. El desplazamiento de un paso a otro depende de eventos internos o
externos. Cada vez que un paso est activo, el bit asociado (el bit de Step Counter %SCi.j) se
establece en 1. Solo se puede activar un paso de un Step Counter cada vez.

Ilustracin
Esta ilustracin corresponde a un bloque de funciones Step Counter:

Entradas
El bloque de funciones Step Counter contiene las siguientes entradas:

Etiqueta Descripcin Valor


R Restablecer entrada (o Cuando el parmetro de la funcin R es 1, se restablece el
instruccin) Step Counter.
CU Aumentar entrada (o En un flanco ascendente, aumenta un paso el Step
instruccin) Counter.
CD Disminuir entrada (o En un flanco ascendente, disminuye un paso el Step
instruccin) Counter.

228 EIO0000001477 12/2016


Objetos de software

Configuracin

Parmetros
Para configurar los parmetros, siga el procedimiento de configuracin de un bloque de funciones
(vase pgina 159) y lea la descripcin de las modalidades de asignacin de memoria en la Gua
de funcionamiento de SoMachine Basic.
El bloque de funciones Step Counter contiene los parmetros siguientes:

Parmetro Descripcin Valor


Utilizado Direccin utilizada Si est seleccionada, esta direccin se est utilizando
actualmente en un programa.
Direccin Direccin de objetos Un programa puede contener solamente un nmero limitado
Step Counter de objetos Step Counter. Consulte la gua de
programacin de la plataforma de hardware para saber cul
es el nmero mximo de Step Counter.
Smbolo Smbolo El smbolo asociado con este objeto. Para obtener ms
informacin, consulte Definicin y uso de los smbolos en la
Gua de funcionamiento de SoMachine Basic.
Comentario Comentario Se puede asociar un comentario con este objeto.

Objetos
El bloque de funciones Step Counter contiene el siguiente objeto:

Objeto Descripcin Valor


%SCi.j Bit de Step Counter Los bits de Step Counter 0 a 255 (j = de 0 a 255) se pueden
verificar mediante una operacin lgica de carga y se pueden
escribir mediante una instruccin de asignacin.
Puede modificarse en una tabla de animacin.

Caso especial
Esta tabla contiene una lista de casos especiales de funcionamiento del bloque de funciones Step
Counter:

Caso especial Descripcin


Efecto de un reinicio en fro (%S0=1) Inicializa el Step Counter.
Efecto de un reinicio en caliente (%S1=1) No tiene ningn efecto sobre el Step Counter.

EIO0000001477 12/2016 229


Objetos de software

Ejemplo de programacin

Introduccin
En este ejemplo se muestra un bloque de funciones Step Counter.
El Step Counter 0 se reduce mediante la entrada %I0.1.
El Step Counter 0 se aumenta mediante la entrada %I0.2.
El Step Counter 0 se restablece a 0 mediante la entrada %I0.3 o cuando llega al paso 3.
El paso 0 controla la salida %Q0.1, el paso 1 controla la salida %Q0.2 y el paso 2 controla la
salida %Q0.3.

Programacin
Este ejemplo es un bloque de funciones Step Counter con instrucciones reversibles:

Escaln Instruccin reversible


0 BLK %SC0
LD %SC0.3
OR %I0.3
R
LD %I0.2
CU
LD %I0.1
CD
END_BLK
1 LD %SC0.0
ST %Q0.1
2 LD %SC0.1
ST %Q0.2
3 LD %SC0.2
ST %Q0.3

En este ejemplo se muestra un bloque de funciones Step Counter con instrucciones no


reversibles:

Escaln Instruccin no reversible


0 LD %SC0.3
OR %I0.3
R %SC0
1 LD %I0.2
CU %SC0
2 LD %I0.1
CD %SC0

230 EIO0000001477 12/2016


Objetos de software

Escaln Instruccin no reversible


3 LD %SC0.0
ST %Q0.1
4 LD %SC0.1
ST %Q0.2
5 LD %SC0.2
ST %Q0.3

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 18) para obtener el diagrama de
contactos equivalente.

Diagrama de tiempos
En este diagrama se muestra el funcionamiento del bloque de funciones Step Counter:

(1) El paso 0 est activo, de modo que %SC0.0 se establece en 1.


(2) En el flanco ascendente de la entrada CU, el paso se incrementa y se actualizan las salidas.
(3) El paso se incrementa y se actualizan las salidas.
(4) El paso 3 est activo, de modo que la entrada Reset se encuentra activa tras un ciclo de CPU.
(5) Cuando Reset est activo, el paso actual se establece en 0 y la entrada de restablecimiento se establece
en 0 tras un ciclo de CPU.
(6) El paso actual se incrementa en el flanco ascendente de la entrada CU.
(7) En el flanco ascendente de la entrada CD, el paso se reduce y se actualizan las salidas.

EIO0000001477 12/2016 231


Objetos de software

Seccin 6.9
Fechadores (%SCH)

Fechadores (%SCH)

Uso de los fechadores


Esta seccin proporciona descripciones y directrices de programacin para utilizar bloques de
funciones de Schedule blocks.

Contenido de esta seccin


Esta seccin contiene los siguientes apartados:
Apartado Pgina
Descripcin 233
Programacin y configuracin 235

232 EIO0000001477 12/2016


Objetos de software

Descripcin

Introduccin
Los Schedule blocks se utilizan para controlar las acciones en un mes, da u hora predefinidos.
Los Schedule blocks slo se configuran en SoMachine Basic; no se introducen en el escaln
de un programa del mismo modo que otros bloques de funcin.
NOTA: Compruebe el bit del sistema %S51 y la palabra del sistema %SW118 para confirmar que la
opcin Reloj de tiempo real (RTC) est instalada. La opcin RTC tambin es necesaria para
utilizar Schedule blocks.

Parmetros
Para configurar los parmetros, siga el procedimiento Configuracin de un bloque de funciones
(vase pgina 159) y consulte la descripcin de Modalidades de asignacin de memoria
(vase SoMachine Basic, Gua de funcionamiento).
Los Schedule blocks presentan las siguientes funciones:

Parmetro Descripcin Valor


Utilizado Direccin utilizada Si est seleccionada, esta direccin se est
utilizando actualmente en un programa.
Direccin Direccin de objeto Schedule Un programa puede contener slo un nmero
blocks limitado de objetos Schedule blocks.
Consulte la gua de la plataforma de hardware
para saber cul es el nmero mximo de
Schedule blocks.
Configurado Indica si el nmero de Schedule Si se selecciona la casilla de verificacin, est
blocks seleccionado est configurado configurado para ser utilizado. De lo contrario, no
para ser utilizado. se utiliza.

Bit de salida Bit de salida Los Schedule blocks activan la asignacin de


salida: %Mi o %Qj.k.
Esta salida se establece en 1 cuando la fecha y
la hora actuales estn entre el ajuste del inicio
del periodo activo y el ajuste del final del periodo
activo.
Da de inicio Da del mes para iniciar los Schedule 1...31
blocks.
Mes de inicio El mes para iniciar los Schedule Schedule blocks.
blocks.
Da de Da del mes para finalizar los 1...31
finalizacin Schedule blocks.

EIO0000001477 12/2016 233


Objetos de software

Parmetro Descripcin Valor


Mes de El mes para finalizar los Schedule Enero...diciembre
finalizacin blocks.
Hora de inicio El momento del da, las horas y los Hora: 0...23
minutos para iniciar los Schedule Minuto: 0...59
blocks.
Hora de El momento del da, las horas y los Hora: 0...23
finalizacin minutos para finalizar los Schedule Minuto: 0...59
blocks.
Lunes Casillas de verificacin que identifican Si se selecciona la casilla de verificacin, est
Martes el da de la semana para activar los configurado para ser utilizado. De lo contrario, no
Schedule blocks. se utiliza.
Mircoles
Jueves
Viernes
Sbado
Domingo
Comentario Comentario Se puede asociar un comentario con este objeto.

Habilitacin 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.
Asignacin de Schedule blocks en %SW114:

De forma predeterminada (o despus de un reinicio en fro), todos los bits de esta palabra de
sistema se establecen en 1. La utilizacin de estos bits por parte del programa es opcional.

Salida de los fechadores


Si se asigna la misma salida (%Mi o %Qj.k) a varios bloques, se asignar finalmente el OR de los
resultados de cada uno de los bloques a este objeto (es posible tener varios Schedule blocks para
la misma salida).
Por ejemplo, los fechadores %SCH0 y %SCH1 estn ambos asignados a la salida %Q0.0. %SCH0
establece la salida desde las 12:00 h hasta las 13:00 h el lunes y %SCH1 establece la salida desde
las 12:00 h hasta las 13:00 h el martes. Como resultado, la salida est establecida desde las 12:00
h hasta las 13:00 en lunes y martes.

234 EIO0000001477 12/2016


Objetos de software

Programacin y configuracin

Introduccin
Los Schedule blocks se utilizan para controlar las acciones en un mes, da u hora predefinidos.

Ejemplo de programacin
En esta tabla se muestran los parmetros de ejemplo de un programa de vaporizacin para un
mes veraniego:

Parmetro Valor Descripcin Editable en


modalidad
online?
Direccin Reloj de tiempo real 6 Schedule blocks nmero 6 No
Configurado Casilla seleccionada Casilla seleccionada para configurar los No
Schedule blocks nmero 6.
Bit de salida %Q0.2 Activar salida %Q0.2 S
Da de inicio 21 Inicia la actividad el da 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
Da de finalizacin 21 Detiene la actividad el da 21 de septiembre S
Mes de finalizacin Septiembre Detiene la actividad en septiembre S
Hora de 22 Detiene la actividad a las 22:00 S
finalizacin
Lunes Casilla seleccionada Realiza la actividad el lunes S
Martes Casilla no seleccionada Sin actividad S
Mircoles Casilla seleccionada Realiza la actividad el mircoles S
Jueves Casilla no seleccionada Sin actividad S
Viernes Casilla seleccionada Realiza la actividad el viernes S
Sbado Casilla no seleccionada Sin actividad S
Domingo Casilla no seleccionada Sin actividad S

Con este programa, los Schedule blocks pueden deshabilitarse mediante un conmutador o un
detector de humedad cableado en la entrada %I0.1:

Escaln Instruccin Comentario


0 LD %I0.1 En este ejemplo, se valida %SCH6.
ST %SW114:X6

EIO0000001477 12/2016 235


Objetos de software

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 18) para obtener el diagrama de
contactos equivalente.

Diagrama de tiempos
Este diagrama de tiempos muestra la activacin de la salida %Q0.2:

236 EIO0000001477 12/2016


Objetos de software

Seccin 6.10
Reloj de tiempo real (%RTC)

Reloj de tiempo real (%RTC)

Uso de bloques de funciones de RTC


En esta seccin se proporcionan descripciones y directrices de programacin para utilizar bloques
de funciones RTC.
NOTA: La aplicacin debe estar configurada con un nivel funcional como mnimo del Nivel 5.0 para
utilizar los bloques de funciones de RTC.

Contenido de esta seccin


Esta seccin contiene los siguientes apartados:
Apartado Pgina
Descripcin 238
Configuracin 241

EIO0000001477 12/2016 237


Objetos de software

Descripcin

Introduccin

El bloque de funciones de RTC permite leer y escribir en el Reloj de tiempo real (RTC) de
M221 Logic Controller.

Ilustracin
En esta ilustracin se muestra el bloque de funciones de RTC.

Entradas
El bloque de funciones RTC contiene las siguientes entradas:

Etiqueta Objeto Valor


Habilitar - Habilita el bloque de funciones cuando se detecta un flanco
ascendente de esta entrada.
En el estado 1, los valores de entrada RD y WR se leen de
forma continuada para determinar la accin que se debe llevar
a cabo.
En el estado 0, el bloque de funciones se deshabilita y se
restablecen las salidas.

238 EIO0000001477 12/2016


Objetos de software

Etiqueta Objeto Valor


RD - Una combinacin de los valores de las dos entradas determina
la accin se que se va a llevar a cabo:
WR -
RD = 0 y WR = 0. Ninguna accin.
Las salidas Done y Error se establecen en 0.
RD = 1 y WR = 0. Se lee el valor de RTC.
Si se realiza correctamente, la salida Done se establece en
1 y la salida Error se establece en 0.
Los objetos de entrada se actualizan de forma continuada
con los valores ledos del RTC. Utilice una tabla de
animacin (vase SoMachine Basic, Gua de
funcionamiento) para visualizar los valores de los objetos.
RD = 0 y WR = 1. Cuando se detecta el flanco ascendente de
WR, se actualiza el RTC utilizando los valores de objeto
especificados en los parmetros de RTC asociados con
este bloque de funciones (vase a continuacin).
Si la actualizacin se realiza correctamente, la salida de
Done se establece en 1 y la salida de Error se establece
en 0. El RTC se actualiza.
Si no se realiza correctamente, la salida de Done se
establece en 0 y la salida de Error se establece en 1.
RD = 1 y WR = 1. No admitido.
La salida de Done se establece en 0, la salida de Error se
establece en 1 y la salida de ErrorId (vase pgina 240) se
establece en 256 (lectura y escritura simultneas).
Day %RTCi.DAY Da
Valor predeterminado: 12
De -32767 a 32768
Month %RTCi.MONTH Mes
Valor predeterminado: 6
De -32767 a 32768
Year %RTCi.YEAR Ao
Valor predeterminado: 2017
De -32767 a 32768
Hours %RTCi.HOURS Horas
Valor predeterminado: 0
De -32767 a 32768
Minutes %RTCi.MINUTES Minutos
Valor predeterminado: 0
De -32767 a 32768
Seconds %RTCi.SECONDS Segundos
Valor predeterminado: 0
De -32767 a 32768

EIO0000001477 12/2016 239


Objetos de software

Salidas
El bloque de funciones RTC contiene las siguientes salidas:

Etiqueta Objeto Valor


Done %RTCi.Done Se establece en 1 cuando las operaciones de lectura y
escritura del RTC se realizan correctamente.
Se establece en 0 cuando la operacin de lectura o escritura
no se realiza correctamente.
Error %RTCi.Error Se establece en 1 si se produce un error durante la ejecucin.
La ejecucin del bloque de funciones ha finalizado. El objeto
de salida ErrorId indica la causa del error.
DayOfWeek %RTCi.DayOfWeek Devuelve el da de la semana, calculado a partir del valor de
la semana actual.
Rango: de 0 a 7
0: el bloque de funciones no se ha ejecutado todava.
De 1 a 7: da de la semana.
ErrorId %RTCi.ErrorId Identificador del cdigo de error.
Consulte Cdigos de error (vase pgina 240) a continuacin.

Cdigos de error
A continuacin se indican los cdigos de error que se pueden devolver en el objeto
%RTCi.ErrorId cuando la salida Error se establece en 1.

Cdigo de error Descripcin


0 Sin errores
1 Error de ao
2 Error de mes
3 Error de da
4 Error de semana
5 Error de hora
6 Error de minuto
7 Error de segundo
8 Error de combinacin
9 Error interno de RTC
256 Lectura y escritura simultneas
257 Actualizacin de RTC en curso (bit del sistema %S50 = 1)

240 EIO0000001477 12/2016


Objetos de software

Configuracin

Presentacin
Configure las propiedades del bloque de funciones RTC con los valores que se van a utilizar para
actualizar el RTC en el logic controller.
Para mostrar la pgina RTC propiedades, siga uno de estos pasos:
Haga doble clic en un bloque de funciones de RTC.
En la ficha Programacin, seleccione Herramientas Objetos de software RTC.

RTC propiedades
Para configurar los parmetros, siga el procedimiento de configuracin de un bloque de funciones
(vase pgina 159) y lea la descripcin de las modalidades de asignacin de memoria en la Gua
de funcionamiento de SoMachine Basic.
La pgina RTC propiedades muestra las propiedades siguientes:

Propiedad Descripcin Rango Editable en


modalidad
online?
Utilizado La direccin del objeto Si est seleccionada, esta direccin se est No
est en uso. utilizando actualmente en un programa.
Direccin Direccin de objeto %RTCi, donde i es el nmero de objeto. No
RTC Un programa puede contener slo un nmero
limitado de objetos RTC. Consulte la Gua de
programacin de su controlador para
determinar el nmero mximo de objetos
RTC.
Smbolo Smbolo El smbolo asociado con este objeto. Para S
obtener ms informacin, consulte Definicin
y uso de los smbolos en la Gua de
funcionamiento de SoMachine Basic.
Da Da del mes De 1 a 31 S
Mes Mes del ao De 1 a 12 S
Ao Ao Igual o superior a 2000 S
Horas Hora del da 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.

EIO0000001477 12/2016 241


Objetos de software

Seccin 6.11
PID

PID

Funcin PID

Introduccin
La funcin PID se utiliza para controlar un proceso dinmico de manera continua. El propsito del
control PID es mantener un proceso en ejecucin tan cerca como sea posible del valor de
consigna deseado.
Consulte la Gua de la biblioteca de funciones avanzadas para obtener informacin detallada
sobre el comportamiento y funcionalidades del PID y la implementacin de la funcin PID:
Modalidades de funcionamiento del PID
Configuracin de ajuste automtico del PID
Configuracin estndar del PID
Asistente de PID
Programacin del PID
Parmetros del PID
Papel principal e influencia de los parmetros del PID
Mtodo de ajuste de los parmetros del PID

242 EIO0000001477 12/2016


Objetos de software

Seccin 6.12
Pasos de Grafcet

Pasos de Grafcet

Pasos de Grafcet

Descripcin general
Los objetos de paso de Grafcet (%Xi) se utilizan para identificar el estado del paso Grafcet
correspondiente i de un programa.

Parmetros
La ventana Propiedades de paso de Grafcet muestra las siguientes propiedades:

Parmetro Descripcin Valor


Utilizado Direccin utilizada Si se selecciona, esta direccin est en uso en un programa.
Direccin Direccin de objetos de Un programa puede contener hasta 96 objetos de paso de
paso de Grafcet Grafcet.
Smbolo Smbolo El smbolo asociado con este objeto. Para obtener ms
informacin, consulte Definicin y uso de los smbolos
(vase SoMachine Basic, Gua de funcionamiento) en la
Gua de funcionamiento de SoMachine Basic.
Comentario Comentario Comentario asociado con este objeto.

EIO0000001477 12/2016 243


Objetos de software

244 EIO0000001477 12/2016


SoMachine Basic
Objetos PTO
EIO0000001477 12/2016

Captulo 7
Objetos PTO

Objetos PTO

Contenido de este captulo


Este captulo contiene las siguientes secciones:
Seccin Apartado Pgina
7.1 Motion Task Table (%MT) 246
7.2 Salida de tren de pulsos (%PTO) 247

EIO0000001477 12/2016 245


Objetos PTO

Seccin 7.1
Motion Task Table (%MT)

Motion Task Table (%MT)

Motion Task Table

Descripcin general
Consulte la Gua de la biblioteca de funciones avanzadas de su controlador.

246 EIO0000001477 12/2016


Objetos PTO

Seccin 7.2
Salida de tren de pulsos (%PTO)

Salida de tren de pulsos (%PTO)

Salida de tren de pulsos

Descripcin general
Consulte la Gua de la biblioteca de funciones avanzadas de su controlador.

EIO0000001477 12/2016 247


Objetos PTO

248 EIO0000001477 12/2016


SoMachine Basic
Objetos de accionamiento
EIO0000001477 12/2016

Captulo 8
Objetos de accionamiento

Objetos de accionamiento

Objetos de accionamiento

Descripcin general
Los objetos de accionamiento controlan las unidades ATV y otros dispositivos configurados en el
IOScanner serie Modbus.
Consulte la Gua de la biblioteca de funciones avanzadas de su logic controller.

EIO0000001477 12/2016 249


Objetos de accionamiento

250 EIO0000001477 12/2016


SoMachine Basic
Objetos de comunicacin
EIO0000001477 12/2016

Captulo 9
Objetos de comunicacin

Objetos de comunicacin

Introduccin
Los bloques de funciones de comunicacin se utilizan para la comunicacin con dispositivos
Modbus y enviar/recibir mensajes en la modalidad de caracteres (ASCII).
NOTA: En un puerto de comunicacin slo puede estar activo un bloque de funciones de
comunicacin cada vez durante un ciclo de tarea maestra. Si intenta utilizar varios bloques de
funciones de comunicacin o instrucciones EXCH de manera simultnea en el mismo puerto de
comunicacin, los bloques de funciones devuelven un cdigo de error. Por lo tanto, antes de iniciar
un bloque de funciones de comunicacin o una instruccin EXCH, compruebe que no est en
proceso ningn intercambio activo (%MSGx.D es TRUE) en un puerto de comunicacin.

Contenido de este captulo


Este captulo contiene las siguientes secciones:
Seccin Apartado Pgina
9.1 Leer datos desde un dispositivo remoto (%READ_VAR) 252
9.2 Escritura de datos en un dispositivo Modbus (%WRITE_VAR) 262
9.3 Leer y escribir datos en un dispositivo Modbus (%WRITE_READ_VAR) 270
9.4 Comunicacin en una conexin ASCII (%SEND_RECV_MSG) 278
9.5 Enviar Recibir SMS (%SEND_RECV_SMS) 286

EIO0000001477 12/2016 251


Objetos de comunicacin

Seccin 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 seccin se proporcionan descripciones y directrices de programacin para utilizar bloques
de funciones %READ_VAR.

Contenido de esta seccin


Esta seccin contiene los siguientes apartados:
Apartado Pgina
Descripcin 253
Configuracin de la funcin 257
Ejemplo de programacin 261

252 EIO0000001477 12/2016


Objetos de comunicacin

Descripcin

Introduccin
El bloque de funciones %READ_VAR se utiliza para leer datos desde un dispositivo remoto en
Modbus SL o Modbus TCP.

Ilustracin
En esta ilustracin 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 ejecucin de bloques de funciones cuando se detecte un flanco
ascendente.
Si se detecta un segundo flanco ascendente durante la ejecucin del bloque de
funciones, se ignora y el comando en curso no se ve afectado.
Anular BOOL Detiene la ejecucin de bloques de funciones cuando se detecte un flanco
ascendente.
La salida cancelada se establece en 1 y el objeto %READ_VARi.CommError
contiene el cdigo 02 hex (el intercambio se detiene cuando lo solicita un
usuario).

EIO0000001477 12/2016 253


Objetos de comunicacin

NOTA: Configurar la salida Ejecutar o Anular para TRUE en el primer ciclo de tarea en ejecucin
no se detecta como un flanco ascendente. El bloque de funciones debe ver primero la entrada
como FALSE para detectar un flanco ascendente posterior.

Salidas
El bloque de funciones %READ_VAR contiene las siguientes salidas:

Etiqueta Tipo Rango


Terminado BOOL Si TRUE, indica que la ejecucin del bloque de funciones se completa
correctamente sin errores detectados.
Ocupado BOOL Si TRUE, indica que la ejecucin del bloque de funciones est en curso.
Cancelado BOOL Si TRUE, indica que la ejecucin del bloque de funciones se ha cancelado
con la entrada Anular.
Error BOOL Si TRUE, indica que se ha detectado un error. Detenida la ejecucin de
bloques de funciones.
Para obtener ms informacin sobre CommError y OperError,
consulte las tablas cdigos de error de comunicacin (vase pgina 254)
y cdigos de error de funcionamiento (vase pgina 255).

En esta tabla se describen los objetos de salida del bloque de funciones:

Objeto de salida Tipo Descripcin


CommError BYTE Para obtener informacin sobre %READ_VARi.CommError, consulte la
tabla Cdigos de error de comunicacin (vase pgina 254).
OperError DWORD Para obtener informacin sobre %READ_VARi.OperError, consulte la
tabla Cdigos de error de funcionamiento (vase pgina 255).

Cdigos de error de comunicacin


En esta tabla se describen los cdigos de error escritos en el objeto de palabra
%READ_VARi.CommError:

Nombre Cdigo de Descripcin


error
detectado
CommunicationOK 00 (0 hex.) Intercambio correcto.
TimedOut 1 (01 hex) Intercambio detenido porque se ha agotado el timeout.
Abort 2 (02 hex) Parada del intercambio cuando lo solicite el usuario
(entrada Anular).
BadAddress 03 (3 hex) El formato de direccin es incorrecto.
BadRemoteAddr 04 (4 hex) La direccin remota es incorrecta.

254 EIO0000001477 12/2016


Objetos de comunicacin

Nombre Cdigo de Descripcin


error
detectado
BadMgtTable 05 (5 hex) El formato de la tabla de gestin es incorrecto.
BadParameters 6 (06 hex) Los parmetros especficos son incorrectos.
ProblemSendingRq 7 (07 hex) Emisin incorrecta de la peticin al destinatario.
RecvBufferNotAlloc 9 (09 hex) El tamao de bfer de recepcin es insuficiente.
SendBufferNotAlloc 10 (0A hex) El tamao de bfer de transmisin 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 ms
informacin, consulte los cdigos de error de
funcionamiento. (vase pgina 255)
Refused 255 (FF hex) Se rechaza el mensaje. Para obtener ms informacin,
consulte los cdigos de error de funcionamiento.
(vase pgina 255).

Cdigos de error de funcionamiento


Este cdigo de retorno es significativo cuando el cdigo de error de comunicacin (objeto
CommError) tiene el valor:
0 (00 hex) (correcto)
254 (FE hex) (cdigo de excepcin Modbus)
255 (FF hex) (rechazado)

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

CommError Nombre Cdigo de error Descripcin


detectado
0 (00 hex) OperationOK 0 (00000000 hex) Intercambio correcto.
(correcto) NotProcessed 1 (00000001 hex) La peticin no se ha procesado.
BadResponse 2 (00000002 hex) La respuesta recibida es incorrecta.

EIO0000001477 12/2016 255


Objetos de comunicacin

CommError Nombre Cdigo de error Descripcin


detectado
254 (FE hex) IllegalFunction 1 (00000001 hex) El cdigo de funcin recibido en la
(cdigo de peticin no es una accin autorizada
excepcin para el esclavo. El estado del esclavo
Modbus) puede ser errneo para procesar una
peticin especfica.
IllegalDataAddress 2 (00000002 hex) La direccin de datos recibida por el
esclavo no es una direccin autorizada
para el esclavo.
IllegalDataValue 3 (00000003 hex) El valor en el campo de datos de
peticin no es un valor autorizado para
el esclavo.
SlaveDeviceFailure 4 (00000004 hex) El esclavo no logra realizar una accin
solicitada debido a un error grave.
Acknowledge 5 (00000005 hex) El esclavo ha confirmado la peticin,
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
comunicacin.
BadAddr 7 (00000007 hex) La direccin es incorrecta.
SystemResourceMissing 11 (0000000B hex) Recurso del sistema no disponible.
TargetCommInactive 12 (0000000C hex) Hay una funcin de comunicacin de
destino inactiva.
TargetMissing 13 (0000000D hex) No se puede establecer la
comunicacin con el destino.
ChannelNotConfigured 15 (0000000F hex) Va no configurada.

256 EIO0000001477 12/2016


Objetos de comunicacin

Configuracin de la funcin

Propiedades
Haga doble clic en el bloque de funciones para abrir la tabla de propiedades de la funcin
(vase 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 Descripcin


Used Casilla de verificacin Indica si se est utilizando la direccin.
activada/desactivada
Address %READ_VARi, donde i va desde 0 hasta i es el identificador de instancia. Para conocer el
el nmero de objetos disponibles en este nmero mximo de instancias, consulte Nmero
Logic Controller. mximo de objetos (vase Modicon M221, Logic
Controller, Gua de programacin).
Symbol Texto definido por el usuario El smbolo identifica este objeto de forma
inequvoca. Para obtener ms informacin,
consulte la seccin sobre definicin y uso de
smbolos de la SoMachine Basic Gua de
funcionamiento (vase SoMachine Basic, Gua de
funcionamiento).
Link SL1: Serie 1 Seleccin de puerto.
SL2: Serie 2
NOTA: SL2 y ETH1 los puertos de comunicacin
ETH1: Ethernet
incorporados slo estn disponibles en algunas
referencias de los controladores.
ID Este parmetro depende de la Identificador del dispositivo.
configuracin de la conexin: Para obtener ms informacin sobre el ndice
De 1 a 247 para la direccin de Ethernet, consulte la Adicin de servidores
esclavo de lneas serie remotos (vase Modicon M221, Logic Controller,
De 1 a 16 para el ndice Ethernet Gua de programacin).

EIO0000001477 12/2016 257


Objetos de comunicacin

Propiedad Valor Descripcin


Timeout Especificado en unidades de 100 ms, El timeout establece el tiempo mximo de espera
con un valor predeterminado de 100 de recepcin 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 cdigo de error (CommError =
aplicado timeout. 01 hex). Si el sistema recibe una respuesta
despus 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 configuracin SoMachine Basic
(Configuracin de Modbus TCP (vase Modicon
M221, Logic Controller, Gua de programacin) y
Configuracin de lnea serie (vase Modicon
M221, Logic Controller, Gua de programacin)).
ObjType El tipo de objetos para leer: Los tipos de cdigos de funcin de lectura Modbus
%MW (Mbs Fct 3): palabras de son:
memoria (predeterminado) Mbs Fct 3: equivale al cdigo de funcin 03 de
%I (Mbs Fct 2): bits de entrada Modbus
%Q (Mbs Fct 1): bits de salida Mbs Fct 2: equivale al cdigo de funcin 02 de
%IW (Mbs Fct 4): palabras de Modbus
entrada Mbs Fct 1: equivale al cdigo de funcin 01 de
Modbus
Mbs Fct 4: equivale al cdigo de funcin 04 de
Modbus
FirstObj De 0 a 65.535 Direccin del primer objeto del dispositivo remoto
desde donde se leen los valores.
Cantidad De 1 a 125 para %MW Nmero 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 Direccin de la tabla de palabras local (%MW) en la


que se guardan los valores ledos.
Durante la lectura de bits (%I o %Q), los bits
recuperados se escriben en la tabla de palabras
comenzando por la primera direccin
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 comunicacin

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

Objeto Descripcin Rango


%READ_VARi.LINK Seleccin de puerto Consulte Propiedades
(vase pgina 257). Se puede leer y
escribir. Se puede modificar en una
tabla de animacin.
%READ_VARi.ID Identificador del dispositivo remoto Consulte Propiedades
(vase pgina 257). Se puede leer y
escribir. Se puede modificar en una
tabla de animacin.
%READ_VARi.TIMEOUT Timeout del bloque de funciones Consulte Propiedades
(vase pgina 257). Se puede leer y
escribir. Se puede modificar en una
tabla de animacin.
%READ_VARi.OBJTYPE Tipo de objetos que se van a leer Consulte Propiedades
(vase pgina 257). Se puede leer y
escribir. Se puede modificar en una
tabla de animacin.
%READ_VARi.FIRSTOBJ Direccin del primer objeto del Consulte Propiedades
dispositivo remoto desde donde se (vase pgina 257). Se puede leer y
leen los valores. escribir. Se puede modificar en una
tabla de animacin.
%READ_VARi.QUANTITY Nmero de objetos que se van a Consulte Propiedades
leer desde el dispositivo remoto. (vase pgina 257). Se puede leer y
escribir. Se puede modificar en una
tabla de animacin.
%READ_VARi.INDEXDATA Direccin de la tabla de palabras Consulte Propiedades
local (%MW) en la que se guardan (vase pgina 257). Se puede leer en
los valores ledos. una tabla de animacin.
%READ_VARi.COMMERROR Cdigos de error de comunicacin Consulte los cdigos de error de
comunicacin (vase pgina 254).
Slo lectura. Se puede leer en una
tabla de animacin.
%READ_VARi.OPERERROR Cdigos de error de Consulte los cdigos de error de
funcionamiento funcionamiento (vase pgina 255).
Slo lectura. Se puede leer en una
tabla de animacin.
%READ_VARi.DONE Ejecucin completada Consulte Salidas (vase pgina 254).
correctamente Slo lectura. Se puede leer en una
tabla de animacin.

EIO0000001477 12/2016 259


Objetos de comunicacin

Objeto Descripcin Rango


%READ_VARi.BUSY La ejecucin est en proceso Consulte Salidas (vase pgina 254).
Slo lectura. Se puede leer en una
tabla de animacin.
%READ_VARi.ABORTED La ejecucin se ha cancelado Consulte Salidas (vase pgina 254).
Slo lectura. Se puede leer en una
tabla de animacin.
%READ_VARi.ERROR Se ha detectado un error Consulte Salidas (vase pgina 254).
Slo lectura. Se puede leer en una
tabla de animacin.

260 EIO0000001477 12/2016


Objetos de comunicacin

Ejemplo de programacin

Introduccin
El bloque de funciones %READ_VAR se puede configurar como se muestra en este ejemplo de
programacin.

Programacin
Este ejemplo es un bloque de funciones Bloque de funciones %READ_VAR:

Escaln Instruccin
0 BLK %READ_VAR0
LD %I0.0
EXECUTE
LD %I0.1
ABORT
OUT_BLK
LD DONE
ST %Q0.0
LD BUSY
ST %Q0.1
LD ABORTED
ST %M1
LD ERROR
ST %Q0.2
END_BLK

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 18) para obtener el diagrama de
contactos equivalente.

EIO0000001477 12/2016 261


Objetos de comunicacin

Seccin 9.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 seccin se proporcionan descripciones y directrices de programacin para utilizar bloques
de funciones %WRITE_VAR.

Contenido de esta seccin


Esta seccin contiene los siguientes apartados:
Apartado Pgina
Descripcin 263
Configuracin de la funcin 265
Ejemplo de programacin 269

262 EIO0000001477 12/2016


Objetos de comunicacin

Descripcin

Introduccin
El bloque de funciones %WRITE_VAR se utiliza para escribir datos en un dispositivo externo
utilizando el protocolo Modbus SL o Modbus TCP.

Ilustracin
En esta ilustracin 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 ejecucin de bloques de funciones cuando se detecte un flanco
ascendente.
Si se detecta un segundo flanco ascendente durante la ejecucin del bloque de
funciones, se ignora y el comando en curso no se ve afectado.
Anular BOOL Detiene la ejecucin de bloques de funciones cuando se detecte un flanco
ascendente.
La salida cancelada se establece en 1 y el objeto %WRITE_VARi.CommError
contiene el cdigo 02 hex (el intercambio se detiene cuando lo solicita un
usuario).

NOTA: Configurar la salida Ejecutar o Anular para TRUE en el primer ciclo de tarea en ejecucin
no se detecta como un flanco ascendente. El bloque de funciones debe ver primero la entrada
como FALSE para detectar un flanco ascendente posterior.

EIO0000001477 12/2016 263


Objetos de comunicacin

Salidas
El bloque de funciones %WRITE_VAR contiene las siguientes salidas:

Etiqueta Tipo Rango


Terminado BOOL Si TRUE, indica que la ejecucin del bloque de funciones se completa
correctamente sin errores detectados.
Ocupado BOOL Si TRUE, indica que la ejecucin del bloque de funciones est en curso.
Cancelado BOOL Si TRUE, indica que la ejecucin del bloque de funciones se ha cancelado
con la entrada Anular.
Error BOOL Si TRUE, indica que se ha detectado un error. Detenida la ejecucin de
bloques de funciones.
Para obtener ms informacin sobre CommError y OperError,
consulte las tablas cdigos de error de comunicacin (vase pgina 254)
y cdigos de error de funcionamiento (vase pgina 255).

En esta tabla se describen los objetos de salida del bloque de funciones:

Objeto de salida Tipo Descripcin


CommError BYTE Para obtener informacin sobre %READ_VARi.CommError, consulte la
tabla Cdigos de error de comunicacin (vase pgina 254).
OperError DWORD Para obtener informacin sobre %READ_VARi.OperError, consulte la
tabla Cdigos de error de funcionamiento (vase pgina 255).

Cdigos de error de comunicacin


Consulte los cdigos de error de comunicacin (vase pgina 254).

Cdigos de error de funcionamiento


Consulte los cdigos de error de funcionamiento (vase pgina 255).

264 EIO0000001477 12/2016


Objetos de comunicacin

Configuracin de la funcin

Propiedades
Haga doble clic en el bloque de funciones para abrir la tabla de propiedades de la funcin.
Las propiedades de este bloque de funciones no se pueden modificar en la modalidad online.
El bloque de funciones %WRITE_VAR tiene las propiedades siguientes:

Propiedad Valor Descripcin


Used Casilla de verificacin activada / desactivada Indica si se est utilizando la direccin.
Address %WRITE_VARi, donde i va desde 0 hasta el nmero de i es el identificador de instancia. Para
objetos disponibles en este Logic Controller. conocer la cantidad mxima de instancias,
consulte la tabla Nmero mximo de
objetos (vase Modicon M221, Logic
Controller, Gua de programacin).
Smbolo Texto definido por el usuario El smbolo identifica este objeto de forma
inequvoca. Para obtener ms informacin,
consulte la seccin sobre definicin y uso
de smbolos de la SoMachine Basic Gua
de funcionamiento (vase SoMachine
Basic, Gua de funcionamiento).
Link SL1: Serie 1 Seleccin de puerto.
SL2: Serie 2
NOTA: SL2 y ETH1 los puertos de
ETH1: Ethernet
comunicacin incorporados slo estn
disponibles en algunas referencias de los
controladores.
ID Este parmetro depende de la configuracin de la Identificador del dispositivo.
conexin: Para el valor 0, el controlador maestro
0 para difusin Modbus inicia una peticin de difusin
De 1 a 247 para la direccin de esclavo de lneas destinada a todos los esclavos conectados.
serie En este caso, el ID de esclavo debe
De 1 a 16 para el ndice Ethernet establecerse en 0. En el modo de peticin
de difusin, los esclavos no envan tramas
de peticin al maestro.
Para obtener ms informacin sobre el
ndice Ethernet, consulte la Adicin de
servidores remotos (vase Modicon M221,
Logic Controller, Gua de programacin).

EIO0000001477 12/2016 265


Objetos de comunicacin

Propiedad Valor Descripcin


Timeout Especificado en unidades de 100 ms, con un valor El timeout establece el tiempo mximo de
predeterminado de 100 (10 segundos). espera de recepcin de una respuesta.
Un valor de 0 significa que no se ha aplicado timeout. Si el timeout finaliza, el intercambio finaliza
en error con un cdigo de error
(CommError = 01 hex). Si el sistema recibe
una respuesta despus 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 configuracin SoMachine
Basic (Configuracin de Modbus TCP
(vase Modicon M221, Logic Controller,
Gua de programacin) y Configuracin de
lnea serie (vase Modicon M221, Logic
Controller, Gua de programacin)).
ObjType Se admiten los siguientes cdigos de funcin 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
Multiple coil (Mbs 15) cdigo de funcin Modbus 6
Multiple register (Mbs 16) Single register (Mbs 6): palabra de
memoria (%MW). Equivale al cdigo de
funcin Modbus 6
Multiple coil (Mbs 15): bits de memoria
(%M) o bits de salida (%Q). Equivale al
cdigo de funcin Modbus 15
Multiple register (Mbs 16): palabras de
memoria (%MW). Equivale al cdigo de
funcin Modbus 16
NOTA: Para utilizar los cdigos de
funcin Modbus Single Coil (Mbs 5) o
Single Register (Mbs 6), la aplicacin
debe configurarse con un nivel funcional
mnimo de 5.0.
FirstObj De 0 a 65.535 Direccin del primer objeto del dispositivo
remoto en el que se escriben los valores.
Cantidad De 1 a 123 (registro interno) para %MW Nmero de objetos que se van a escribir en
De 1 a 1968 (bit interno) para %M o %Q el dispositivo remoto.
Se ignora para objetos de tipo Single Coil y
Single Register.

266 EIO0000001477 12/2016


Objetos de comunicacin

Propiedad Valor Descripcin


IndexData De 0 a 7999 Direccin de la tabla de palabras local
(%MW) que contiene los valores que se van a
escribir en el dispositivo remoto.
Durante la escritura de bits (%M o %Q), los
valores que se vayan a escribir se
recuperan de la tabla de palabras
comenzando por la primera direccin
especificada. Por ejemplo, al escribir 16 bits
con IndexData = 10 y Cantidad = 16, los
valores se recuperan de %MW10:X0 hasta
%MW10:X15.
Comment Texto definido por el usuario Un comentario para asociar a este objeto.

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

Objeto Descripcin Rango


%WRITE_VARi.LINK Seleccin de puerto Consulte Propiedades
(vase pgina 265). Se puede leer
y escribir. Se puede modificar en
una tabla de animacin.
%WRITE_VARi.ID Identificador del dispositivo remoto Consulte Propiedades
(vase pgina 265). Se puede leer
y escribir. Se puede modificar en
una tabla de animacin.
%WRITE_VARi.TIMEOUT Timeout del bloque de funciones Consulte Propiedades
(vase pgina 265). Se puede leer
y escribir. Se puede modificar en
una tabla de animacin.
%WRITE_VARi.OBJTYPE Tipo de objetos que se van a Consulte Propiedades
escribir (vase pgina 265). Se puede leer
y escribir. Se puede modificar en
una tabla de animacin.
%WRITE_VARi.FIRSTOBJ Direccin del primer objeto del Consulte Propiedades
dispositivo remoto en el que se (vase pgina 265). Se puede leer
escriben los valores. y escribir. Se puede modificar en
una tabla de animacin.
%WRITE_VARi.QUANTITY Nmero de objetos que se van a Consulte Propiedades
escribir en el dispositivo remoto. (vase pgina 265). Se puede leer
y escribir. Se puede modificar en
una tabla de animacin.

EIO0000001477 12/2016 267


Objetos de comunicacin

Objeto Descripcin Rango


%WRITE_VARi.INDEXDATA Direccin de la tabla de palabras Consulte Propiedades
local (%MW) que contiene los (vase pgina 265). Se puede leer
valores que se van a escribir en el y escribir. Se puede modificar en
dispositivo remoto. una tabla de animacin.
%WRITE_VARi.COMMERROR Cdigos de error de comunicacin Consulte los cdigos de error de
comunicacin (vase pgina 264).
Slo lectura. Se puede leer en una
tabla de animacin.
%WRITE_VARi.OPERERROR Cdigos de error de Consulte los cdigos de error de
funcionamiento funcionamiento
(vase pgina 264). Slo lectura.
Se puede leer en una tabla de
animacin.
%WRITE_VARi.DONE Ejecucin completada Consulte Salidas
correctamente (vase pgina 264). Slo lectura.
Se puede leer en una tabla de
animacin.
%WRITE_VARi.BUSY La ejecucin est en proceso Consulte Salidas
(vase pgina 264). Slo lectura.
Se puede leer en una tabla de
animacin.
%WRITE_VARi.ABORTED La ejecucin se ha cancelado Consulte Salidas
(vase pgina 264). Slo lectura.
Se puede leer en una tabla de
animacin.
%WRITE_VARi.ERROR Se ha detectado un error Consulte Salidas
(vase pgina 264). Slo lectura.
Se puede leer en una tabla de
animacin.

268 EIO0000001477 12/2016


Objetos de comunicacin

Ejemplo de programacin

Introduccin
El bloque de funciones %WRITE_VAR se puede configurar como se muestra en este ejemplo de
programacin.

Programacin
Este ejemplo es un bloque de funciones Bloque de funciones %WRITE_VAR:

Escaln Instruccin
0 BLK %WRITE_VAR0
LD %I0.0
EXECUTE
LD %I0.1
ABORT
OUT_BLK
LD DONE
ST %Q0.0
LD BUSY
ST %Q0.1
LD ABORTED
ST %M1
LD ERROR
ST %Q0.2
END_BLK

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 18) para obtener el diagrama de
contactos equivalente.

EIO0000001477 12/2016 269


Objetos de comunicacin

Seccin 9.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 seccin se proporcionan descripciones y directrices de programacin para utilizar bloques
de funciones %WRITE_READ_VAR.

Contenido de esta seccin


Esta seccin contiene los siguientes apartados:
Apartado Pgina
Descripcin 271
Configuracin de la funcin 273
Ejemplo de programacin 277

270 EIO0000001477 12/2016


Objetos de comunicacin

Descripcin

Introduccin
El bloque de funciones %WRITE_READ_VAR se utiliza para leer y escribir datos guardados en la
memoria de las palabras internas a un dispositivo externo utilizando el protocolo Modbus SL o
Modbus TCP.
Este bloque de funciones ejecuta una nica peticin de escritura seguida de una nica peticin de
lectura en la misma transaccin.

Ilustracin
En esta ilustracin 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 ejecucin de bloques de funciones cuando se detecte un flanco
ascendente.
Si se detecta un segundo flanco ascendente durante la ejecucin del bloque de
funciones, se ignora y el comando en curso no se ve afectado.
Anular BOOL Detiene la ejecucin de bloques de funciones cuando se detecte un flanco
ascendente.
La salida cancelada se establece en 1 y el objeto
%WRITE_READ_VARi.CommError contiene el cdigo 02 hex (el intercambio se
detiene cuando lo solicita un usuario).

EIO0000001477 12/2016 271


Objetos de comunicacin

NOTA: Configurar la salida Ejecutar o Anular para TRUE en el primer ciclo de tarea en ejecucin
no se detecta como un flanco ascendente. 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, indica que la ejecucin del bloque de funciones se completa
correctamente sin errores detectados.
Ocupado BOOL Si TRUE, indica que la ejecucin del bloque de funciones est en curso.
Cancelado BOOL Si TRUE, indica que la ejecucin del bloque de funciones se ha cancelado
con la entrada Anular.
Error BOOL Si TRUE, indica que se ha detectado un error. Detenida la ejecucin de
bloques de funciones.
Para obtener ms informacin sobre CommError y OperError,
consulte las tablas cdigos de error de comunicacin (vase pgina 254)
y cdigos de error de funcionamiento (vase pgina 255).

En esta tabla se describen los objetos de salida del bloque de funciones:

Objeto de salida Tipo Descripcin


CommError BYTE Para obtener informacin sobre %READ_VARi.CommError, consulte la
tabla Cdigos de error de comunicacin (vase pgina 254).
OperError DWORD Para obtener informacin sobre %READ_VARi.OperError, consulte la
tabla Cdigos de error de funcionamiento (vase pgina 255).

Cdigos de error de comunicacin


Consulte los cdigos de error de comunicacin (vase pgina 254).

Cdigos de error de funcionamiento


Consulte los cdigos de error de funcionamiento (vase pgina 255).

272 EIO0000001477 12/2016


Objetos de comunicacin

Configuracin de la funcin

Propiedades
Haga doble clic en el bloque de funciones para abrir la tabla de propiedades de la funcin.
Las propiedades de este bloque de funciones no se pueden modificar en la modalidad online.
El bloque de funciones %WRITE_READ_VAR tiene las propiedades siguientes:

Propiedad Valor Descripcin


Used Casilla de verificacin activada / Indica si se est utilizando la direccin.
desactivada
Address %WRITE_READ_VARi, donde i va i es el identificador de instancia. Para
desde 0 hasta el nmero de objetos conocer la cantidad mxima de instancias,
disponibles en este Logic Controller. consulte la tabla Nmero mximo de objetos
(vase Modicon M221, Logic Controller, Gua
de programacin).
Smbolo Texto definido por el usuario El smbolo identifica este objeto de forma
inequvoca. Para obtener ms informacin,
consulte la seccin sobre definicin y uso de
smbolos de la SoMachine Basic Gua de
funcionamiento (vase SoMachine Basic,
Gua de funcionamiento).
Link SL1: Serie 1 Seleccin de puerto
SL2: Serie 2
NOTA: SL2 y ETH1 los puertos de
ETH1: Ethernet
comunicacin incorporados slo estn
disponibles en algunas referencias de los
controladores.
ID Este parmetro depende de la Identificador del dispositivo
configuracin de la conexin: Para obtener ms informacin sobre el ndice
De 1 a 247 para la direccin de Ethernet, consulte la Adicin de servidores
esclavo de lneas serie remotos (vase Modicon M221, Logic
De 1 a 16 para el ndice Ethernet Controller, Gua de programacin).

EIO0000001477 12/2016 273


Objetos de comunicacin

Propiedad Valor Descripcin


Timeout Especificado en unidades de El timeout establece el tiempo mximo de
100 ms, con un valor espera de recepcin de una respuesta.
predeterminado de 100 Si el timeout finaliza, el intercambio finaliza en
(10 segundos). error con un cdigo de error (CommError =
Un valor de 0 significa que no se ha 01 hex). Si el sistema recibe una respuesta
aplicado timeout. despus 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 configuracin SoMachine Basic
(Configuracin de Modbus TCP
(vase Modicon M221, Logic Controller, Gua
de programacin) y Configuracin de lnea
serie (vase Modicon M221, Logic Controller,
Gua de programacin)).
ObjType %MW (Mbs Fct 23): palabras de El tipo de cdigo de funcin de
memoria lectura/escritura Modbus es Mbs Fct 23, que
equivale al cdigo 23 de funcin de Modbus.
FirstWriteObj De 0 a 65.535 Direccin del primer objeto del dispositivo
remoto en el que se escriben los valores.
WriteQuantity De 1 a 121 Nmero de objetos que se van a escribir en el
dispositivo remoto.
IndexDataOut De 0 a 7999 Direccin de la tabla de palabras local (%MW)
que contiene los valores que se van a escribir
en el dispositivo remoto.
FirstReadObj De 0 a 65.535 Direccin del primer objeto del dispositivo
remoto desde donde se leen los valores.
ReadQuantity De 1 a 125 Nmero de objetos que se van a leer desde el
dispositivo remoto.
IndexDataIn De 0 a 7999 Direccin de la tabla de palabras local (%MW)
en la que se guardan los valores ledos.
Comment Texto definido por el usuario Un comentario para asociar a este objeto.

274 EIO0000001477 12/2016


Objetos de comunicacin

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

Objeto Descripcin Rango


%WRITE_READ_VARi.LINK Seleccin de puerto Consulte Propiedades
(vase pgina 273). Se puede
leer y escribir. Se puede
modificar en una tabla de
animacin.
%WRITE_READ_VARi.ID Identificador del dispositivo Consulte Propiedades
remoto (vase pgina 273). Se puede
leer y escribir. Se puede
modificar en una tabla de
animacin.
%WRITE_READ_VARi.TIMEOUT Timeout del bloque de Consulte Propiedades
funciones (vase pgina 273). Se puede
leer y escribir. Se puede
modificar en una tabla de
animacin.
%WRITE_READ_VARi.OBJTYPE Tipo de objetos que se van a Consulte Propiedades
leer (vase pgina 273). Se puede
leer y escribir. Se puede
modificar en una tabla de
animacin.
%WRITE_READ_VARi.FIRSTWRITEOBJ Direccin del primer objeto del Consulte Propiedades
dispositivo remoto en el que (vase pgina 273). Se puede
se escriben los valores. leer y escribir. Se puede
modificar en una tabla de
animacin.
%WRITE_READ_VARi.WRITEQUANTITY Nmero de objetos que se van Consulte Propiedades
a escribir en el dispositivo (vase pgina 273). Se puede
remoto. leer y escribir. Se puede
modificar en una tabla de
animacin.
%WRITE_READ_VARi.INDEXDATAOUT Direccin de la tabla de Consulte Propiedades
palabras local (%MW) que (vase pgina 273). Se puede
contiene los valores que se leer y escribir. Se puede
van a escribir en el dispositivo modificar en una tabla de
remoto. animacin.
%WRITE_READ_VARi.FIRSTREADOBJ Direccin del primer objeto del Consulte Propiedades
dispositivo remoto desde (vase pgina 273). Se puede
donde se leen los valores. leer y escribir. Se puede
modificar en una tabla de
animacin.

EIO0000001477 12/2016 275


Objetos de comunicacin

Objeto Descripcin Rango


%WRITE_READ_VARi.READQUANTITY Nmero de objetos que se van Consulte Propiedades
a leer desde el dispositivo (vase pgina 273). Se puede
remoto. leer y escribir. Se puede
modificar en una tabla de
animacin.
%WRITE_READ_VARi.INDEXDATAIN Direccin de la tabla de Consulte Propiedades
palabras local (%MW) en la que (vase pgina 273). Se puede
se guardan los valores ledos. leer y escribir. Se puede
modificar en una tabla de
animacin.
%WRITE_READ_VARi.COMMERROR Cdigos de error de Consulte los cdigos de error de
comunicacin comunicacin
(vase pgina 272). Slo
lectura. Se puede leer en una
tabla de animacin.
%WRITE_READ_VARi.OPERERROR Cdigos de error de Consulte los cdigos de error de
funcionamiento funcionamiento
(vase pgina 272). Slo
lectura. Se puede leer en una
tabla de animacin.
%WRITE_READ_VARi.DONE Ejecucin completada Consulte Salidas
correctamente (vase pgina 272). Slo
lectura. Se puede leer en una
tabla de animacin.
%WRITE_READ_VARi.BUSY La ejecucin est en proceso Consulte Salidas
(vase pgina 272). Slo
lectura. Se puede leer en una
tabla de animacin.
%WRITE_READ_VARi.ABORTED La ejecucin se ha cancelado Consulte Salidas
(vase pgina 272). Slo
lectura. Se puede leer en una
tabla de animacin.
%WRITE_READ_VARi.ERROR Se ha detectado un error Consulte Salidas
(vase pgina 272). Slo
lectura. Se puede leer en una
tabla de animacin.

276 EIO0000001477 12/2016


Objetos de comunicacin

Ejemplo de programacin

Introduccin
El bloque de funciones %WRITE_READ_VAR se puede configurar como se muestra en este ejemplo
de programacin.

Programacin
Este ejemplo es un bloque de funciones Bloque de funciones %WRITE_READ_VAR:

Escaln Instruccin
0 BLK %WRITE_READ_VAR0
LD %I0.0
EXECUTE
LD %I0.1
ABORT
OUT_BLK
LD DONE
ST %Q0.0
LD BUSY
ST %Q0.1
LD ABORTED
ST %M1
LD ERROR
ST %Q0.2
END_BLK

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 18) para obtener el diagrama de
contactos equivalente.

EIO0000001477 12/2016 277


Objetos de comunicacin

Seccin 9.4
Comunicacin en una conexin ASCII (%SEND_RECV_MSG)

Comunicacin en una conexin ASCII (%SEND_RECV_MSG)

Utilizar bloques de funciones %SEND_RECV_MSG


En esta seccin se proporcionan descripciones y directrices de programacin para utilizar bloques
de funciones %SEND_RECV_MSG.

Contenido de esta seccin


Esta seccin contiene los siguientes apartados:
Apartado Pgina
Descripcin 279
Configuracin de la funcin 282
Ejemplo de programacin 285

278 EIO0000001477 12/2016


Objetos de comunicacin

Descripcin

Introduccin
El bloque de funciones %SEND_RECV_MSG se utiliza para enviar o recibir datos en una lnea serie
configurada para el protocolo ASCII.

Ilustracin
En esta ilustracin 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 ejecucin de bloques de funciones cuando se detecte un flanco
ascendente.
Si se detecta un segundo flanco ascendente durante la ejecucin del bloque de
funciones, se ignora y el comando en curso no se ve afectado.
Anular BOOL Detiene la ejecucin de bloques de funciones cuando se detecte un flanco
ascendente.
La salida cancelada se establece en 1 y el objeto
%SEND_RECV_MSGi.CommError contiene el cdigo 02 hex (el intercambio se
detiene cuando lo solicita un usuario).

EIO0000001477 12/2016 279


Objetos de comunicacin

NOTA: Configurar la salida Ejecutar o Anular para TRUE en el primer ciclo de tarea en ejecucin
no se detecta como un flanco ascendente. El bloque de funciones debe ver primero la entrada
como FALSE para detectar un flanco ascendente posterior.

Salidas
El bloque de funciones %SEND_RECV_MSG contiene las siguientes salidas:

Etiqueta Tipo Valor


Terminado BOOL Si TRUE, indica que la ejecucin del bloque de funciones se completa
correctamente sin errores detectados.
Ocupado BOOL Si TRUE, indica que la ejecucin del bloque de funciones est en curso.
Cancelado BOOL Si TRUE, indica que la ejecucin del bloque de funciones se ha cancelado
con la entrada Anular.
Error BOOL Si TRUE, indica que se ha detectado un error. Detenida la ejecucin de
bloques de funciones.
Para obtener ms informacin sobre CommError y OperError,
consulte las tablas cdigos de error de comunicacin (vase pgina 254)
y cdigos de error de funcionamiento (vase pgina 255).

Cdigos de error de comunicacin


Consulte los cdigos de error de comunicacin (vase pgina 254).

Cdigos de error de funcionamiento


Consulte los cdigos de error de funcionamiento (vase pgina 255).

Condiciones de finalizacin
Para una operacin de slo envo, la salida Finalizado se establece en TRUE cuando se han
enviado todos los datos (incluido cualquier carcter de arranque/parada).
Para una operacin de slo recepcin, el sistema recibe caracteres hasta que se cumple la
condicin de finalizacin. Cuando se alcanza la condicin de finalizacin, la salida Finalizado se
establece en TRUE. A continuacin, los caracteres recibidos se copian en BufferToRecv hasta los
caracteres sizeRecvBuffer. sizeRecvBuffer no es una condicin de finalizacin.

280 EIO0000001477 12/2016


Objetos de comunicacin

La condicin de finalizacin debe estar establecida en la pantalla Configuracin de la lnea serie


(vase Modicon M221, Logic Controller, Gua de programacin):

La condicin de finalizacin se puede establecer en:


Un nmero de bytes recibidos: Longitud recibida de trama
Una finalizacin de silencio de trama: Timeout de trama recibido (ms)
Una estructura de trama: Primer carcter de fin

Para una operacin de slo recepcin, primero se envan los caracteres a la lnea y entonces se
reciben hasta que se cumple la condicin de finalizacin (el mismo proceso que en slo
recepcin).

EIO0000001477 12/2016 281


Objetos de comunicacin

Configuracin de la funcin

Propiedades
Haga doble clic en el bloque de funciones para abrir la tabla de propiedades de la funcin.
Las propiedades de este bloque de funciones no se pueden modificar en la modalidad online.
El bloque de funciones %SEND_RECV_MSG tiene las propiedades siguientes:

Propiedad Valor Descripcin


Used Casilla de verificacin activada/desactivada Indica si se est utilizando la
direccin.
Address %SEND_RECV_MSGi, donde i va desde 0 i es el identificador de instancia.
hasta el nmero de objetos disponibles en este Para conocer la cantidad mxima de
Logic Controller. instancias, consulte la gua de
programacin para el controlador
lgico.
Symbol Texto definido por el usuario El smbolo identifica este objeto de
forma inequvoca. Para obtener ms
informacin, consulte la seccin
sobre definicin y uso de smbolos de
la SoMachine Basic Gua de
funcionamiento (vase SoMachine
Basic, Gua de funcionamiento).
Link SL1: Serie 1 Seleccin de puerto
SL2: Serie 2
NOTA: El puerto de comunicacin
incorporado SL2 slo est disponible
en algunas referencias de
controladores.
Timeout Especificado en unidades de 100 ms, con un El timeout establece el tiempo
valor predeterminado de 100 (10 segundos). mximo de espera de recepcin de
Un valor de 0 significa que no se ha aplicado una respuesta.
timeout. Si el timeout finaliza, el intercambio
finaliza en error con un cdigo de
error (CommError = 01 hex). Si el
sistema recibe una respuesta
despus de la caducidad del timeout,
esta respuesta se ignora.
NOTA: El timeout establecido en el
bloque de funciones anula el valor
establecido en las pantallas de
configuracin de SoMachine Basic
(Configuracin de Modbus TCP y
Configuracin de lnea serie; consulte
la gua de programacin del
controlador lgico).

282 EIO0000001477 12/2016


Objetos de comunicacin

Propiedad Valor Descripcin


QuantityToSend De 0 a 254 Nmero de bytes para enviar
Un valor de 0 significa que el bloque de
funciones slo recibe datos.
BufferToSend De 0 a 7999 Direccin del primer objeto para
enviar
SizeRecvBuffer De 0 a 254 Tamao disponible en bytes del bfer
Un valor de 0 significa que el bloque de de recepcin.
funciones slo enva datos.
BufferToRecv De 0 a 7999 La primera direccin de la tabla de
palabras en la que se guardan los
valores de lectura (%MW).
QuantityRecv De 0 a 254 Cantidad de datos recibidos en bytes
Comentario Texto definido por el usuario Un comentario para asociar a este
objeto.

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

Objeto Descripcin Rango


%SEND_RECV_MSGi.LINK Seleccin de puerto Consulte Propiedades
(vase pgina 282). Se puede
leer y escribir. Se puede
modificar en una tabla de
animacin.
%SEND_RECV_MSGi.TIMEOUT Timeout del bloque de Consulte Propiedades
funciones (vase pgina 282). Se puede
leer y escribir. Se puede
modificar en una tabla de
animacin.
%SEND_RECV_MSGi.QUANTITYTOSEND Nmero de bytes para enviar Consulte Propiedades
(vase pgina 282). Se puede
leer y escribir. Se puede
modificar en una tabla de
animacin.
%SEND_RECV_MSGi.BUFFERTOSEND Direccin del primer objeto Consulte Propiedades
para enviar (vase pgina 282). Se puede
leer y escribir. Se puede
modificar en una tabla de
animacin.

EIO0000001477 12/2016 283


Objetos de comunicacin

Objeto Descripcin Rango


%SEND_RECV_MSGi.SIZERECVBUFFER Tamao disponible en bytes Consulte Propiedades
del bfer de recepcin (vase pgina 282). Se puede
leer y escribir. Se puede
modificar en una tabla de
animacin.
%SEND_RECV_MSGi.BUFFERTORECV Primera direccin de la tabla de Consulte Propiedades
palabras en la que se guardan (vase pgina 282). Se puede
los valores de lectura leer y escribir. Se puede
modificar en una tabla de
animacin.
%SEND_RECV_MSGi.QUANTITYRECV Cantidad de datos recibidos en Consulte Propiedades
bytes (vase pgina 282). Slo se
pueden leer. Se puede
modificar en una tabla de
animacin.
%SEND_RECV_MSGi.COMMERROR Cdigos de error de Consulte los cdigos de error
comunicacin de comunicacin
(vase pgina 280). Slo
lectura. Se puede leer en una
tabla de animacin.
%SEND_RECV_MSGi.OPERERROR Cdigos de error de Consulte los cdigos de error
funcionamiento de funcionamiento
(vase pgina 280). Slo
lectura. Se puede leer en una
tabla de animacin.
%SEND_RECV_MSGi.DONE Ejecucin completada Consulte Salidas
correctamente (vase pgina 280). Slo
lectura. Se puede leer en una
tabla de animacin.
%SEND_RECV_MSGi.BUSY La ejecucin est en proceso Consulte Salidas
(vase pgina 280). Slo
lectura. Se puede leer en una
tabla de animacin.
%SEND_RECV_MSGi.ABORTED La ejecucin se ha cancelado Consulte Salidas
(vase pgina 280). Slo
lectura. Se puede leer en una
tabla de animacin.
%SEND_RECV_MSGi.ERROR Se ha detectado un error Consulte Salidas
(vase pgina 280). Slo
lectura. Se puede leer en una
tabla de animacin.

284 EIO0000001477 12/2016


Objetos de comunicacin

Ejemplo de programacin

Introduccin
El bloque de funciones %SEND_RECV_MSG se puede configurar como se muestra en este ejemplo
de programacin.

Programacin
Este ejemplo es un bloque de funciones Bloque de funciones %SEND_RECV_MSG:

Escaln Instruccin
0 BLK %SEND_RECV_MSG0
LD %I0.0
EXECUTE
LD %I0.1
ABORT
OUT_BLK
LD DONE
ST %Q0.0
LD BUSY
ST %Q0.1
LD ABORTED
ST %M1
LD ERROR
ST %Q0.2
END_BLK

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 18) para obtener el diagrama de
contactos equivalente.

EIO0000001477 12/2016 285


Objetos de comunicacin

Seccin 9.5
Enviar Recibir SMS (%SEND_RECV_SMS)

Enviar Recibir SMS (%SEND_RECV_SMS)

Utilizacin del bloque de funciones %SEND_RECV_SMS


En esta seccin se proporcionan descripciones y directrices de programacin para utilizar el
bloque de funciones %SEND_RECV_SMS.

Contenido de esta seccin


Esta seccin contiene los siguientes apartados:
Apartado Pgina
Descripcin 287
Configuracin de funciones 295

286 EIO0000001477 12/2016


Objetos de comunicacin

Descripcin

Introduccin
El bloque de funciones %SEND_RECV_SMS sirve para enviar y recibir mensajes SMS (servicio de
mensajes cortos) mediante un mdem conectado a una lnea serie. Por ejemplo, el controlador
puede enviar un SMS para transmitir una alarma a un telfono mvil especificado, o recibir un
SMS para finalizar una funcin de la mquina.
NOTA: La aplicacin debe estar configurada con un nivel funcional como mnimo del Nivel 3.2 para
utilizar la funcin de SMS.
El bloque de funciones %SEND_RECV_SMS se utiliza para una de estas opciones:
Enviar un SMS a un solo destinatario, o
Recibir un SMS filtrado por una tabla de nmeros de telfono aprobados

En un programa slo se puede utilizar 1 bloque de funciones %SEND_RECV_SMS.


Se debe tener cuidado y adoptar las medidas adecuadas para utilizar la funcin de SMS como
dispositivo de control remoto, con el fin de evitar consecuencias no deseadas en el funcionamiento
solicitado de mquinas, cambios de estado del controlador, o alteracin de la memoria de datos o
de los parmetros de funcionamiento de la mquina.

ADVERTENCIA
FUNCIONAMIENTO IMPREVISTO DEL EQUIPO
Asegrese de que un observador local, competente y cualificado, est presente al utilizarlo
desde una ubicacin remota.
Configure e instale la entrada Run/Stop en la aplicacin con el objetivo de poder mantener el
control local sobre el inicio y la detencin del controlador, independientemente de los
comandos remotos enviados al controlador.
El incumplimiento de estas instrucciones puede causar la muerte, lesiones serias o dao al
equipo.

La funcin de SMS depende de una red de telecomunicaciones externa y sus parmetros. Puede
que los comandos y mensajes SMS transmitidos a la mquina se retrasen, no se enven o no se
reciban. No utilice la funcin de SMS para funciones crticas para la seguridad u otras funciones
crticas.

EIO0000001477 12/2016 287


Objetos de comunicacin

ADVERTENCIA
FUNCIONAMIENTO IMPREVISTO DEL EQUIPO
No permita funciones crticas para la seguridad en comandos por SMS.
No utilice comandos o mensajes SMS para ninguna funcin que sea crtica.
El incumplimiento de estas instrucciones puede causar la muerte, lesiones serias o dao al
equipo.

NOTA: Verifique las funciones de SMS y la red de telecomunicaciones asociada durante la puesta
en funcionamiento, y prubela peridicamente para verificar la cobertura de la red.

Ilustracin
En esta ilustracin se muestra el bloque de funciones %SEND_RECV_SMS:

288 EIO0000001477 12/2016


Objetos de comunicacin

Entradas
En esta tabla se describen las entradas del bloque de funciones:

Etiqueta Tipo Rango


Execute BOOL Inicia la ejecucin del bloque de funciones cuando se detecta un flanco
ascendente.
Si se detecta un segundo flanco ascendente durante la ejecucin del bloque de
funciones, se ignora y el comando en curso no se ve afectado.
Anular BOOL Detiene la ejecucin del bloque de funciones cuando se detecta un flanco
ascendente.
La salida Aborted se establece en 1 y el objeto %SEND_RECV_SMSi.CommError
contiene el cdigo 02 hex (intercambio detenido en un flanco ascendente en la
entrada Abort).
S BOOL Si es 1, el bloque de funciones est configurado para enviar un SMS.
Si es 0, el bloque de funciones est configurado para recibir un SMS.

NOTA: Configurar la salida Execute o Abort para 1 en el primer ciclo de tarea en ejecucin no se
detecta como un flanco ascendente. El bloque de funciones debe ver primero la entrada como 0
para detectar un flanco ascendente posterior.
En esta tabla se describen los objetos de entrada del bloque de funciones:

Objeto de entrada Tipo Rango de Descripcin


valores
Link BYTE 1 - SL1 Indica la lnea serie utilizada para la comunicacin a travs
2 - SL2 del mdem.
Timeout WORD De 0 a 255 Establece el tiempo mximo de espera de recepcin de
una respuesta del mdem.
Especificado en unidades de 100 ms, con un valor
predeterminado de 100 (10 segundos). El valor 0 significa
que no se ha establecido timeout.
Index WORD De 0 a 15 Se utiliza el valor del ndice:
En el envo, para seleccionar el texto que se va a enviar
desde la tabla Mensajes.
0 corresponde a la primera cadena de la tabla.
En la recepcin, para seleccionar una cadena de la
tabla Comandos que coincida con el texto recibido.
Se establece en FFFF hex si no se encuentra ninguna
cadena coincidente.

EIO0000001477 12/2016 289


Objetos de comunicacin

Objeto de entrada Tipo Rango de Descripcin


valores
VAD DINT De Durante el envo, el valor de %SEND_RECV_SMSi.VAD
2147483648 a sustituye al marcador de posicin $VAD en el texto del
2147483647 SMS.
Durante la recepcin, el valor de
%SEND_RECV_SMSi.VAD contiene el valor en el que se
inserta el marcador de posicin $VAD en el SMS
almacenado en la tabla Comandos.
VBD DINT De Durante el envo, el valor de %SEND_RECV_SMSi.VBD
2147483648 a sustituye al marcador de posicin $VBD en el texto del
2147483647 SMS.
Durante la recepcin, el valor de
%SEND_RECV_SMSi.VBD contiene el valor en el que se
inserta el marcador de posicin $VBD en el SMS
almacenado en la tabla Comandos.
MASKPHONE WORD De 0 a 15 Durante el envo, la mscara se utiliza para seleccionar
el destinatario del SMS de la tabla Nmeros de
telfono.
Durante la recepcin, la mscara se aplica a la tabla
Nmeros de telfono para crear una lista de nmeros
vlidos.

Salidas
En esta tabla se describen las salidas del bloque de funciones:

Etiqueta Tipo Rango


Done BOOL Si es TRUE, indica que la ejecucin del bloque de funciones ha finalizado
correctamente y no se han detectado errores.
Busy BOOL Si TRUE, indica que la ejecucin del bloque de funciones est en curso.
Aborted BOOL Si es TRUE, indica que la ejecucin del bloque de funciones se ha cancelado con
la entrada %SEND_RECV_SMSi.Abort.
NOTA: Cuando la salida Busy se establece en TRUE, la ejecucin contina hasta que una de las salidas
Done, Aborted o Error se establece en TRUE.
NOTA: Mientras la salida Busy est establecida en TRUE, los cambios en la entrada Execute no afectan a
la ejecucin del bloque de funciones en curso. Sin embargo, si se llama a otro bloque de funciones
%SEND_RECV_SMS, se rechaza este SMS (CommError = 255 (FF hex) y OperError = 11
(0000000B hex)).

290 EIO0000001477 12/2016


Objetos de comunicacin

Etiqueta Tipo Rango


Error BOOL Si es TRUE, indica que se ha detectado un error. Se ha detenido la ejecucin del
bloque de funciones.
Para obtener informacin sobre %SEND_RECV_SMSi.CommError y
%SEND_RECV_SMSi.OperError, consulte las tablas Cdigos de error de
comunicacin (vase pgina 291) y Cdigos de error de funcionamiento
(vase pgina 292).
NOTA: Cuando la salida Busy se establece en TRUE, la ejecucin contina hasta que una de las salidas
Done, Aborted o Error se establece en TRUE.
NOTA: Mientras la salida Busy est establecida en TRUE, los cambios en la entrada Execute no afectan a
la ejecucin del bloque de funciones en curso. Sin embargo, si se llama a otro bloque de funciones
%SEND_RECV_SMS, se rechaza este SMS (CommError = 255 (FF hex) y OperError = 11
(0000000B hex)).

En esta tabla se describen los objetos de salida del bloque de funciones:

Objeto de salida Tipo Descripcin


CommError BYTE Para obtener informacin sobre %SEND_RECV_SMSi.CommError,
consulte la tabla Cdigos de error de comunicacin (vase pgina 291).
OperError DWORD Para obtener informacin sobre %SEND_RECV_SMSi.OperError,
consulte la tabla Cdigos de error de funcionamiento (vase pgina 292).

Cdigos de error de comunicacin


En esta tabla se describen los cdigos de error escritos en el objeto de salida
%SEND_RECV_SMSi.CommError:

Cdigo de error Nombre Descripcin


decimal
(hexadecimal)
detectado
0 (00 hex) CommunicationOK Intercambio correcto.
NOTA: En este caso, el objeto de salida
%SEND_RECV_SMSi.OperError contiene el
nivel de seal del mdem en vez de un cdigo de
error.
1 (01 hex) TimedOut Intercambio detenido porque se ha agotado el
timeout.
2 (02 hex) Abort Intercambio detenido en un flanco ascendente en
la entrada %SEND_RECV_SMSi.Abort.
3 (03 hex) BadLink Enlace incorrecto.
4 (04 hex) BadCommand Comando incorrecto.

EIO0000001477 12/2016 291


Objetos de comunicacin

Cdigo de error Nombre Descripcin


decimal
(hexadecimal)
detectado
5 (05 hex) BadMgtTable El formato de la tabla de gestin es incorrecto.
6 (06 hex) BadParameters Los parmetros especficos son incorrectos.
7 (07 hex) ProblemSendingSms Error de comando de envo de SMS.
9 (09 hex) RecvCmdError Comando no vlido.
10 (0A hex) SendValueError Valor no vlido.
11 (0B hex) SystemResourceMissing Recurso del sistema no disponible.
14 (0E hex) BadLength La longitud es incorrecta.
254 (FE hex) ProtocolSpecificError Indica que se ha detectado un error de protocolo.
NOTA: En este caso, el objeto de salida
%SEND_RECV_SMSi.OperError contiene ms
informacin. Consulte los cdigos de error de
funcionamiento (vase pgina 292).
255 (FF hex) Refused SMS rechazado.
NOTA: En este caso, el objeto de salida
%SEND_RECV_SMSi.OperError contiene ms
informacin. Consulte los cdigos de error de
funcionamiento (vase pgina 292).

Cdigos de error de funcionamiento


Este cdigo de retorno es significativo cuando el cdigo de error de comunicacin (objeto de salida
%SEND_RECV_SMSi.CommError) tiene el valor:
0 (00 hex) (protocolo correcto)
254 (FE hex) (protocolo incorrecto)
255 (FF hex) (SMS rechazado)

Cuando %SEND_RECV_SMSi.CommError es 0 (00 hex) (protocolo correcto), el objeto de


salida %SEND_RECV_SMSi.OperError especifica la RSSI (del ingls Received Signal Strength
Indication, indicacin de fuerza de la seal recibida):

Valor decimal en el objeto Nivel de seal del mdem RSSI


%SEND_RECV_SMSi.OperError
Inferior a 9 Valor marginal (la atenuacin sobrepasa el lmite necesario para
que la red inalmbrica funcione)
De 10 a 14 OK
De 15 a 19 Bueno
Superior a 20 Excelente

292 EIO0000001477 12/2016


Objetos de comunicacin

Cuando %SEND_RECV_SMSi.CommError es 254 (FE hex) (protocolo incorrecto), el objeto de


salida %SEND_RECV_SMSi.OperError devuelve ms informacin:

Valor decimal (hexadecimal) en el Nombre Descripcin


objeto
%SEND_RECV_SMSi.OperError
256 (00000100 hex) ModemConfSLAsciiFailed La configuracin ASCII de la lnea serie es
incorrecta.
512 (00000200 hex) ModemReconfSLFailed La configuracin de la lnea de serie en la
configuracin de usuario es incorrecta.
768 (00000300 hex) ModemBusy El mdem responde BUSY para el
comando de marcacin.
1024 (00000400 hex) ModemNoDialtone El mdem responde NODIALTONE para el
comando de marcacin.
1280 (00000500 hex) ModemNoCarrier La seal de portadora del mdem se ha
perdido o desconectado. El mdem
responde NO CARRIER para el comando
de marcacin.
1536 (00000600 hex) ModemBadAnswer La respuesta del mdem es incorrecta.
Errores especficos de uso de la tarjeta SIM
4096 (00001000 hex) SimConfigurationFailed La configuracin de la tarjeta SIM es
incorrecta. Por ejemplo, se solicita un
cdigo PUK.
8192 (00002000 hex) SimPinCodeInvalid El cdigo PIN es incorrecto.
16384 (00004000 hex) SimSmsCenterInvalid El nmero de telfono del centro de SMS
es incorrecto.

Cuando %SEND_RECV_SMSi.CommError es 255 (FF hex) (SMS rechazado), el objeto de


salida %SEND_RECV_SMSi.OperError devuelve ms informacin:

Valor decimal (hexadecimal) en el Nombre Descripcin


objeto
%SEND_RECV_SMSi.OperError
1 (00000001 hex) TargetResourceMissing El recurso del sistema de destino no est
disponible.
5 (00000005 hex) BadLength La longitud es incorrecta.
6 (00000006 hex) CommChannelErr Se ha detectado un error en el canal de
comunicacin.
11 (0000000B hex) SystemResourceMissing Recurso del sistema no disponible.
12 (0000000C hex) TargetCommInactive La funcin de comunicacin de destino no
est activa.

EIO0000001477 12/2016 293


Objetos de comunicacin

Valor decimal (hexadecimal) en el Nombre Descripcin


objeto
%SEND_RECV_SMSi.OperError
13 (0000000D hex) TargetMissing El destino no est disponible.
15 (0000000F hex) ChannelNotConfigured El canal de comunicacin no est
configurado.
16 (00000010 hex) PhoneNumberNotMatching El nmero de telfono del mensaje recibido
no coincide con la lista de nmeros
aprobados (lista blanca).
17 (00000011 hex) MessageNotMatching El mensaje recibido no coincide con ningn
mensaje de la lista de comandos. Slo se
emite si el nmero de telfono del emisor
coincide con una entrada de la lista de
nmeros aprobados (lista banca).

294 EIO0000001477 12/2016


Objetos de comunicacin

Configuracin de funciones

Pasos principales
El siguiente procedimiento describe los pasos principales para configurar el bloque de funciones
%SEND_RECV_SMS tras conectar un mdem a la lnea serie:

Paso Accin
1 En la ficha Configuracin de SoMachine Basic, configure la lnea serie con el mdem, el Comando
Init y el protocolo ASCII. Para obtener ms informacin, consulte la gua de programacin
correspondiente a su controlador lgico.
2 Verifique que el mdem est conectado a la lnea serie del controlador y que:
La tarjeta SIM est desbloqueada, es decir, no protegida mediante un cdigo PIN
El nmero de telfono del centro de SMS est configurado correctamente en la tarjeta SIM

3 En la ficha Programacin:
Aada el bloque de funciones %SEND_RECV_SMS y haga doble clic en el bloque de funciones
para ver la tabla de propiedades de la funcin
Haga clic en el botn Configuracin de SMS para abrir la ventana Asistente de SMS
Edite las tablas Mensajes, Comandos y Nmeros de telfono
Para obtener ms informacin, consulte el Asistente de SMS.
Haga clic en Aplicar para cerrar el Asistente de SMS

NOTA: Si la direccin del bloque de funciones (por ejemplo %SEND_RECV_SMS0) no es vlida y


hacer doble clic est deshabilitado, compruebe que el nivel funcional de la aplicacin (ficha
Programacin > Tareas > Comportamiento) est como mnimo en el Nivel 3.2).
4 En la ficha Programacin, edite los campos de la tabla de propiedades de la funcin.
Para obtener informacin sobre estos campos, consulte Propiedades (vase pgina 298).

ADVERTENCIA
FUNCIONAMIENTO IMPREVISTO DEL EQUIPO
Antes de utilizar el bloque de funciones, verifique que los ndices para los mensajes, comandos
y nmeros de telfono utilizados en el bloque de funciones sean los adecuados.
El incumplimiento de estas instrucciones puede causar la muerte, lesiones serias o dao al
equipo.

Para obtener ms informacin acerca de la instalacin y la configuracin de los modems


SR2MOD03, consulte Modems inalmbricos SR2MOD02 y SR2MOD03 - Gua del usuario
(EIO00000001575).

EIO0000001477 12/2016 295


Objetos de comunicacin

Asistente de SMS
Para utilizar el bloque de funciones %SEND_RECV_SMS, configure las tablas de comandos,
mensajes y nmeros de telfono.
Haga clic en el botn Configuracin de SMS en el rea de propiedades de Enviar Recibir SMS
para abrir la ventana Asistente de SMS.
La ventana Asistente de SMS tiene tres fichas con tablas para configurar:
Mensajes
Especifique las cadenas que se utilizan cuando el controlador enva un SMS. Utilice
marcadores de posicin para incluir variables, fecha y hora. Tenga en cuenta los lmites de
nmero de caracteres y el formato.
Comandos
Especifique las cadenas que se utilizan cuando el controlador recibe un SMS. Utilice
marcadores de posicin para incluir variables. Tenga en cuenta los lmites de nmero de
caracteres y el formato.
Nmeros de telfono
Al programar el bloque de funciones para el envo de mensajes SMS, seleccione el destinatario
en esta tabla.
Al programar el bloque de funciones para la recepcin de mensajes SMS, seleccione los
nmeros de telfono de origen autorizados en esta lista. La lista de nmeros de telfono
autorizados seleccionados aade seguridad a la aplicacin. Cuando una llamada y el SMS
correspondiente se transmiten a la aplicacin a travs del mdem, el nmero de telfono de
origen se valida antes de considerar el SMS entrante.
Para obtener ms informacin, consulte la lnea MASKPHONE en Propiedades
(vase pgina 298).
NOTA: Consulte la documentacin del mdem para ver el formato de los cdigos de marcacin
internacionales.
Cada tabla contiene un mximo de 16 entradas con un ndice en cada lnea de 0 a 15.
Las cadenas incluidas en las tablas del asistente se pueden interpretar con los siguientes formatos
y lmite de tamao de mensaje:

Formato de caracteres Tablas Mensajes y Comandos


GSM 7-bit Mximo 105 caracteres
UNICODE Mximo 45 caracteres
NOTA: El formato de caracteres viene determinado automticamente por los caracteres del campo de texto.

296 EIO0000001477 12/2016


Objetos de comunicacin

Se pueden aadir los siguientes marcadores de posicin en el texto de Mensajes o Comandos


para que se interpreten como variables:

Marcador de Sustituido en la ejecucin por: Nmero de Nmero de caracteres


posicin 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 parmetro 12 mximo 24 mximo
%SEND_RECV_SMSi.VAD convertido a
texto.
$VBD El valor DWORD del parmetro 12 mximo 24 mximo
%SEND_RECV_SMSi.VBD convertido a
texto.
$$ El smbolo $ 1 2
NOTA: Cuando el texto introducido es vlido (lmite de caracteres no excedido, marcadores de posicin
vlidos), el botn Aplicar est activo.
(1) Ignorado para Comandos

Ejemplos
Este ejemplo muestra el uso de marcadores de posicin en los mensajes:

Mensajes
Mensaje $DATE : $TIME - Valor A = $VAD y Valor B = $VBD
configurado
Valores de los VAD = 10; VBD = 2000
marcadores de
posicin
SMS final enviado 15/04/27 : 11:15:43 - Valor A = 10 y Valor B = 2000

Este ejemplo muestra el uso de marcadores de posicin 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; VBD = 2

EIO0000001477 12/2016 297


Objetos de comunicacin

Propiedades
Haga doble clic en el bloque de funciones para abrir la tabla de propiedades de la funcin.
Las propiedades de este bloque de funciones no se pueden modificar en la modalidad online.
El bloque de funciones %SEND_RECV_SMS tiene las propiedades siguientes:

Propiedad Valor Descripcin


Used Casilla de verificacin Indica si se est utilizando la direccin.
activada/desactivada.
Address %SEND_RECV_SMSi, donde i i es el identificador de instancia. Para saber el nmero mximo de
va desde 0 hasta el nmero de instancias, consulte la gua de programacin de su controlador
objetos disponibles en este lgico.
Logic Controller..
Symbol Texto definido por el usuario. El smbolo identifica este objeto de forma inequvoca. Para obtener
ms informacin, consulte Definicin y uso de los smbolos
(vase SoMachine Basic, Gua de funcionamiento).
Link 1 - SL1 Lnea serie en la que se ha configurado el mdem (ficha
2 - SL2 Configuracin).
Timeout De 0 a 255 El timeout establece el tiempo mximo de espera de recepcin de
Especificado en unidades de una respuesta del mdem.
100 ms, con un valor Si se supera el timeout, el intercambio finaliza con un cdigo de
predeterminado de 100 error (%SEND_RECV_SMSi.CommError = 01 hex). Si el sistema
(10 segundos). recibe una respuesta despus de la caducidad del timeout, esta
Un valor de 0 significa que no respuesta se ignora.
se ha aplicado timeout.
NOTA: El timeout establecido en el bloque de funciones anula el
valor configurado en la pantalla de configuracin SoMachine Basic.
Para obtener ms informacin, consulte la gua de programacin
correspondiente a su controlador lgico.
Index De 0 a 15 En el envo, el valor del ndice se utiliza para seleccionar un
texto para enviar en la tabla Mensajes.
NOTA: 0 corresponde a la
En la recepcin, el valor corresponde al ndice de la tabla
primera cadena de la lista.
Comandos que coincide con el texto recibido.
VAD De 214748364 a 2147483647 Durante el envo, el valor de %SEND_RECV_SMSi.VAD sustituye
al marcador de posicin $VAD en el texto del SMS.
Durante la recepcin, el valor de %SEND_RECV_SMSi.VAD
contiene el valor en el que se inserta el marcador de posicin
$VAD en el SMS almacenado en la tabla Comandos.
VBD De 214748364 a 2147483647 Durante el envo, el valor de %SEND_RECV_SMSi.VBD sustituye
al marcador de posicin $VBD en el texto del SMS.
Durante la recepcin, el valor de %SEND_RECV_SMSi.VBD
contiene el valor en el que se inserta el marcador de posicin
$VBD en el SMS almacenado en la tabla Comandos.

298 EIO0000001477 12/2016


Objetos de comunicacin

Propiedad Valor Descripcin


MASKPHONE De 0000000000000000 bin El valor inicial de la mscara.
a 1000000000000000 bin Durante el envo, esta mscara se utiliza para seleccionar el
destinatario del SMS de la tabla Nmeros de telfono.
Ejemplo: 0000000000000010 bin = el SMS se enva al
segundo nmero de telfono (ndice 1) que aparece en la tabla
Nmeros de telfono.
Durante la recepcin, la mscara se aplica a la tabla Nmeros
de telfono para crear una lista de nmeros de telfono de
origen vlidos. Un bit de la mscara indica el nmero de telfono
utilizado para enviar el SMS al controlador lgico.
Ejemplo: 0000000000000100 bin significa que el tercer
nmero de telfono de la lista Nmeros de telfono (ndice 2) ha
enviado el SMS.
Comment Texto definido por el usuario Un comentario para asociar a este objeto.

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

Objeto Descripcin Valor


%SEND_RECV_SMSi.LINK Seleccin de puerto Consulte Propiedades
(vase pgina 298). Se puede leer
y escribir. Se puede modificar en
una tabla de animacin.
%SEND_RECV_SMSi.TIMEOUT Timeout del bloque de funciones Consulte Propiedades
(vase pgina 298). Se puede leer
y escribir. Se puede modificar en
una tabla de animacin.
%SEND_RECV_SMSi.INDEX ndice en la tabla de Mensajes o Consulte Propiedades
Comandos (vase pgina 298). Se puede leer
y escribir. Se puede modificar en
una tabla de animacin.
%SEND_RECV_SMSi.VAD VAD - marcador de posicin A Consulte Propiedades
(vase pgina 298). Se puede leer
y escribir. Se puede modificar en
una tabla de animacin.
%SEND_RECV_SMSi.VBD VBD - marcador de posicin B Consulte Propiedades
(vase pgina 298). Se puede leer
y escribir. Se puede modificar en
una tabla de animacin.
%SEND_RECV_SMSi.MASKPHONE Mscara para seleccionar Consulte Propiedades
entradas en la tabla de nmeros de (vase pgina 298). Se puede leer
telfono y escribir. Se puede modificar en
una tabla de animacin.

EIO0000001477 12/2016 299


Objetos de comunicacin

Objeto Descripcin Valor


%SEND_RECV_SMSi.COMMERROR Cdigos de error de comunicacin Consulte los cdigos de error de
comunicacin (vase pgina 291).
Slo se pueden leer. Se puede
modificar en una tabla de
animacin.
%SEND_RECV_SMSi.OPERERROR Cdigos de error de Consulte los cdigos de error de
funcionamiento funcionamiento
(vase pgina 292). Slo se
pueden leer. Se puede modificar
en una tabla de animacin.
%SEND_RECV_SMSi.DONE Ejecucin completada Consulte Salidas
correctamente (vase pgina 290). Slo se
pueden leer. Se puede modificar
en una tabla de animacin.
%SEND_RECV_SMSi.BUSY La ejecucin est en proceso Consulte Salidas
(vase pgina 290). Slo se
pueden leer. Se puede modificar
en una tabla de animacin.
%SEND_RECV_SMSi.ABORTED La ejecucin se ha cancelado Consulte Salidas
(vase pgina 290). Slo se
pueden leer. Se puede modificar
en una tabla de animacin.
%SEND_RECV_SMSi.ERROR Se ha detectado un error Consulte Salidas
(vase pgina 290). Slo se
pueden leer. Se puede modificar
en una tabla de animacin.

300 EIO0000001477 12/2016


SoMachine Basic

EIO0000001477 12/2016

Captulo 10
Funciones de reloj

Funciones de reloj

Descripcin general
En este captulo se describen las funciones de gestin de tiempo para los controladores.

Contenido de este captulo


Este captulo contiene los siguientes apartados:
Apartado Pgina
Funciones de reloj 302
Marcas de fecha y hora 303
Ajuste de fecha y hora 305

EIO0000001477 12/2016 301


Funciones de reloj

Introduccin
En controladores lgicos equipados con una funcin de reloj en tiempo real (RTC), puede utilizar
las siguientes funciones del reloj de fecha/hora cuando SoMachine Basic est conectado al
controlador lgico:
Los bloques de funciones RTC (vase pgina 237) se utilizan para leer la hora y la fecha del
RTC, o para actualizar el RTC en el logic controller con una fecha y hora definidas por el
usuario.
Los bloques de funciones del Programador (vase pgina 233) se utilizan para controlar
acciones a horas predefinidas o calculadas.
Fijacin de fecha y hora (vase pgina 303) se utiliza para asignar fechas y horas a eventos y
para medir la duracin de los eventos.
El reloj de fecha/hora puede ajustarse mediante un programa (vase pgina 303). La batera del
controlador facilita que la configuracin del reloj siga funcionando durante un ao como mximo
aunque el controlador est apagado. El controlador no tiene una batera recargable. La vida til
promedio de la batera es de 4 aos y debe reemplazarse antes del final de su vida til. Con el
objetivo de no perder los datos durante la sustitucin de la batera, cmbiela durante los 120
segundos posteriores a la extraccin de la batera del controlador.
El reloj de fecha y hora tiene formato de 24 horas y tiene en cuenta los aos bisiestos.

302 EIO0000001477 12/2016


Marcas de fecha y hora

Introduccin
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 perifrico. Estas
palabras de sistema se pueden utilizar para almacenar la fecha y la hora de un evento.
Las instrucciones BTI se utilizan para convertir fechas y horas de formato BCD a formato binario.
Para obtener ms informacin, consulte las Instrucciones de conversin BCD/binaria
(vase pgina 82).

Fechado de un evento
Para asociar una fecha a un evento, basta con utilizar operaciones de asignacin para transferir
el contenido de palabras de sistema a palabras de memoria y luego procesar estas palabras de
memoria (por ejemplo, transmisin a una pantalla mediante la instruccin EXCH).

Ejemplo de programacin
En este ejemplo se muestra cmo fechar un flanco ascendente en una entrada %I0.1:

Escaln Instruccin
0 LDR %I0.1
[%MW11:5:=%SW49:5]

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 18) para obtener el diagrama de
contactos equivalente.
Una vez detectado un evento, la tabla de palabras tendr el siguiente contenido:

Codificacin Byte ms significativo Byte menos significativo


%MW11 - Da de la semana (1)
%MW12 00 Segundo
%MW13 Hora Minuto
%MW14 Mes Da
%MW15 Siglo Ao
(1) 1 = Lunes, 2 = Martes, 3 = Mircoles, 4 = Jueves, 5 = Viernes, 6 = Sbado, 7 = Domingo

EIO0000001477 12/2016 303


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, 40 minutos
%MW14 0603 06 = junio, el da 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 cdigo que muestra la causa de la ltima parada, en formato BCD.

304 EIO0000001477 12/2016


Ajuste de fecha y hora

Introduccin
Los ajustes de fecha y hora en el logic controller pueden actualizarse mediante uno de estos
mtodos:
Utilice la ficha Gestin de RTC de la ficha Puesta en funcionamiento de SoMachine Basic. Este
mtodo slo est disponible en modalidad online (vase SoMachine Basic, Gua de
funcionamiento).
Puede elegir entre dos mtodos:
Manual: este mtodo muestra un selector de hora/fecha y le permite seleccionar
manualmente la hora del logic controller.
Automtico: este mtodo utiliza la hora del PC en el que se ejecuta SoMachine Basic.

Para obtener ms informacin, consulte Gestin de RTC (vase SoMachine Basic, Gua de
funcionamiento).
En un programa, mediante los bloques de funciones RTC (vase pgina 237).
En modalidad online, actualice las palabras del sistema, ya sea de forma directa o por
programacin mediante bloques de funciones, de %SW49 a %SW53 o la palabra del sistema
%SW59.
NOTA: La fecha y la hora slo pueden definirse cuando la caracterstica RTC est disponible en
su logic controller (consulte la gua de programacin del logic controller).

Utilizacin de %SW49 a %SW53


Para establecer la fecha y la hora utilizando las palabras de sistema de %SW49 a %SW53, el bit
%S50 debe establecerse en 1. Si %S50 est establecido en 1, el logic controller no actualiza las
palabras del sistema de %SW49 a %SW53. En un flanco descendente de %S50 (%S50 establecido
en 0), el RTC interno del controlador se actualiza con los valores de %SW49 a %SW53. El
controlador reanuda a continuacin la actualizacin de %SW49 a %SW53 mediante el RTC.
En esta tabla se indican las palabras del sistema que contienen los valores de fecha y hora
actuales (en BCD) para las funciones de reloj en tiempo real (RTC):

Palabra de sistema Descripcin


%SW49 xN da de la semana (N=1 para el lunes)
%SW50 00SS: segundos
%SW51 HHMM: hora y minutos
%SW52 MMDD: mes y da
%SW53 CCYY: siglo y ao

Consulte la gua de programacin de su controlador para obtener una lista completa de palabras
y bits de sistema.

EIO0000001477 12/2016 305


Ejemplo de programacin:

Escaln Instruccin Comentario


0 LD %S50
R %S50
1 LD %I0.1 Consulte las Instrucciones de conversin de
[%SW50:=%MW11] BCD/binario (vase pgina 82).
[%SW51:=%MW12]
[%SW52:=%MW13]
[%SW53:=%MW14]
S %S50

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 18) para obtener el diagrama de
contactos equivalente.
Las palabras de %MW11 a %MW14 contienen la nueva fecha y hora (consulte Revisin del cdigo
BCD (vase pgina 82)) y corresponden a la codificacin de las palabras de %SW50 a %SW53.
NOTA: Se calcula automticamente %SW49 (da de la semana) en funcin de la fecha
proporcionada.
La tabla de palabras debe contener la nueva fecha y hora:

Codificacin Byte ms significativo Byte menos significativo


%MW11 Segundo
%MW12 Hora Minuto
%MW13 Mes Da
%MW14 Siglo Ao

Ejemplo de datos para el 3 de junio de 2013:

Palabra Valor (hexadecimal) Significado


%MW11 0030 30 segundos
%MW12 1340 13 horas, 40 minutos
%MW13 0603 06 = junio, el da 03
%MW14 2013 2013

Utilizacin de %SW59
Otro mtodo para actualizar la fecha y la hora es utilizar el bit de sistema %S59 y la palabra de
sistema de ajuste de fecha %SW59.
El establecimiento del bit %S59 en 1 permite configurar la fecha y la hora actuales mediante la
palabra %SW59. %SW59 aumenta o disminuye cada uno de los componentes de fecha y hora en un
flanco ascendente.

306 EIO0000001477 12/2016


En esta tabla se describe cada bit de la palabra de sistema %SW59 para ajustar los parmetros de
fecha y hora:

Aumentar Reducir Parmetro


Bit 0 Bit 8 Da de la semana(1)
Bit 1 Bit 9 Segundos
Bit 2 Bit 10 Minutos
Bit 3 Bit 11 Horas
Bit 4 Bit 12 Das
Bit 5 Bit 13 Mes
Bit 6 Bit 14 Aos
Bit 7 Bit 15 Siglos(1)
(1) El usuario no puede modificar (ni aumentar ni disminuir) el da de la semana ni los siglos.

Consulte la gua de programacin de su controlador para obtener una lista completa de palabras
y bits de sistema.

Ejemplo de aplicacin
Este panel frontal se ha creado para modificar la hora, los minutos y los segundos del reloj interno.

Descripcin de los comandos:


El conmutador de horas/minutos/segundos selecciona la visualizacin de la hora para
cambiarla mediante las entradas %I0.2, %I0.3 y %I0.4 respectivamente.
El botn pulsador "+" aumenta la visualizacin del tiempo seleccionado mediante la entrada
%I0.0.
El botn pulsador "-" reduce la visualizacin del tiempo seleccionado mediante la entrada
%I0.1.

EIO0000001477 12/2016 307


Este programa lee las entradas del panel y ajusta el reloj interno:

Escaln Instruccin Comentario


0 LD %M0
ST %S59
1 LD %I0.2 Hora
ANDR %I0.0
ST %SW59:X3
2 LD %I0.2
ANDR %I0.1
ST %SW59:X11
3 LD %I0.3 Minuto
ANDR %I0.0
ST %SW59:X2
4 LD %I0.3
ANDR %I0.1
ST %SW59:X10
5 LD %I0.4 Segundo
ANDR %I0.0
ST %SW59:X1
6 LD %I0.4
ANDR %I0.1
ST %SW59:X9

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 18) para obtener el diagrama de
contactos equivalente.

308 EIO0000001477 12/2016


SoMachine Basic
Glosario
EIO0000001477 12/2016

Glosario

!
%
Segn el estndar IEC, % es un prefijo que identifica direcciones de memoria interna en el
controlador lgico que se utilizan para almacenar el valor de las variables del programa,
constantes, E/S, etc.
%Q
Segn el estndar IEC, %Q representa un bit de salida (por ejemplo, un objeto de lenguaje de tipo
OUT digital).

A
aplicacin
Un programa que incluye datos de configuracin, smbolos y documentacin.
ASCII
(Cdigo estndar estadounidense para el intercambio de informacin) Un protocolo que
representa caracteres alfanumricos (letras, nmeros y algunos caracteres grficos y de control).

B
bloque de funciones
Una unidad de programacin que dispone de una o varias entradas y devuelve una o varias
salidas. Los FBs se llaman mediante una instancia (copia del bloque de funciones con nombre y
variables dedicados), y todas las instancias tienen un estado persistente (salidas y variables
internas) de una llamada a otra.
Ejemplos: temporizadores, contadores
bus de ampliacin
Un bus de comunicacin electrnico entre los mdulos de E/S de ampliacin y un controlador.

C
configuracin
Organizacin e interconexin de los componentes de hardware en un sistema y los parmetros
del hardware y software que determina las caractersticas operativas del sistema.
controlador
Automatiza procesos industriales (tambin conocido como controlador lgico programable o
controlador programable).

EIO0000001477 12/2016 309


Glosario

E
E/S
(entrada/salida)
entrada analgica
Convierte los niveles de tensin o corriente recibidos en valores numricos. Puede almacenar y
procesar estos valores en el controlador lgico.

L
lenguaje de diagrama de contactos
Una representacin grfica de instrucciones de un programa de controlador con smbolos para
contactos, bobinas y bloques en una serie de escalones ejecutados de forma secuencial por un
controlador (consulte IEC 61131-3).
lenguaje de la lista de 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. Cada instruccin
incluye un nmero de lnea, un cdigo de instruccin y un operando (consulte IEC 61131-3).

P
programa
El componente de una aplicacin consistente en cdigo fuente compilado capaz de poder ser
instalado en la memoria de un controlador lgico.

R
RTC
(reloj de tiempo real) Un reloj calendario de fecha/hora con respaldo de batera que funciona de
forma continua aunque el controlador no reciba alimentacin, mientras dure la batera.

S
salida analgica
Convierte los valores numricos del controlador lgico y enva niveles de tensin o corriente
proporcionales.

310 EIO0000001477 12/2016


SoMachine Basic
ndice
EIO0000001477 12/2016

ndice

Symbols %WRITE_VAR, 263


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

EIO0000001477 12/2016 311


ndice

bloques de funciones Drum


%READ_VAR, 253 configuracin, 216
%SEND_RECV_MSG, 279 ejemplo de programacin, 219
%WRITE_READ_VAR, 271 Drum
%WRITE_VAR, 263 descripcin, 215
counter, 173
descripcin general, 47
Drum, 215 E
fechadores, 233 ejemplos, cdigo fuente, 18
LIFO/FIFO register, 206 EQUAL_ARR, 120
message, 183 EXCH, 181
principios de programacin, 155 EXP, 94
Reloj de tiempo real (RTC), 238 expresin de comparacin
shift bit register, 223 insertar en los escalones del diagrama de
step counter, 228 contactos, 24
timer, 161 EXPT, 94
bloques de operacin
insertar instrucciones de asignacin en,
21 F
fechadores
programacin y configuracin, 235
C FIND_, 122
cadenas de bits, 42 flanco ascendente
clculo, 74 deteccin, 52
cdigo fuente, uso de ejemplos, 18 flanco descendente
COS, 97 deteccin, 53
counter formato de direccin de entrada/salida, 29
configuracin, 175 funciones de reloj
descripcin, 173 ajuste de fecha y hora, 305
ejemplo de programacin, 178 descripcin general, 302
marcas de fecha y hora, 303

D
DEG_TO_RAD, 99 G
desborde Grafcet, propiedades de paso, 243
ndice, 46
desborde de ndice, 46
DINT_TO_REAL, 100 H
direccionamiento herramientas
formato, 29 Objetos de accionamiento, 249
objetos de E/S, 29 objetos de red, 151
disminuir, 74
dividir, 74
I
instruccin NOP, 88

312 EIO0000001477 12/2016


ndice

instrucciones instrucciones de SR (subrutina), 91


aritmticas, 74 instrucciones END, 86
ASCII, 102 instrucciones lgicas, 78
booleano, 50 instrucciones numricas
comparacin, 65 desplazamiento, 80
conversin de ngulos, 99 INT_TO_REAL, 100
conversin de ASCII a entero, 105
conversin de ASCII a flotante, 109
conversin de entero a ASCII, 107 L
conversin de entero/coma flotante, 100 LD, 54
conversin de flotante a ASCII, 111 LDF, 53, 54
END, 86 LDN, 54
intercambio, 181 LDR, 52, 54
NOP, 88 LIFO/FIFO register
objetos de entrada/salida, 145 configuracin, 208
pila, 113 descripcin, 206
ROUND, 103 ejemplo de programacin, 212
salto, 89 FIFO, 211
SR, 91 LIFO, 210
subrutina, 91 LKUP, 131
tabla de objetos, 115 LN, 94
tablas de objetos, 118 LOG, 94
trigonomtricas, 97
instrucciones aritmticas, 74
instrucciones booleanas, 51 M
instrucciones de asignacin MAX_ARR, 124
cadenas de bits, 70 MEDIA, 136
insertar en escalones del diagrama de message
contactos, 21 configuracin, 187
numrico, 69 descripcin, 183
palabras, 72 ejemplo de programacin, 192
tablas de objetos, 116 MIN_ARR, 124
instrucciones de comparacin, 65 modbus
instrucciones de conversin peticiones y ejemplos estndar, 196
BCD/binario, 82 multiplicar, 74
palabras simples y dobles, 84
instrucciones de desplazamiento, 80
instrucciones de intercambio N
EXCH1, 181 N, 64
EXCH2, 181
EXCH3, 181
instrucciones de pila
MPP, 113
MPS, 113
MRD, 113

EIO0000001477 12/2016 313


ndice

O P
objetos palabras de sistema
definicin de, 26 %SW17, 38
direccin directa, 45 PID, 242
direccin indexada, 45 procesamiento numrico
estructurados, 42 asignacin, 69
indexados, 45 descripcin general, 68
red, 151
software, 153
tablas, 42 R
Objetos de accionamiento, 249 R, 56
objetos de bit RAD_TO_DEG, 99
bloque de funciones, 48 raz cuadrada, 74
objetos de bit de memoria READ_IMM_IN, 138
descripcin, 27 REAL_TO_DINT, 100
objetos de coma flotante REAL_TO_INT, 100
descripcin, 37 restar, 74
objetos de palabra resto, 74
bloque de funciones, 48 ROL_ARR, 127
descripcin, 32 ROR_ARR, 127
objetos de palabra doble RTC
bloque de funciones, 48 configuracin, 241
descripcin, 37
objetos de red, 151, 151
OCCUR_ARR, 126 S
operaciones S, 56
insertar en escalones del diagrama de schedule blocks
contactos, 21 descripcin, 233
operador NOT, 64 shift bit register
operadores configuracin, 224
AND, 58 descripcin, 223
asignacin, 56 ejemplo de programacin, 226
carga, 54 SIN, 97
NOT, 64 SORT_ARR, 129
OR, 60 SQRT, 94
XOR, 62 ST, 56
operadores AND, 58 step counter
operadores de asignacin, 56 configuracin, 229
operadores de carga, 54 descripcin, 228
operadores OR, 60 ejemplo de programacin, 230
operadores OR exclusivos, 62 STN, 56
OR, 60 SUM_ARR, 118
ORF, 60 sumar, 74
ORN, 60
ORR, 60

314 EIO0000001477 12/2016


ndice

T
tablas
instrucciones, 115
TAN, 97
timer
configuracin, 162
descripcin, 161
ejemplo de programacin, 170
tipo TOF, 167
tipo TON, 164
tipo TP, 169
TRUNC, 94

U
uso de ejemplos de cdigo fuente, 18

V
valor absoluto, 74

W
WRITE_IMM_OUT, 140

X
XOR, 62
XORF, 62
XORN, 62
XORR, 62

EIO0000001477 12/2016 315


ndice

316 EIO0000001477 12/2016

You might also like