Sunteți pe pagina 1din 262

SoMachine Basic

EIO0000001477 11/2014

SoMachine Basic
Gua de la biblioteca de funciones
genricas

EIO0000001477.03

11/2014

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.
2014 Schneider Electric. Reservados todos los derechos.

EIO0000001477 11/2014

Tabla de materias
Informacin de seguridad . . . . . . . . . . . . . . . . . . . . . . .
Acerca de este libro . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Captulo 1 Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Cmo utilizar ejemplos de cdigo fuente. . . . . . . . . . . . . . . . . . . . . . .
Bloques de operacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Bloques de comparacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Captulo 2 Objetos de lenguaje . . . . . . . . . . . . . . . . . . . . . . . . . . . .


Objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Objetos de bit de memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Objetos de E/S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Objetos de palabra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Objetos de coma flotante y de palabra doble . . . . . . . . . . . . . . . . . . .
Objetos estructurados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Objetos indexados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Objetos de bloques de funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Captulo 3 Instrucciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.1 Procesamiento booleano . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Instrucciones booleanas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Operadores de carga (LD, LDN, LDR, LDF). . . . . . . . . . . . . . . . . .
Operadores de asignacin (ST, STN, R, S) . . . . . . . . . . . . . . . . . .
Operadores AND lgicos (AND, ANDN, ANDR, ANDF) . . . . . . . . . .
Operadores OR lgicos (OR, ORN, ORR, ORF) . . . . . . . . . . . . . . . .
Operadores OR exclusivos (XOR, XORN, XORR, XORF) . . . . . . . . .
Operador NOT (N) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Instrucciones de comparacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2 Procesamiento numrico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Introduccin a operaciones numricas . . . . . . . . . . . . . . . . . . . . . . . .
Instrucciones de asignacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Asignacin de cadenas de bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Asignacin de palabras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Operadores aritmticos en enteros . . . . . . . . . . . . . . . . . . . . . . . . . . .
Instrucciones lgicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Instrucciones de desplazamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Instrucciones de conversin de BCD/binario. . . . . . . . . . . . . . . . . . . .
Instrucciones de conversin de palabras simples y dobles. . . . . . . . .
EIO0000001477 11/2014

7
9
13
14
17
18
19
20
21
23
26
30
34
37
39
41
42
43
46
48
50
52
54
56
57
59
60
61
62
64
66
70
72
74
76
3

3.3 Programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Instrucciones END . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Instrucciones NOP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Instrucciones de salto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Instrucciones de subrutina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.4 Coma flotante. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Instrucciones aritmticas en objetos de coma flotante . . . . . . . . . . . .
Instrucciones trigonomtricas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Instrucciones de conversin de ngulos . . . . . . . . . . . . . . . . . . . . . . .
Instrucciones de conversin de entero/coma flotante . . . . . . . . . . . . .
3.5 ASCII . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Instrucciones ROUND . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Instrucciones de conversin de ASCII a entero . . . . . . . . . . . . . . . . . .
Instrucciones de conversin de entero a ASCII . . . . . . . . . . . . . . . . . .
Instrucciones de conversin de ASCII a flotante . . . . . . . . . . . . . . . . .
Instrucciones de conversin de flotante a ASCII . . . . . . . . . . . . . . . . .
3.6 Operadores de pila. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Instrucciones de pila (MPS, MRD, MPP) . . . . . . . . . . . . . . . . . . . . . . .
3.7 Instrucciones sobre las tablas de objetos . . . . . . . . . . . . . . . . . . . . . .
Asignacin de tablas de palabras, palabras dobles o coma flotante . .
Funciones de suma en tablas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Funciones de comparacin de tablas . . . . . . . . . . . . . . . . . . . . . . . . .
Funciones de bsqueda en tablas . . . . . . . . . . . . . . . . . . . . . . . . . . .
Funciones de bsqueda de valores mximo y mnimo en tablas . . . .
Nmero de apariciones de un valor en una tabla . . . . . . . . . . . . . . . .
Funciones de desplazamiento circular de tablas . . . . . . . . . . . . . . . . .
Funciones de clasificacin en tablas . . . . . . . . . . . . . . . . . . . . . . . . . .
Funciones de interpolacin en la tabla de coma flotante (LKUP) . . . .
Funciones de MEDIA de los valores de una tabla de coma flotante . .
3.8 Instrucciones sobre los objetos de E/S . . . . . . . . . . . . . . . . . . . . . . . .
Entrada incrustada digital de lectura instantnea (READ_IMM_IN) . .
Salida incrustada digital de escritura instantnea (WRITE_IMM_OUT)

Captulo 4 Objetos de software . . . . . . . . . . . . . . . . . . . . . . . . . . . .


4.1 Uso de bloques de funciones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Principios de programacin del bloque de funciones. . . . . . . . . . . . . .
Aadido de un bloque de funciones. . . . . . . . . . . . . . . . . . . . . . . . . . .
Configuracin de un bloque de funciones . . . . . . . . . . . . . . . . . . . . . .

77
78
79
80
82
84
85
88
90
91
93
94
96
98
100
102
104
104
106
107
109
111
113
115
117
118
120
122
127
128
129
131
133
134
135
137
139

EIO0000001477 11/2014

4.2 Temporizador (%TM). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


Descripcin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Configuracin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
TON: temporizador de retardo de conexin . . . . . . . . . . . . . . . . . . . .
TOF: temporizador de retardo de desconexin. . . . . . . . . . . . . . . . . .
TP: temporizador de pulso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ejemplo de programacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3 Registro LIFO/FIFO (%R) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Descripcin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Configuracin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Funcionamiento del registro LIFO . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Funcionamiento del registro FIFO . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ejemplo de programacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.4 Registro de bits de desplazamiento (%SBR) . . . . . . . . . . . . . . . . . . .
Descripcin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Configuracin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ejemplo de programacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.5 Contador de pasos (%SC). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Descripcin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Configuracin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ejemplo de programacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.6 Contador (%C). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Descripcin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Configuracin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ejemplo de programacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.7 Contador rpido (%FC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Contador rpido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.8 Contador de alta velocidad (%HSC) . . . . . . . . . . . . . . . . . . . . . . . . . .
Contador de alta velocidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.9 Registro Drum (%DR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Descripcin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Configuracin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ejemplo de programacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.10 Pulso (%PLS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Pulso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.11 Modulacin de ancho de pulsos (%PWM). . . . . . . . . . . . . . . . . . . . . .
Modulacin de ancho de pulsos . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

EIO0000001477 11/2014

140
141
142
144
145
146
147
149
150
152
154
155
156
158
159
160
162
163
164
165
166
168
169
171
174
176
176
177
177
178
179
180
183
186
186
187
187

4.12 Mensaje (%MSG) e intercambio (EXCH). . . . . . . . . . . . . . . . . . . . . . .


Descripcin general . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Descripcin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Configuracin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ejemplo de programacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ejemplos de ASCII . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Peticiones y ejemplos estndar Modbus . . . . . . . . . . . . . . . . . . . . . . .
4.13 Salida de tren de pulsos (%PTO). . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Salida de tren de pulsos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Captulo 5 Objetos de comunicacin . . . . . . . . . . . . . . . . . . . . . . .


5.1 Leer datos desde un dispositivo remoto (%READ_VAR) . . . . . . . . . .
Descripcin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Configuracin de la funcin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ejemplo de programacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2 Escritura de datos en un dispositivo Modbus (%WRITE_VAR) . . . . . .
Descripcin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Configuracin de la funcin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ejemplo de programacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.3 Leer y escribir datos en un dispositivo Modbus
(%WRITE_READ_VAR). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Descripcin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Configuracin de la funcin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ejemplo de programacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.4 Comunicacin en una conexin ASCII (%SEND_RECV_MSG) . . . . .
Descripcin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Configuracin de la funcin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ejemplo de programacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Captulo 6 Fechadores (%SCH) . . . . . . . . . . . . . . . . . . . . . . . . . . . .


Descripcin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Programacin y configuracin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Captulo 7 Funcin PID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


Funcin PID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Captulo 8 Funciones de reloj . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


Funciones de reloj . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Marcas de fecha y hora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ajuste de fecha y hora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Glosario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ndice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6

188
189
191
194
198
200
202
211
211
213
214
215
219
221
222
223
225
227
228
229
231
233
234
235
238
240
241
242
244
247
247
249
250
251
253
257
259

EIO0000001477 11/2014

Informacin de seguridad
Informacin importante
AVISO
Lea atentamente estas instrucciones y observe el equipo para familiarizarse con el dispositivo
antes de instalarlo, utilizarlo o realizar su mantenimiento. Los mensajes especiales que se ofrecen
a 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 11/2014

TENGA EN CUENTA
La instalacin, manejo, puesta en servicio y 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.

EIO0000001477 11/2014

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 con la publicacin de SoMachine Basic V1.3.
Las caractersticas tcnicas de los dispositivos que se describen en este documento tambin se
encuentran online. Para acceder a esta informacin online:
Paso

Accin

Vaya a la pgina de inicio de Schneider Electric www.schneider-electric.com.

En el cuadro Search, escriba la referencia del producto o el nombre de el rango de productos.


No incluya espacios en blanco en el nmero de modelo ni el rango de productos.
Para obtener informacin sobre cmo agrupar mdulos similares, utilice los asteriscos (*).

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.

Si aparece ms de una referencia en los resultados de bsqueda Products, haga clic en la


referencia deseada.

En funcin del tamao de la pantalla, es posible que deba desplazar la pgina hacia abajo para
consultar la hoja de datos.

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 11/2014

Documentos relacionados
Ttulo de la documentacin

Nmero de referencia

Gua de funcionamiento de SoMachine Basic

EIO0000001354 (ING)
EIO0000001355 (FRA)
EIO0000001356 (ALE)
EIO0000001357 (ESP)
EIO0000001358 (ITA)
EIO0000001359 (CHI)
EIO0000001366 (POR)
EIO0000001367 (TUR)

Modicon M221 Logic Controller Advanced Functions Library Guide

EIO0000002007 (ING)
EIO0000002008 (FRA)
EIO0000002009 (ALE)
EIO0000002010 (ESP)
EIO0000002011 (ITA)
EIO0000002012 (CHI)
EIO0000002013 (POR)
EIO0000002014 (TUR)

Puede descargar estas publicaciones tcnicas y otra informacin tcnica de nuestro sitio web
www.schneider-electric.com.

10

EIO0000001477 11/2014

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 los retrasos de transmisin no esperados o los fallos en el enlace.
Tenga en cuenta todas las reglamentaciones para la prevencin de accidentes y las
directrices de seguridad locales.1
Cada implementacin 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 11/2014

11

12

EIO0000001477 11/2014

SoMachine Basic
Introduccin
EIO0000001477 11/2014

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 siguiente apartados:
Apartado

Pgina

Cmo utilizar ejemplos de cdigo fuente

14

Bloques de operacin

17

Bloques de comparacin

18

EIO0000001477 11/2014

13

Introduccin

Cmo utilizar 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
1

Accin
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
herramientas.

en la barra de

En este escaln, haga clic en el botn LD > IL para visualizar el cdigo fuente de Lista de
instrucciones.

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.

14

Haga clic en el botn IL > LD para visualizar el cdigo fuente de Lista de instrucciones.

Repita los pasos previos para cualquiera de los escalones adicionales del programa de
ejemplo.

EIO0000001477 11/2014

Introduccin

Ejemplo
Programa Lista de instrucciones:
Escaln

Cdigo fuente

BLK %R0
LD
%M1
I
LD
%I0.3
ANDN %R2.E
O
END_BLK

LD
%I0.3
[%MW20:=%R2.O]

LD
%I0.2
ANDN %R2.F
[%R2.I:=%MW34]
ST
%M1

EIO0000001477 11/2014

15

Introduccin

Diagrama de contactos correspondiente:

16

EIO0000001477 11/2014

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:

Para insertar un bloque de operacin en un escaln:


Paso

Accin

1
Haga clic en el botn Bloque de operacin
2

en la barra de herramientas.

Haga clic en el rea de accin (las ltimas 2 columnas) del escaln para insertar el Bloque de
operacin.

Haga doble clic en la lnea de expresin de operacin.

Escriba una operacin de lista de instrucciones vlida o una instruccin de asignacin y pulse
INTRO.

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 11/2014

17

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.

Haga clic en algn lugar del escaln para insertar el Bloque de comparacin.

Haga doble clic en la lnea Expresin de comparacin.

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.

18

EIO0000001477 11/2014

SoMachine Basic
Objetos de lenguaje
EIO0000001477 11/2014

Captulo 2
Objetos de lenguaje

Objetos de lenguaje
Contenido de este captulo
Este captulo contiene los siguiente apartados:
Apartado

Pgina

Objetos

20

Objetos de bit de memoria

21

Objetos de E/S

23

Objetos de palabra

26

Objetos de coma flotante y de palabra doble

30

Objetos estructurados

34

Objetos indexados

37

Objetos de bloques de funciones

39

EIO0000001477 11/2014

19

Objetos de lenguaje

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

20

EIO0000001477 11/2014

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

Los bits de memoria almacenan valores intermedios mientras se ejecuta


un programa.

Los bits de sistema proporcionan informacin de control y de estado del


controlador.

Los bits de pasos proporcionan el estado de las actividades del paso


Grafcet.

El identificador del objeto que representa su instancia secuencial en 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.

Identificador de
instancia de objeto

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

EIO0000001477 11/2014

21

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
valor

Acceso de
escritura(1)

Valores
inmediatos

0 1 (Falso o Verdadero)

01

Memoria

Los bits de memoria son reas de memoria interna


utilizadas para almacenar valores binarios.
Nota: los objetos de E/S no utilizados no pueden
emplearse como bits de memoria.

%Mi

Sistema

Los bits de sistema %S0 a %S127 permiten monitorizar la


operacin correcta del controlador y la ejecucin correcta
del programa de aplicacin, adems de controlar
determinadas funciones a nivel de sistema.

%Si

Depende de i

Pasos Grafcet

Los bits %X1 a %Xi se asocian a pasos Grafcet. El bit de


paso Xi se establece en 1 cuando el paso
correspondiente est activo, y en 0 cuando el paso est
desactivado.

%Xi

(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:

22

Objeto de bit

Descripcin

%M25

Bit de memoria nmero 25

%S20

Bit de sistema nmero 20

%X4

Paso Grafcet nmero 4

EIO0000001477 11/2014

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

Entrada digital (objeto de bit)

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 la entrada analgica (objeto de palabra)

QWS

Estado de la salida analgica (objeto de palabra)

Canal de E/S incrustada en el controlador lgico.

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
mdulo

(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.
EIO0000001477 11/2014

23

Objetos de lenguaje

Componente

Elemento

Valor

Descripcin

Nmero de
canal

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.

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

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

Direccin o
valor

Acceso de

Bits de entrada

%Iy.z(2)

No(3)

Bits de salida

%Qy.z(2)

Palabra de
entrada

%IWy.z(2)

No

Palabra de salida

%QWy.z(2)

Estado de la
palabra de
entrada

%IWSy.z(2)

No

Estado de la
palabra de salida

%QWSy.z(2)

No

Descripcin

escritura(1)
Estos bits son las imgenes lgicas de los estados
elctricos de la E/S digital fsica. Se almacenan en la
memoria de datos y se actualizan entre cada
exploracin de la lgica del programa.
Estos objetos de palabra contienen el valor analgico
del canal correspondiente.

Estos objetos de palabra contienen el estado del canal


analgico correspondiente.

(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 23) para obtener descripciones de y y z.
(3) Aunque no pueda escribir en los bits de entrada, estos se pueden forzar.

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

24

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

EIO0000001477 11/2014

Objetos de lenguaje

Objeto de E/S

Descripcin

%QW2.1

Salida analgica 1 en el mdulo de ampliacin en la direccin 2 (E/S del mdulo de


ampliacin).

%IWS0.1

Estado de la entrada analgica 1 del controlador (E/S incrustadas).

%QWS1.1

Estado de la salida analgica 1 del mdulo de ampliacin en la direccin 1 (E/S del mdulo
de ampliacin).

EIO0000001477 11/2014

25

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,
entonces 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:

26

Grupo

Elemento Descripcin

Smbolo

El smbolo de porcentaje siempre precede a una direccin interna.

Tipo de objeto

Las palabras de memoria almacenan valores mientras se ejecuta un


programa.

Las palabras constantes almacenan valores constantes o mensajes


alfanumricos. Su contenido solo se puede escribir o modificar utilizando
SoMachine Basic.

Las palabras de sistema proporcionan informacin de control y estado


para el controlador lgico.

Formato

Palabra de 16 bits.

Identificador de
instancia de objeto

El identificador del objeto que representa su instancia secuencial en 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.
EIO0000001477 11/2014

Objetos de lenguaje

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 27) 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 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 de "fin", se devuelve el valor 0 y el bit %S18
se establece en 1.
Por ejemplo, "HELLO"
%MW0:="HE"
%MW1:="LL"
%MW2:="O"
Lista de excepciones
En esta tabla se enumera el rango de valores de los objetos que son enteros sin signo:
Objeto

Valor

%SW

De 0 a 65.535

%FC.V y %FC.P

De 0 a 65.535

%FC.VD y %FC.PD

De 0 a 4.294.967.295

%HSC.V, %HSC.P, %HSC.S0, %HSC.S1 y %HSC.C

De 0 a 65.535

%HSC.DV, %HSC.PD, %HSC.S0D, %HSC.S1D y %HSC.CD

De 0 a 4.294.967.295

EIO0000001477 11/2014

27

Objetos de lenguaje

Objeto

Valor

%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
inmediatos

Se trata de valores enteros expresados en el mismo


formato que las palabras de 16 bits, lo que permite que
los valores se puedan asignar a estas palabras.

No

Base 10 (decimal)

De -32.768 a 32.767

Base 16 (hexadecimal)

De 16#0000 a
16#FFFF

Memoria

Palabras "temporales" empleadas para almacenar


valores durante la operacin en la memoria de datos.

%MWi

Constantes

Almacenan constantes o mensajes alfanumricos. Su


contenido slo se puede escribir o modificar mediante
software durante la configuracin.

%KWi

No

Estas palabras de 16 bits ofrecen diversas funciones:

%SWi

Depende de i

%TM2.P, %Ci.P,
etc.

Sistema

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
funciones

Estas palabras corresponden a los valores o


parmetros actuales de los bloques de 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.
28

EIO0000001477 11/2014

Objetos de lenguaje

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

Extraccin de un bit de un objeto 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

Sistema

%SWi:Xk

Depende de i

Constante

%KWi:Xk

No

%IWy.z:Xk

(2)

No

Valor de salida

%QWy.z:Xk

(2)

Estado de entrada

%IWSy.z:Xk(2)

No

Estado de salida

%QWSy.z:Xk(2)

Valor de entrada

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

EIO0000001477 11/2014

29

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

30

Rango lmite y operaciones no vlidas

Tipo

Sintaxis

#QNAN (no vlido)

#INF (infinito)

Raz cuadrada de un
operando

SQRT(x)

x<0

x > 1,7E38

Potencia de un entero por EXPT(y, x)


(donde:
un real
x^y = %MW^%MF)
EXPT(%MF,%MW)

x<0

y.ln(x) > 88

Logaritmo de Base 10

LOG(x)

x <= 0

x > 2,4E38

Logaritmo natural

LN(x)

x <= 0

x > 1,65E38

Exponencial natural

EXP(x)

x<0

x > 88,0
EIO0000001477 11/2014

Objetos de lenguaje

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

Operacin no vlida, el resultado no es un nmero (1.#NAN o -1.#NAN)

%SW17:X1

Reservado

%SW17:X2

Divisin entre 0, el resultado es infinito (-1.#INF o 1.#INF)

%SW17:X3

Resultado superior en valor absoluto a +3,402824E+38, el resultado es infinito


(-1.#INF o 1.#INF)

%SW17:X4 to X15

Reservado

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:

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

Los objetos de memoria se utilizan para almacenar valores intermedios


mientras se ejecuta un programa.

Las constantes se utilizan para almacenar valores constantes o


mensajes alfanumricos (nicamente para palabras dobles).

Objeto de coma flotante de 32 bits.

Objeto de palabra doble de 32 bits.

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

Formato
Identificador de
instancia de objeto

EIO0000001477 11/2014

31

Objetos de lenguaje

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 decimales


(coma flotante) de formato idntico al de los
objetos de 32 bits.

No

Coma flotante de
memoria

Objetos empleados para almacenar valores


durante la operacin en la memoria de datos.

%MFi

%MDi

%KFi

S (no segn el
programa)

%KDi

S (no segn el
programa)

Palabra doble de
memoria
Valor de constante
flotante

Se utiliza para almacenar constantes.

Constante doble

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.
Ejemplo
En esta tabla se presentan algunos ejemplos del direccionamiento de objetos de palabra doble y
coma flotante:

32

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

EIO0000001477 11/2014

Objetos de lenguaje

Posibilidad de solapamiento entre objetos


Las palabras simples, de doble longitud y flotantes se guardan en el espacio de datos en una
misma zona de memoria. As, la palabra flotante %MFi y la palabra doble %MDi se corresponden
con las palabras de longitud simple %MWi y %MWi+1; la palabra %MWi contiene los bits menos
significativos y la palabra %MWi+1 los bits 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

%MF1 / %MD1

%MW1

%MF3 / %MD3

%MW3

%MF0 / %MD0

%MW0

%MF2 / %MD2

%MW2

%MF4 / %MD4

%MW4
...

%MW5

%MFi / %MDi

%MWi

...

...

%MFi+1 / %MDi+1

%MWi+1

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


Flotante y doble

Direccin impar

%KF0 / %KD0
%KF1 / %KD1
%KF2 / %KD2

%KW1
%KW2

%KF3 / %KD3
%KF4 / %KD4

%KW3
%KW4

...
...

%KW5
...

%KFi / %KDi
%KFi+1 / %KDi+1

Palabras de memoria
%KW0

%KWi
%KWi+1

Ejemplo:
%MF0 corresponde a %MW0 y %MW1. %KF543 corresponde a %KW543 y %KW544.

EIO0000001477 11/2014

33

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

No

Bits de salida digital

%Q0.0:L o %Q1.0:L (1)

Bits de sistema

%Si:L
con i mltiplo de 8

En funcin de i

Bits de pasos Grafcet

%Xi:L
con i mltiplo de 8

S (mediante el programa)

Bits de memoria

%Mi:L
con i mltiplo de 8

(1)

(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.
34

EIO0000001477 11/2014

Objetos de lenguaje

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

Las tablas de palabras pueden utilizarse con la instruccin de asignacin (vase pgina 48).
Tipos de palabras disponibles
Tipos de palabras disponibles para tablas de palabras:
Tipo

Direccin

Acceso de escritura

Palabras de memoria

%MWi:L

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 48).
EIO0000001477 11/2014

35

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

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 48).
Tipos de palabras flotantes disponibles
Tipos de palabras disponibles para tablas de palabras flotantes:

36

Tipo

Direccin

Acceso de escritura

Palabras de memoria

%MFi:L

Palabras constantes

%KFi:L

No

EIO0000001477 11/2014

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]

Palabras constantes

%KWi[%MWj]

No

Palabras dobles de memoria

%MDi[MWj]

Palabras dobles constantes

%KDi[%MWj]

No

Comas flotantes de memoria

%MFi[MWj]

Comas flotantes constantes

%KFi[%MWj]

No

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.
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 61) y en
instrucciones de comparacin (vase pgina 57).

EIO0000001477 11/2014

37

Objetos de lenguaje

Este tipo de direccionamiento permite explorar series de objetos del mismo tipo (como palabras
de memoria y constantes) de manera sucesiva, modificando el contenido del objeto del ndice en
el programa.
Bit de sistema de desborde de ndice %S20
El desborde de ndice se produce cuando la 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.

38

EIO0000001477 11/2014

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:

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 135) reversible.
Especificando el tipo de bloque (por ejemplo, LD %Ci.E).
Puede accederse a las entradas en forma de instrucciones.
EIO0000001477 11/2014

39

Objetos de lenguaje

Objetos de palabra
Los objetos de palabra corresponden a 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.

40

EIO0000001477 11/2014

SoMachine Basic
Instrucciones
EIO0000001477 11/2014

Captulo 3
Instrucciones

Instrucciones
Contenido de este captulo
Este captulo contiene las siguientes secciones:
Seccin

Apartado

Pgina

3.1

Procesamiento booleano

42

3.2

Procesamiento numrico

59

3.3

Programa

77

3.4

Coma flotante

84

3.5

ASCII

3.6

Operadores de pila

104

3.7

Instrucciones sobre las tablas de objetos

106

3.8

Instrucciones sobre los objetos de E/S

128

EIO0000001477 11/2014

93

41

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

42

Pgina

Instrucciones booleanas

43

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

46

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

48

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

50

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

52

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

54

Operador NOT (N)

56

Instrucciones de comparacin

57

EIO0000001477 11/2014

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
instruccin

Elementos de
prueba

La instruccin de carga (LD) es LD


equivalente al primer contacto
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.

%I0.0

El contacto se cierra cuando el


bit %I0.0 se encuentra en
estado 1.

Elementos de
accin

La instruccin de
almacenamiento (ST) equivale
a una bobina.

%Q0.0

El objeto de bit asociado toma


un valor lgico del acumulador
de bits (resultado de lgica
anterior).

ST

Descripcin

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

Instruccin

LD
AND
ST

%I0.0
%I0.1
%Q0.0

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 14) 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 11/2014

43

Instrucciones

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

Instruccin IL

Flanco
ascendente

LDR %I0.0

Diagrama de
contactos

Diagrama de tiempos

Flanco
LDF %I0.0
descendente

NOTA: El flanco ascendente y descendente solo se pueden aplicar con %I y %M.


Deteccin de flanco ascendente
La instruccin 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

LDR

%I0.0

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

44

EIO0000001477 11/2014

Instrucciones

Deteccin de flanco descendente


La instruccin 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

LDF

%I0.0

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

EIO0000001477 11/2014

45

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 controlador lgico 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 de


contactos

Operandos permitidos

LDN

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

LDR

%I, %M

LD

LDF

Ejemplos de codificacin
Ejemplos de instrucciones de carga:
Escaln

Instruccin

LD
ST

%I0.1
%Q0.3

LDN
ST

%M0
%Q0.2

LDR
ST

%I0.1
%Q0.4

LDF
ST

%I0.3
%Q0.5

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

46

EIO0000001477 11/2014

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 11/2014

47

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


contactos

ST

Operandos permitidos
%Q, %M, %S, %X, %BLK.x
%QW:Xk, %MW:Xk, %SW:Xk(1)

STN
S
R
(1) %SW:Xk se encuentra en palabras de sistema que no son de slo lectura.

Ejemplos de codificacin
Ejemplos de instrucciones de asignacin:
Escaln

Instruccin

LD
ST
STN
S

%I0.1
%Q0.3
%Q0.2
%Q0.4

LD
R

%I0.2
%Q0.4

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

48

EIO0000001477 11/2014

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 11/2014

49

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 de contactos Operandos permitidos

ANDN

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

ANDR

%I, %M

AND

ANDF

Ejemplos de codificacin
Ejemplos de instrucciones AND lgicas:
Escaln

Instruccin

LD
AND
ST

%I0.1
%M1
%Q0.3

LD
ANDN
ST

%M0
%I0.0
%Q0.2

LD
ANDR
S

%I0.3
%I0.4
%Q0.4

LD
ANDF
S

%M3
%I0.5
%Q0.5

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

EIO0000001477 11/2014

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 11/2014

51

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
OR

Equivalente del diagrama de


contactos

Operandos permitidos
0/1
%I, %Q, %M, %S, %X, %BLK.x
%IW:Xk, %QW:Xk, %IWS:Xk, %QWS:Xk,
%MW:Xk, %SW:Xk, %KW:Xk

ORN

ORR

%I, %M

ORF

52

EIO0000001477 11/2014

Instrucciones

Ejemplos de codificacin
Ejemplos de instrucciones OR lgicas:
Escaln

Instruccin

LD
OR
ST

%I0.1
%M1
%Q0.0

LD
ORN
ST

%I0.2
%M2
%Q0.1

LD
ORR
S

%M0
%I0.3
%Q0.5

LDF
ORF
S

%I0.5
%I0.6
%Q0.0

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 14) 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 11/2014

53

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


contactos

XOR

Operandos permitidos
%I, %Q, %M, %S, %X, %BLK.x
%IW:Xk, %QW:Xk, %IWS:Xk, %QWS:Xk, %MW:Xk,
%SW:Xk, %KW:Xk

XORN

XORR

%I, %M

XORF

Ejemplos de codificacin
En caso de utilizar la instruccin XOR:

54

Escaln

Instruccin

LD
XOR
ST

%I0.1
%M1
%Q0.3

EIO0000001477 11/2014

Instrucciones

Instrucciones lgicas equivalentes del operador XOR:


Escaln

Instruccin

LD
ANDN
OR(
ANDN
)
ST

%I0.1
%M1
%M1
%I0.1
%Q0.3

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 14) 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 11/2014

55

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


contactos

Operandos permitidos
No aplicable.

Ejemplos de codificacin
Ejemplo de una instruccin NOT:
Escaln

Instruccin

LD
N
ST

%I0.1
%Q0.0

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 14) 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:

56

EIO0000001477 11/2014

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 18) 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,


%SWi, %BLK.x

Valor inmediato, %MWi, %KWi, %IW,


%QW, %IWSi, %QWSi, %SWi, %BLK.x,
%MWi[%MWi], %KWi[%MWi]

Palabras dobles

%MDi, %KDi

Valor inmediato, %MDi, %KDi,


%MDi[%MWi], %KD[%MWi]

Palabras de coma
flotante

%MFi, %KFi

Valor de coma flotante inmediato, %MFi,


%KFi, %MFi[%MWi], %KFi[%MWi]

NOTA: Las instrucciones de comparacin pueden utilizarse entre parntesis.

EIO0000001477 11/2014

57

Instrucciones

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

Instruccin

LD
AND
ST

%I0.2
[%MW10>100]
%Q0.3

LD
AND
ST

%M0
[%MW20<%KW35]
%Q0.4

LD
OR
ST

%I0.2
[%MF30>=%MF40]
%Q0.5

Ejemplo de utilizacin de una instruccin de comparacin entre parntesis:


Escaln

Instruccin

LD
AND(
OR
)
ST

%M0
[%MF20>10.0]
%I0.0
%Q0.1

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

58

EIO0000001477 11/2014

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

60

Instrucciones de asignacin

61

Asignacin de cadenas de bits

62

Asignacin de palabras

64

Operadores aritmticos en enteros

66

Instrucciones lgicas

70

Instrucciones de desplazamiento

72

Instrucciones de conversin de BCD/binario

74

Instrucciones de conversin de palabras simples y dobles

76

EIO0000001477 11/2014

59

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.

60

EIO0000001477 11/2014

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

EIO0000001477 11/2014

61

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 17) 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
doble

%MWi,%QWi, %SWi
%MWi[%MWi], %MDi, %MDi[%MWi]
%Mi:L, %Qi:L, %Si:L, %Xi:L
%TMi.P, %Ci.P, %Ri.I, %Ri.O,
%FCi.P, %PLSi.P, %PWMi.P
%Ci.PD, %FCi.PD

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

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

62

EIO0000001477 11/2014

Instrucciones

Estructura
Ejemplos de asignaciones de cadenas de bits:
Escaln

Instruccin

LD 1
[%Q0.0:8:=%M64:8]

LD %I0.2
[%MW100:=%M0:16]

LDR %I0.3
[%MW104:16:=%KW0]

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 14) 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 11/2014

63

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 17) 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
doble, cadena de bits %MWi[MWi], %MDi,
%MDi[%MWj], %Mi:L, %Qi:L,
%Si:L, %Xi:L

Valor inmediato,
%MWi, %KWi, %IW, %QWi, %IWSi, QWSi,
%SWi, %MWi[MWi], %KWi[MWi], %MDi,
%MDi[%MWj], %KDi, %KDi[MWj], %Mi:L,
%Qi:L, %Si:L, %Xi:L, %Ii:L

Coma flotante

Valor de coma flotante inmediato,


%MFi, %MFi[%MWj], %KFi, %KFi[%MWj]

%MFi, %MFi[%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, ...).

64

EIO0000001477 11/2014

Instrucciones

Estructura
Ejemplos de asignaciones de palabras:
Escaln

Instruccin

LD 1
[%SW112:=%MW100]

LD %I0.2
[%MW0[%MW10]:=%KW0[%MW20]]

LD %I0.3
[%MW10:=100]

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

EIO0000001477 11/2014

65

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 17) en los escalones del
diagrama de contactos utilizando un elemento grfico de Bloque de operacin.
Sintaxis de las instrucciones aritmticas:

66

Operador

Sintaxis

+,-,*,/,REM

[Op1: = Op2 operador Op3]

INC, DEC

[operador Op1]

SQRT (1)

[Op1: = SQRT(Op2)]

ABS (1)

[Op1: = ABS(Op2)]

EIO0000001477 11/2014

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,

%MDi, %BLK.x

Immediate value, %MDi, %KDi,


%BLK.x (Valor inmediato, %MDi, %KDi,

Palabras dobles

%QWi, %IWSi, %QWSi, %SWi, %BLK.x(2)

%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

LD %M0
[%MW0:=%MW10+10]

LD %I0.2
[%MW0:=SQRT(%MW10)]

LDR %I0.3
[%MW10:=32767]

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 14) 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 69)). 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 11/2014

67

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

68

EIO0000001477 11/2014

Instrucciones

Ejemplo de aplicacin
Desborde durante la suma:
Escaln

Instruccin

LD %M0
[%MW0:=%MW1+%MW2]

LDN %S18
[%MW10:=%MW0]

LD %S18
[%MW10 :=32767]

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 14) 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 11/2014

69

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 17) 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 Op3]

NOT

[Op1:=NOT(Op2)]

%MWi, %QWi, %SWi,


%BLK.x

Valor inmediato (1),


%MWi, %KWi, %IWi,
%QWi, %IWSi, %QWSi,
%SWi, %BLK.x

(1) Con NOT, Op2 no puede ser un valor inmediato.

Estructura
Ejemplos de instrucciones lgicas:
Escaln

Instruccin

LD %M0
[%MW0:=%MW10 AND 16#00FF]

LD 1
[%MW0:=%KW5 OR %MW10]

LD %I0.3
[%MW102:=NOT(%MW100)]

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

70

EIO0000001477 11/2014

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 11/2014

71

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.

72

EIO0000001477 11/2014

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


%BLK.x

%MWi, %KWi, %IWi, %QWi, %IWSi,


%QWSi, %SWi, %BLK.x

Palabras dobles

%MDi
%BLK.x

%MDi, %KDi
%BLK.x

Estructura
Ejemplos de instrucciones de desplazamiento:
Escaln

Instruccin

LDR %I0.1
[%MW0:=SHL(%MW10,5)]

LDR %I0.2
[%MW10:=ROR(%KW9,8)]

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

EIO0000001477 11/2014

73

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

BCD

0001

0010

0011

0100

0101

0110

0111

1000

1001

0000

Ejemplos:
La palabra %MW5 expresa el valor BCD 2450 que corresponde al valor binario: 0010 0100 0101
0000.
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.
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 17) en los escalones del
diagrama de contactos utilizando un elemento grfico de Bloque de operacin.
Sintaxis de las instrucciones de conversin BCD/binario:

74

Operador

Sintaxis

BTI, ITB

[Op1 := operador (Op2)]

EIO0000001477 11/2014

Instrucciones

En esta tabla se muestra la informacin de los operandos:


Tipos

Op1

Op2

Palabras

%MWi, %QWi, %SWi


%BLK.x

%MWi, %KWi, %IWi, %QWi, %IWSi,


%QWSi, %SWi, %BLK.x

Palabra doble

%MDi
%BLK.x

%MDi, %KDi
%BLK.x

Estructura
Ejemplos de instrucciones de conversin BCD/binario:
Escaln

Instruccin

LD %M0
[%MW0:=BTI(%MW10)]

LD %I0.2
[%MW10:=ITB(%KW9)]

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 14) 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 11/2014

75

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 17) 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,
%BLK.x

%MWi, %KWi,
valor inmediato

%MWi, %KWi,
valor inmediato

DWORD

Op1 = operador (Op2)

%MDi, %KDi,
%BLK.x

%MWi, %KWi

[-]

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

Instruccin

LD %M0
[%MW0:=HW(%MD10)]

LD %I0.2
[%MD10:=DWORD(%KW9)]

LD %I0.3
[%MD11:=CONCATW(%MW10,%MW5)]

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

76

EIO0000001477 11/2014

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

78

Instrucciones NOP

79

Instrucciones de salto

80

Instrucciones de subrutina

82

EIO0000001477 11/2014

77

Instrucciones

Instrucciones END
Introduccin
Las instrucciones END definen el final de la ejecucin de una exploracin del programa.
END, ENDC y ENDCN
Estn disponibles tres instrucciones END diferentes:
END: fin incondicional del programa.
ENDC: fin del programa si el resultado booleano de la instruccin de prueba anterior es 1.
ENDCN: fin del programa si el resultado booleano de la instruccin de prueba anterior es 0.

De forma predeterminada (modalidad normal), cuando se activa el fin de un programa, las salidas
se actualizan y se inicia la siguiente 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

LD %M1
ST %Q0.1

LD %M2
ST %Q0.2

END

Ejemplo de una instruccin END condicional:


Escaln

Instruccin

LD %I0.0
ST %Q0.0

LD %I0.1
ST %Q0.1

LD %I0.2
ENDC

LD %I0.3
ST %Q0.2

END

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

78

EIO0000001477 11/2014

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.

EIO0000001477 11/2014

79

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

LD
JMPC

%M15
%L8

LD
ST
JMPC

[%MW24<%MW12]
%Q0.3
%L12

%L8:
LD
AND
ST
JMPC

%M12
%M13
%M12
%L12

LD
S

%M11
%Q0.0

%L12:
LD
%I0.0
ST
%Q0.4

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

80

EIO0000001477 11/2014

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.

EIO0000001477 11/2014

81

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
(vase SoMachine Basic, Gua de funcionamiento) 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 un 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:

82

Escaln

Instruccin

LD
AND
ST

%M15
%M5
%Q0.0

LD
SR1

[%MW24>%MW12]

LD
AND
ST
END

%I0.4
%M13
%Q0.1

EIO0000001477 11/2014

Instrucciones

Ejemplo de instruccin de subrutina (SR1):


Escaln

Instruccin

0 (SR1)

LD
ST

%I0.0
%Q0.0

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

Una subrutina no debe llamar a otra subrutina. Si se intenta llamar a una subrutina de una POU
disponible, se detectar un error del compilador.
Las instrucciones de subrutina no pueden aparecer entre parntesis y no deben situarse entre
las instrucciones AND, OR ni 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.

EIO0000001477 11/2014

83

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

84

Pgina

Instrucciones aritmticas en objetos de coma flotante

85

Instrucciones trigonomtricas

88

Instrucciones de conversin de ngulos

90

Instrucciones de conversin de entero/coma flotante

91

EIO0000001477 11/2014

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

EIO0000001477 11/2014

85

Instrucciones

Operandos de las instrucciones aritmticas en coma flotante:


Operadores

Op1

Op2

Op3

+, - *, /

%MFi

%MFi, %KFi, valor


inmediato

%MFi, %KFi, valor inmediato

SQRT, ABS, LOG, EXP,


LN

%MFi

%MFi, %KFi

[-]

TRUNC

%MFi, %MD
i

%MFi, %KFi

[-]

EXPT

%MFi

%MFi, %KFi

%MWi, %KWi, valor inmediato

Nota: SoMachine Basic impide el uso de la funcin con un %MWi como Op1.

Estructura
Ejemplo de una instruccin aritmtica:
Escaln

Instruccin

LD %M0
[%MF0:=%MF10+129.7]

LD %I0.2
[%MF1:=SQRT(%MF10)]

LDR %I0.3
[%MF2:=ABS(%MF20)]

LDR %I0.4
[%MF3:=TRUNC(%MF2)]

LD %M1
[%MF4:=LOG(%MF10)]

LD %I0.5
[%MF5:=LN(%MF20)]

LD %I0.0
[%MF6:=EXP(%MF30)]

LD %I0.1
[%MF7:=EXPT(%MF40,%MW52)]

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

86

EIO0000001477 11/2014

Instrucciones

Reglas de utilizacin

Las operaciones con valores de coma flotante y enteros no se pueden mezclar directamente.
Las operaciones de conversin (vase pgina 90) 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 90); 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.


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)

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

EIO0000001477 11/2014

87

Instrucciones

Instrucciones trigonomtricas
Introduccin
Estas instrucciones permiten realizar operaciones trigonomtricas:
SIN

seno de un ngulo expresado en radianes

ASIN
arco seno (resultado entre

COS

coseno de un ngulo expresado en radianes ACOS

TAN

tangente de un ngulo expresado en


radianes

arco coseno (resultado entre 0 y

)
)

ATAN
arco tangente (resultado entre

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 17) 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,


ASIN, ACOS, ATAN

Op1:=operador(Op2)

%MFi

%MFi, %KFi

Estructura
Ejemplo de instrucciones Trigonometric:
Escaln

Instruccin

LD %M0
[%MF0:=SIN(%MF10)]

LD %I0.0
[%MF1:=TAN(%MF20)]

LD %I0.3
[%MF2:=ATAN(%MF30)]

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

88

EIO0000001477 11/2014

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
imprecisin en el parmetro antes de realizar cualquier operacin.

EIO0000001477 11/2014

provoca una

89

Instrucciones

Instrucciones de conversin de ngulos


Introduccin
Estas instrucciones permiten llevar a cabo operaciones de conversin:
Conversin de grados a radianes, el resultado es el valor del ngulo comprendido

DEG_TO_RAD

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

RAD_TO_DEG

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 17) 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
RAD_TO_DEG

Op1:=operador(Op2)

%MFi

%MFi, %KFi

Estructura
Ejemplo de instrucciones de conversin:
Escaln

Instruccin

LD %M0
[%MF0:=DEG_TO_RAD(%MF10)]

LD %M2
[%MF2:=RAD_TO_DEG(%MF20)]

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 14) 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

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

90

EIO0000001477 11/2014

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

EIO0000001477 11/2014

91

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

LD 1
[%MF0:=INT_TO_REAL(%MW10)]

LD I0.8
[%MD2:=REAL_TO_DINT(%MF9)]

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 14) 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.
92

EIO0000001477 11/2014

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

94

Instrucciones de conversin de ASCII a entero

96

Instrucciones de conversin de entero a ASCII

98

Instrucciones de conversin de ASCII a flotante

100

Instrucciones de conversin de flotante a ASCII

102

EIO0000001477 11/2014

93

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

94

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 11/2014

Instrucciones

Casos especiales
El software comprueba la sintaxis. Los ejemplos siguientes produciran errores de sintaxis:
Sintaxis incorrecta

Sintaxis correcta

%MW10:= ROUND(%MW1,4)
falta ":7" en el resultado

%MW10:7 := ROUND(%MW1,4)

%MW10:13:= ROUND(%MW1,4)
%MW10:n, donde n 7 es incorrecto

%MW10:7 := ROUND(%MW1,4)

Ejemplo de 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"

EIO0000001477 11/2014

95

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 17) en los escalones del
diagrama de contactos utilizando un elemento grfico de Bloque de operacin.
Para las instrucciones de conversin de 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.

96

EIO0000001477 11/2014

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

6#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

EIO0000001477 11/2014

97

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

98

Sintaxis incorrecta

Sintaxis correcta

%MW10 := INT_TO_ASCII(%MW1)
falta ":4" en el resultado

%MW10:4 := INT_TO_ASCII(%MW1)

%MW10:n := INT_TO_ASCII(%MW1)
%MW10:n, donde n 4 es incorrecto

%MW10:4 := INT_TO_ASCII(%MW1)

EIO0000001477 11/2014

Instrucciones

Ejemplo de aplicacin
Para la instruccin MW10:4 := INT_TO_ASCII(%MW1):
Si...
Valor entero
%MW1 = 123
%MW1 = 45
%MW1 = 7

%MW1 = -12369

EIO0000001477 11/2014

Entonces...
Valor hexadecimal

Valor ASCII

%MW10 = 16#3231

2, 1

%MW11 = 16#0D33

%MW10 = 16#3534

5, 4

%MW11 = 16#000D

enter

%MW10 = 16#0D37

enter, 7

%MW10 = 16#3145

1, -

%MW11 = 16#3332

3, 2

%MW10 = 16#3936

9, 6

%MW11 = 16#000D

enter

99

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

100

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).
Si el resultado del clculo se encuentra entre -1,175494E-38 y 1,175494E-38, se redondea a
0,0.

EIO0000001477 11/2014

Instrucciones

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

EIO0000001477 11/2014

101

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

Errores de sintaxis
El software comprueba la sintaxis. Los ejemplos siguientes produciran errores de sintaxis:

102

Sintaxis incorrecta

Sintaxis correcta

%MW10 := FLOAT_TO_ASCII(%MF1)
falta ":7" en el resultado

%MW10:7 := FLOAT_TO_ASCII(%MF1)

%MW10:n := FLOAT_TO_ASCII(%MF1)
%MW10:n donde n 7 es incorrecto

%MW10:7 := FLOAT_TO_ASCII(%MF1)

EIO0000001477 11/2014

Instrucciones

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

EIO0000001477 11/2014

103

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:

104

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 valores a la parte
inferior de la pila.

MRD

Leer memoria desde pila

Lee la parte superior de la pila en el acumulador.

MPP

Sacar memoria de pila

Copia el valor de la parte superior de la pila en el


acumulador (sacar) y desplaza el resto de valores
hacia la parte superior de la pila.

EIO0000001477 11/2014

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

LD
AND
MPS
AND
ST
MRD
AND
ST
MRD
AND
ST
MPP
AND
ST

%I0.0
%M1
%I0.1
%Q0.0
%I0.2
%Q0.1
%I0.3
%Q0.2
%I0.4
%Q0.3

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 14) para obtener el diagrama
de contactos equivalente.
EIO0000001477 11/2014

105

Instrucciones

Seccin 3.7
Instrucciones sobre las tablas de objetos

Instrucciones sobre las tablas de objetos


Objeto de esta seccin
En esta seccin se describen las instrucciones de las tablas de objetos:
De palabras dobles.
De objetos de coma flotante.

Contenido de esta seccin


Esta seccin contiene los siguientes apartados:
Apartado

106

Pgina

Asignacin de tablas de palabras, palabras dobles o coma flotante

107

Funciones de suma en tablas

109

Funciones de comparacin de tablas

111

Funciones de bsqueda en tablas

113

Funciones de bsqueda de valores mximo y mnimo en tablas

115

Nmero de apariciones de un valor en una tabla

117

Funciones de desplazamiento circular de tablas

118

Funciones de clasificacin en tablas

120

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

122

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

127

EIO0000001477 11/2014

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 108)) o a la tabla de palabras dobles
Palabra a tabla de palabras (vea el escaln 1 de la estructura de ejemplo (vase pgina 108))
Tabla de palabras a tabla de palabras (vea el escaln 2 de la estructura de ejemplo
(vase pgina 108))
La longitud de la tabla (L) debe ser igual para ambas tablas.
Palabra doble a tabla de palabras dobles
Tabla de palabras dobles a tabla de palabras dobles
La longitud de la tabla (L) debe ser igual para ambas tablas.
Valor de coma flotante inmediato a tabla de coma flotante
Coma flotante a tabla de coma flotante
Tabla de coma flotante a tabla de coma flotante
La longitud de la tabla (L) debe ser igual para ambas tablas.

Sintaxis
A continuacin, se describe la sintaxis de la lista de instrucciones. Puede insertar operaciones de
lista de instrucciones e instrucciones de asignacin (vase pgina 17) 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
dobles

%MDi:L

Valor entero inmediato,


%MDi, %KDi,%MDi:L, %KDi:L

Tablas de palabras
flotantes

%MFi:L

Valor de coma flotante inmediato, %MFi, %KFi,


%MFi:L, %KFi:L

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.

EIO0000001477 11/2014

107

Instrucciones

Estructura
Ejemplos de asignaciones de tablas de palabras:
Escaln

Instruccin

LD 1
[%MW0:10:=100]

LD %I0.0
[%MW0:10:=%MW11]

LDR %I0.3
[%MW10:20:=%KW20:30]

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

108

EIO0000001477 11/2014

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

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

LD %I0.2
[%MD5:=SUM_ARR(%MD3:1)]

LD 1
[%MD5:=SUM_ARR(%KD5:2)]

LD 1
[%MF2:=SUM_ARR(%MF8:5)]

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

EIO0000001477 11/2014

109

Instrucciones

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

110

EIO0000001477 11/2014

Instrucciones

Funciones de 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 17) 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

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

LD %I0.2
[%MW5:=EQUAL_ARR(%MD20:7,%KD0:7)]

LD 1
[%MW0:=EQUAL_ARR(%MD20:7,%KD0:7)]

LD 1
[%MF2:=SUM_ARR(%MF8:5)]

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

EIO0000001477 11/2014

111

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

%MD30=10

%KD0=10

%MD32=20

%KD2=20

%MD34=30

%KD4=60

Diferente

%MD36=40

%KD6=40

El valor de la palabra %MW5 es 2 (primer rango diferente)

112

EIO0000001477 11/2014

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 17) 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
flotantes

%MWi

%MFi:L,%KFi:L

%MFi,%KFi

Tablas de palabras
dobles

%MWi

%MDi:L,%KDi:L

%MDi,%KDi

Longitud de la tabla (mximo 255).

EIO0000001477 11/2014

113

Instrucciones

Estructura
Ejemplo de funcin de bsqueda en tablas:
Escaln

Instruccin

LD %I0.2
[%MW5:=FIND_EQR(%MD20:7,%KD0)]

LD %I0.3
[%MW6:=FIND_GTR(%MD20:7,%KD0)]

LD 1
[%MW7:=FIND_LTR(%MF40:5,%KF4)]

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 14) 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:

114

Rango

Tabla de palabras

Resultado

%MD30=10

%MD32=20

%MD34=30

Valor (val), rango

%MD36=40

EIO0000001477 11/2014

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

EIO0000001477 11/2014

115

Instrucciones

Estructura
Ejemplo de funcin de bsqueda en tablas:
Escaln

Instruccin

LD %I0.2
[%MD0:=MIN_ARR(%MD20:7)]

LD 1
[%MF8:=MIN_ARR(%MF40:5)]

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

116

EIO0000001477 11/2014

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 17) 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
dobles

%MWi

%MDi:L,%KDi:L

%MDi,%KDi

Tablas de palabras
flotantes

%MFi

%MFi:L,%KFi:L

%MFi,%KFi

Longitud de la tabla (mximo 255).

Estructura
Ejemplo de nmero de apariciones:
Escaln

Instruccin

LD %I0.3
[%MW5:=OCCUR_ARR(%MF20:7,%KF0)]

LD %I0.2
[%MW5:=OCCUR_ARR(%MD20:7,%MD1)]

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

EIO0000001477 11/2014

117

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

118

EIO0000001477 11/2014

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

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

LD %I0.2
[ROL_ARR(%KW0,%MD20:7)]

LD %I0.3
[ROR_ARR(2,%MD20:7)]

LD %I0.4
[ROR_ARR(2,%MF40:5)]

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

EIO0000001477 11/2014

119

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

120

Longitud de la tabla (mximo 255).

EIO0000001477 11/2014

Instrucciones

Estructura
Ejemplo de funcin de clasificacin en tablas:
Escaln

Instruccin

LD %I0.1
[SORT_ARR(%MW20,%MF0:6)]

LD %I0.2
[SORT_ARR(%MW20,%MF0:6)]

LD %I0.3
[SORT_ARR(0,%MF40:8)]

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

EIO0000001477 11/2014

121

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

122

, donde

EIO0000001477 11/2014

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

EIO0000001477 11/2014

%MF0

Valor entero, %MWi,or %KWi

123

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

Interpolacin correcta

Se ha detectado un error de interpolacin: matriz incorrecta, Xm < Xm-1

Se ha detectado un error de interpolacin: Op2 fuera de rango, X < X1

Se ha detectado un error de interpolacin: Op2 fuera de rango, X > Xm

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

124

(Ecuacin 3)
(Ecuacin 4)

EIO0000001477 11/2014

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

LD %I0.2
[%MW20:=LKUP(%MF0,%KW1)]

LD %I0.3
[%MW22:=LKUP(%MF0,10)]

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 14) 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.

EIO0000001477 11/2014

125

Instrucciones

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


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

126

EIO0000001477 11/2014

Instrucciones

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


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

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

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

EIO0000001477 11/2014

127

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

128

Pgina

Entrada incrustada digital de lectura instantnea (READ_IMM_IN)

129

Salida incrustada digital de escritura instantnea (WRITE_IMM_OUT)

131

EIO0000001477 11/2014

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


%MWi
%KWi

Define el ndice de entrada (%I0.x).

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

No se ha detectado ningn error.

La entrada declarada es mayor que la entrada mxima permitida.

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.

EIO0000001477 11/2014

129

Instrucciones

Estructura
Ejemplo de la instruccin READ_IMM_IN:
Escaln

Instruccin

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

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

130

EIO0000001477 11/2014

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


%MWi
%KWi

Define el ndice de salida (%Q0.x).

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

No se ha detectado ningn error.

La salida declarada es mayor que la salida mxima permitida.

La salida declarada est forzada.

La salida declarada se utiliza como una salida de hardware dedicada.

La salida declarada se utiliza como una salida de alarma.

EIO0000001477 11/2014

131

Instrucciones

Ejemplo
%MW0 := WRITE_IMM_OUT(%MW5) (con %MW5 = 2)
En la 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

LD %M0
[%MW0:=WRITE_IMM_IN(%MW4)]

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

132

EIO0000001477 11/2014

SoMachine Basic
Objetos de software
EIO0000001477 11/2014

Captulo 4
Objetos de software

Objetos de software
Contenido de este captulo
Este captulo contiene las siguientes secciones:
Seccin

Apartado

Pgina

4.1

Uso de bloques de funciones

134

4.2

Temporizador (%TM)

140

4.3

Registro LIFO/FIFO (%R)

149

4.4

Registro de bits de desplazamiento (%SBR)

158

4.5

Contador de pasos (%SC)

163

4.6

Contador (%C)

168

4.7

Contador rpido (%FC)

176

4.8

Contador de alta velocidad (%HSC)

177

4.9

Registro Drum (%DR)

178

4.10

Pulso (%PLS)

186

4.11

Modulacin de ancho de pulsos (%PWM)

187

4.12

Mensaje (%MSG) e intercambio (EXCH)

188

4.13

Salida de tren de pulsos (%PTO)

211

EIO0000001477 11/2014

133

Objetos de software

Seccin 4.1
Uso de bloques de funciones

Uso de bloques de funciones


Contenido de esta seccin
Esta seccin contiene los siguientes apartados:
Apartado

134

Pgina

Principios de programacin del bloque de funciones

135

Aadido de un bloque de funciones

137

Configuracin de un bloque de funciones

139

EIO0000001477 11/2014

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 137) el bloque de funciones en un escaln.
2. Conecte las entradas y salidas segn sea necesario.
3. Configure (vase pgina 139) 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 11/2014

135

Objetos de software

Ejemplo con salidas cableadas


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

Instruccin

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

BLK
%C8
LDF
%I0.1
R
LD
%I0.2
AND
%M0
CU
END_BLK

LD
AND
ST

%C8.D
%M1
%Q0.4

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

136

EIO0000001477 11/2014

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

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.

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

Seleccione el bloque de funciones.

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 11/2014

137

Objetos de software

Objeto de bloque de
funciones

Descripcin
Drum Register

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

138

EIO0000001477 11/2014

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

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.

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.

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.

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 11/2014

139

Objetos de software

Seccin 4.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

140

Pgina

Descripcin

141

Configuracin

142

TON: temporizador de retardo de conexin

144

TOF: temporizador de retardo de desconexin

145

TP: temporizador de pulso

146

Ejemplo de programacin

147

EIO0000001477 11/2014

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

Direccin de salida
(%TMi.Q)

El bit asociado %TMi.Q se establece en 1 (en funcin del tipo de


Timer) cuando el Timer se agota.

EIO0000001477 11/2014

141

Objetos de software

Configuracin
Parmetros
Para configurar los parmetros, siga el procedimiento de configuracin de un bloque de funciones
(vase pgina 139) 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

Valor

Utilizado

Direccin utilizada

Si est seleccionada, esta direccin se est utilizando


actualmente en un programa.

Direccin

Direccin del objeto de Timer


(%TMi)

Un programa solo puede contener un nmero limitado de


objetos de 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


informacin, consulte Definicin y uso de los smbolos en
la Gua de funcionamiento de SoMachine Basic.

Tipo

Tipo de Timer

Uno de los siguientes:


TON (vase pgina 144): temporizador de retardo de

conexin (predeterminado)
TOF (vase pgina 145): temporizador de retardo de

desconexin
TP (vase pgina 146): temporizador de pulso

(monoestable)

142

Base

Base de tiempo

La unidad de referencia de tiempo del temporizador.


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.


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 utilizando el objeto asociado
%TMi.P.

Comentario

Comentario

Se puede asociar un comentario con este objeto.

EIO0000001477 11/2014

Objetos de software

Objetos
El bloque de funciones Timer contiene los objetos siguientes:
Objeto

Descripcin

Valor

%TMi.P

Valor
preestablecido

Consulte la descripcin en la tabla anterior Parmetros.

%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 de Timer

Consulte la descripcin en la tabla anterior Salidas.

EIO0000001477 11/2014

143

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.
Diagrama de tiempos
En este diagrama se muestra el funcionamiento del Timer de tipo TON.

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


(2) El valor actual %TMi.V aumenta de 0 a %TMi.P en incrementos de 1 unidad por cada pulso del parmetro
de la referencia de tiempo TB.
(3) El bit de salida %TMi.Q se establece en 1 cuando el valor actual ha alcanzado el valor preestablecido
%TMi.P.
(4) El bit de salida %TMi.Q permanece en 1 mientras la entrada IN est en 1.
(5) Si se detecta un flanco descendente en la entrada IN, el temporizador (Timer) se detiene aunque el
temporizador (Timer) no haya alcanzado el valor %TMi.P. %TMi.V se establece en 0.

144

EIO0000001477 11/2014

Objetos de software

TOF: temporizador de retardo de desconexin


Introduccin
Utilice el Timer de tipo TOF (Off-Delay Timer) para controlar las acciones de retardo de
desconexin. Este retardo se puede programar mediante el software.
Diagrama de tiempos
En este diagrama se muestra el funcionamiento del Timer de tipo TOF.

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


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

EIO0000001477 11/2014

145

Objetos de software

TP: temporizador de pulso


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.

146

EIO0000001477 11/2014

Objetos de software

Ejemplo de programacin
Introduccin
Los bloques de funciones Timer tienen las siguientes modalidades de funcionamiento:
TON (Timer On-Delay) (vase pgina 144) (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 145) (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 146) (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

BLK %TM0
LD
%M0
IN
OUT_BLK
LD
Q
ST
%Q0.0
END_BLK

LD
ST

[%TM0.V<400]
%Q0.1

LD
ST

[%TM0.V>=400]
%Q0.2

EIO0000001477 11/2014

147

Objetos de software

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


reversibles:
Escaln

Instruccin no reversible

LD
IN

%M0
%TM0

LD
ST

%TM0.Q
%Q0.0

LD
ST

[%TM0.V<400]
%Q0.1

LD
ST

[%TM0.V>=400]
%Q0.2

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

148

EIO0000001477 11/2014

Objetos de software

Seccin 4.3
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

150

Configuracin

152

Funcionamiento del registro LIFO

154

Funcionamiento del registro FIFO

155

Ejemplo de programacin

156

EIO0000001477 11/2014

149

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:

150

Etiqueta

Descripcin

Valor

Restablecer entrada
(o instruccin)

En el estado 1, inicializa el LIFO/FIFO Register.

Entrada (o instruccin) Con cada flanco ascendente almacena el contenido de la palabra


de almacenamiento
asociada %Ri.I en el LIFO/FIFO Register.

Entrada (o instruccin) Con cada flanco ascendente, carga una palabra de datos del
de recuperacin
LIFO/FIFO Register en la palabra asociada %Ri.O.

EIO0000001477 11/2014

Objetos de software

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

Descripcin

Valor

Salida vaca
(%Ri.E)

El bit asociado %Ri.E indica que el LIFO/FIFO Register est vaco.


El valor de %Ri.E puede probarse, por ejemplo, en una tabla de
animacin o con una instruccin.

Salida llena
(%Ri.F)

El bit asociado %Ri.F indica que el LIFO/FIFO Register est lleno.


El valor de %Ri.F puede probarse, por ejemplo, en una tabla de
animacin o con una instruccin.

EIO0000001477 11/2014

151

Objetos de software

Configuracin
Parmetros
Para configurar los parmetros, siga el procedimiento de configuracin de un bloque de funciones
(vase pgina 139) 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 siguientes parmetros:
Parmetro

Descripcin

Valor

Utilizado

Direccin utilizada

Si est seleccionada, esta direccin se est utilizando


actualmente en un programa.

Direccin

Direccin de objetos
LIFO/FIFO Register

Un programa solo puede contener un nmero limitado de


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


informacin, consulte Definicin y uso de los smbolos en la
Gua de funcionamiento de SoMachine Basic.

Tipo

Tipo de LIFO/FIFO
Register

FIFO (cola) o LIFO (pila).

Comentario Comentario

Se puede asociar un comentario con este objeto.

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

152

Objeto

Descripcin

%Ri.I

Palabra de entrada de LIFO/FIFO Register Se puede leer, verificar y escribir.


Puede modificarse en una tabla de
animacin.

Valor

%Ri.O

Palabra de salida de LIFO/FIFO Register

Se puede leer, verificar y escribir.


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.

EIO0000001477 11/2014

Objetos de software

Casos especiales
En esta tabla hay una lista de casos especiales para programar el bloque de funciones
LIFO/FIFO Register:
Caso especial

Descripcin

Efecto de un reinicio en fro (%S0=1) o INIT Inicializa el contenido del LIFO/FIFO Register. El bit de
salida %Ri.E asociado a la salida E se establece en 1.
Efecto de un reinicio en caliente (%S1=1) o
una detencin del controlador

No tiene ningn efecto sobre el valor actual del LIFO/FIFO


Register ni sobre el estado de sus bits de salida.

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

EIO0000001477 11/2014

153

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

154

Descripcin

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.

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.

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

Ejemplo

EIO0000001477 11/2014

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

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.

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.

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 11/2014

Ejemplo

155

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 almacenamiento 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:

156

Escaln

Instruccin reversible

BLK %R2
LD
%M1
I
LD
%I0.3
ANDN %R2.E
O
END_BLK

LD
%I0.3
[%MW20:=%R2.O]

LD
%I0.2
ANDN %R2.F
[%R2.I:=%MW34]
ST
%M1

EIO0000001477 11/2014

Objetos de software

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


instrucciones no reversibles:
Escaln

Instruccin no reversible

LD
I

LD
%I0.3
ANDN %R2.E
O
%R2

LD
%I0.3
[%MW20:=%R2.O]

LD
%I0.2
ANDN %R2.F
[%R2.I:=%MW34]
ST
%M1

%M1
%R2

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

EIO0000001477 11/2014

157

Objetos de software

Seccin 4.4
Registro de bits de desplazamiento (%SBR)

Registro de bits de desplazamiento (%SBR)


Uso de los bloques de funciones del registro de bits de desplazamiento
En esta 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

158

Pgina

Descripcin

159

Configuracin

160

Ejemplo de programacin

162

EIO0000001477 11/2014

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

Restablecer entrada (o instruccin)

Cuando el parmetro de funcin R es 1, los bits de


registro de 0 a 15 %SBRi.j se establecen en 0.

CU

Desplazar hacia la entrada (o instruccin) En un flanco ascendente, desplaza un bit de registro


izquierda
hacia la izquierda.

CD

Desplazar hacia la entrada (o instruccin) En un flanco ascendente, desplaza un bit de registro


derecha
hacia la derecha.

EIO0000001477 11/2014

159

Objetos de software

Configuracin
Parmetros
Para configurar los parmetros, siga el procedimiento de configuracin de un bloque de funciones
(vase pgina 139) 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


Bit Register

Un programa solo puede contener un nmero limitado de


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:

160

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.

EIO0000001477 11/2014

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 11/2014

161

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

BLK %SBR0
LD
%S6
CU
END_BLK

LD
ST

%SBR0.15
%SBR0.0

En instrucciones no reversibles:
Escaln

Instruccin no reversible

LD
CU

LD
ST

%S6
%SBR0
%SBR0.15
%SBR0.0

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

162

EIO0000001477 11/2014

Objetos de software

Seccin 4.5
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

164

Configuracin

165

Ejemplo de programacin

166

EIO0000001477 11/2014

163

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:

164

Etiqueta

Descripcin

Valor

Restablecer entrada (o instruccin) Cuando el parmetro de la funcin R es 1, se restablece el


Step Counter.

CU

Aumentar entrada (o instruccin)

En un flanco ascendente, aumenta un paso el Step


Counter.

CD

Disminuir entrada (o instruccin)

En un flanco ascendente, disminuye un paso el Step


Counter.

EIO0000001477 11/2014

Objetos de software

Configuracin
Parmetros
Para configurar los parmetros, siga el procedimiento de configuracin de un bloque de funciones
(vase pgina 139) 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
Step Counter

Un programa puede contener solamente un nmero limitado


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 11/2014

165

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

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

LD
ST

%SC0.0
%Q0.1

LD
ST

%SC0.1
%Q0.2

LD
ST

%SC0.2
%Q0.3

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


reversibles:

166

Escaln

Instruccin no reversible

LD
OR
R

%SC0.3
%I0.3
%SC0

LD
CU

%I0.2
%SC0

LD
CD

%I0.1
%SC0

LD
ST

%SC0.0
%Q0.1
EIO0000001477 11/2014

Objetos de software

Escaln

Instruccin no reversible

LD
ST

%SC0.1
%Q0.2

LD
ST

%SC0.2
%Q0.3

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 14) para obtener el diagrama
de contactos equivalente.
Diagrama de tiempos
En este diagrama se muestra el funcionamiento del bloque de funciones Step Counter:

(1)
(2)
(3)
(4)
(5)

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


En el flanco ascendente de la entrada CU, el paso se incrementa y se actualizan las salidas.
El paso se incrementa y se actualizan las salidas.
El paso 3 est activo, de modo que la entrada Reset se encuentra activa tras un ciclo de CPU.
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 11/2014

167

Objetos de software

Seccin 4.6
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

168

Pgina

Descripcin

169

Configuracin

171

Ejemplo de programacin

174

EIO0000001477 11/2014

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

Restablecer entrada Establece el contador (%Ci.V) en 0 cuando la entrada de


(o instruccin)
reseteado (R) se ha establecido en 1.

Establecer entrada
(o instruccin)

Establece el contador (%Ci.V) en el valor preestablecido (%Ci.P)


cuando la entrada establecida (S) se ha establecido en 1.

CU

Conteo progresivo

Aumenta el valor del contador (%Ci.V) en 1 en un flanco


ascendente en la entrada Conteo progresivo (CU).

CD

Conteo regresivo

Disminuye el valor del contador (%Ci.V) en 1 en un flanco


ascendente en la entrada Conteo regresivo (CD).

EIO0000001477 11/2014

Valor

169

Objetos de software

Salidas
El bloque de funciones Counter contiene las siguientes salidas:

170

Etiqueta

Descripcin

Valor

Desborde de conteo
regresivo

El bit asociado %Ci.E (contador vaco) se ha establecido en 1 cuando


el contador alcanza el valor 0. En caso de disminucin posterior, el
valor del contador pasa a 9.999.

Salida
predeterminada
alcanzada

El bit asociado %Ci.D (conteo realizado) se ha establecido en 1


cuando %Ci.V = %Ci.P.

Desborde de conteo
progresivo

El bit asociado %Ci.F=1 (contador completo), cuando %Ci.V cambia


de 9999 a 0 (establecido en 1 cuando %Ci.V alcanza 0 y se resetea
a 0 si el Counter contina con el conteo progresivo).

EIO0000001477 11/2014

Objetos de software

Configuracin
Parmetros
Para configurar los parmetros, siga el procedimiento de configuracin de un bloque de funciones
(vase pgina 139) 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

Utilizado

Direccin utilizada

Si est seleccionada, esta direccin se est utilizando


actualmente en un programa.

Direccin

Direccin de objetos
Counter

Un programa puede contener un nmero 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 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


9.999]. El valor predeterminado es 9.999. Este valor
configurado puede leerse, probarse y modificarse
utilizando el objeto asociado %Ci.P.

Comentario

Comentario

Se puede asociar un comentario con este objeto.

Objetos
El bloque de funciones Counter contiene los objetos siguientes:
Objeto

Descripcin

Valor

%Ci.V

Valor actual del


Counter

Esta palabra aumenta o disminuye segn las entradas (o


instrucciones) CU y CD (consulte la tabla de entradas
(vase pgina 169)). Solo se pueden leer.
Puede modificarse en una tabla de animacin.

%Ci.P

Valor preestablecido

Consulte la tabla de parmetros (vase pgina 171).


Puede modificarse en una tabla de animacin.

%Ci.E

Vaco

Consulte la tabla de salidas (vase pgina 170).


Puede modificarse en una tabla de animacin.

%Ci.D

Terminado

Consulte la tabla de salidas (vase pgina 170).


Puede modificarse en una tabla de animacin.

%Ci.F

Completo

Consulte la tabla de salidas (vase pgina 170).


Puede modificarse en una tabla de animacin.

EIO0000001477 11/2014

171

Objetos de software

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

Accin

Resultado

Restablecer

La entrada R se establece en 1 (o se activa la


instruccin R).

El valor actual %Ci.V se fuerza a 0. Las


salidas %Ci.E, %Ci.D y %Ci.F estn en 0.
La entrada restablecida tiene prioridad.

Definir

Si la entrada S se establece en 1 (o si se
activa la instruccin S) y la entrada
restablecida est en el estado 0 (o la
instruccin R est inactiva).

El valor actual %Ci.V toma el valor %Ci.P y


la salida %Ci.D se establece en 1.

Conteo

Aparece un flanco ascendente en la entrada


de conteo progresivo CU (o se activa la
instruccin CU).

El valor actual %Ci.V aumenta en una


unidad.

El valor actual %Ci.V es igual al valor


preestablecido %Ci.P.

El bit de salida "preajuste alcanzado" %Ci.D


cambia a 1.

El valor actual %Ci.V cambia de 9.999 a 0.

El bit de salida %Ci.F (desborde de conteo


progresivo) cambia a 1.

Si el Counter contina con el conteo


progresivo.

El bit de salida %Ci.F (desborde de conteo


progresivo) se restablece a 0.

Aparece un flanco ascendente en la entrada


de conteo regresivo CD (o se activa la
instruccin CD).

El valor actual %Ci.V disminuye en una


unidad.

El valor actual %Ci.V cambia de 0 a 9.999.

El bit de salida %Ci.E (desborde de conteo


regresivo) cambia a 1.

Si el Counter contina con el conteo


regresivo.

El bit de salida %Ci.F (desborde de conteo


regresivo) se restablece a 0.

Conteo
regresivo

172

EIO0000001477 11/2014

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
una detencin del controlador

No tiene ningn efecto sobre el valor actual del Counter


(%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 11/2014

173

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

BLK %C8
LD
%I0.1
R
LD
%I0.2
AND %M0
CU
END_BLK

LD
ST

%C8.D
%Q0.0

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


reversibles:
Escaln

Instruccin no reversible

LD
R

LD %I0.2
AND %M0
CU %C8

LD
ST

%I0.1
%C8

%C8.D
%Q0.0

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 14) 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.

174

EIO0000001477 11/2014

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 11/2014

175

Objetos de software

Seccin 4.7
Contador rpido (%FC)

Contador rpido (%FC)


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

176

EIO0000001477 11/2014

Objetos de software

Seccin 4.8
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 11/2014

177

Objetos de software

Seccin 4.9
Registro Drum (%DR)

Registro Drum (%DR)


Uso de bloques de funciones del registro Drum
En esta seccin se proporcionan descripciones y directrices de programacin para utilizar bloques
de funciones Drum Register.
Contenido de esta seccin
Esta seccin contiene los siguientes apartados:
Apartado

178

Pgina

Descripcin

179

Configuracin

180

Ejemplo de programacin

183

EIO0000001477 11/2014

Objetos de software

Descripcin
Introduccin
El bloque de funciones Drum Register
funciona segn un principio similar a un Drum
Register 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 Register, estos puntos superiores se simbolizan
mediante el estado 1 para cada paso y se asignan a bits de salida %Qi.j o a bits de memoria %Mi.
Ilustracin
En esta ilustracin se muestra el bloque de funciones Drum Register 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 Register contiene las siguientes entradas:
Etiqueta

Descripcin

Valor

Para volver al paso 0


(o instruccin)

En el estado 1, ajusta el Drum Register al paso 0.

Entrada (o instruccin) En un flanco ascendente, hace que el Drum Register avance un paso
de avance
y actualiza los bits de control.

Salidas
El bloque de funciones Drum Register contiene las siguientes salidas:
Etiqueta

Descripcin

Valor

Salida (%DRi.F)

Indica que el paso actual equivale al ltimo paso definido. Se puede


comprobar el bit asociado %DRi.F.

EIO0000001477 11/2014

179

Objetos de software

Configuracin
Parmetros
Para configurar los parmetros, siga el procedimiento de configuracin de un bloque de funciones
(vase pgina 139) y lea la descripcin de las modalidades de asignacin de memoria en la Gua
de funcionamiento de SoMachine Basic.
El bloque de funciones Drum 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 objetos
Drum Register

Un programa puede contener solo un nmero limitado de


objetos Drum Register. Consulte la gua de programacin
de su controlador para averiguar el nmero mximo del Drum
Register.

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.

Configuracin

Asistente Drum

Nmero de pasos: de 1 a 8.
Salidas o bits de memoria asociados a los pasos: del Bit0 al
Bit15.

Comentario

Comentario

Se puede asociar un comentario con este objeto.

Objetos
El bloque de funciones Drum Register contiene el siguiente objeto:
Objeto

Descripcin

Valor

%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.
Puede modificarse en una tabla de animacin.

%DRi.F

Completo

Consulte la tabla de salidas (vase pgina 179).

Funcionamiento
El bloque de funciones Drum Register consta de:
Una matriz de datos constantes (las levas) organizada en 8 pasos (de 0 a 7) y 16 bits (estado
del paso) organizada en columnas numeradas de 0 a 15.
Una lista de bits de control est asociada con una salida configurada (%Qi.j) o palabra de
memoria (%Mi). En el transcurso del paso actual, los bits de control adquieren los estados
binarios definidos para este paso.

180

EIO0000001477 11/2014

Objetos de software

En este ejemplo se resumen las principales caractersticas del Drum Register:

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


Escaln

Instruccin

BLK
%DR0
LD
%M10
R
LD
%M11
U
END_BLK

Cree las siguientes entradas en una tabla de animacin: %M10, %M11, %DR0, %Q0.0 a %Q0.5.
Observe los valores de %DR0.S, %DR0.F, %Q0.0 a %Q0.5 cuando cambie el valor de %M11
(evolucin del Drum), el valor de %M10 (reinicio del Drum). Luego observe en caso de desbordes
(vuelve al paso 0).

EIO0000001477 11/2014

181

Objetos de software

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

182

Caso especial

Descripcin

Efectos de un reinicio en fro


(%S0=1)

Restablece el Drum Register en el paso 0 (actualizacin de los bits de


control).

Efecto de un reinicio en
caliente (%S1=1)

Actualiza los bits de control despus del paso actual.

Efecto de un salto del


programa

El hecho de que el Drum Register ya no se explore significa que los bits


de control conservan su estado ms reciente.

Actualizacin de los bits de


control

Solo ocurre cuando se produce un cambio de paso o un reinicio en fro o en


caliente.

EIO0000001477 11/2014

Objetos de software

Ejemplo de programacin
Introduccin
A continuacin se muestra un ejemplo de programacin de un Drum Register 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 185)).
Las primeras 6 salidas de %Q0.0 a %Q0.5 se activan sucesivamente cada vez que la entrada
%I0.1 se establece en 1. Cuando el valor de la entrada %I0.0 es alto, los siguientes valores se
restablece en 0:
Salida del registro Drum F (%DRi.F = 0)
Nmero del paso actual (%DRi.S = 0)
Programacin
Este ejemplo es un programa del bloque de funciones Drum Register:
Escaln

Instruccin

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 14) para obtener el diagrama
de contactos equivalente.

EIO0000001477 11/2014

183

Objetos de software

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

(1)
(2)
(3)
(4)
(5)
(6)
(7)
184

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


Cuando se actualiza el paso actual, se actualizan las salidas.
Cuando se alcanza el ltimo paso, la salida F se establece en 1.
Cuando el ltimo paso est activo, un flanco ascendente en la entrada U restablece el paso actual a 0.
El valor actual (flanco ascendente) %DR0.R = 1 se establece en 0.
El usuario escribe el valor del nmero de paso: %DR0.S = 4.
El valor escrito por el usuario se actualiza en el siguiente tiempo de ejecucin.
EIO0000001477 11/2014

Objetos de software

Configuracin
Durante la configuracin se define la siguiente informacin:
Nmero de pasos: 6
Estados de salida (bits de control) para cada paso de Drum Register:

10

11

12

13

14

15

Paso 0:

Paso 1:

Paso 2:

Paso 3:

Paso 4:

Paso 5:

Asignacin de los bits de control:

En esta tabla se muestran las salidas asociadas de los bits de control:


Bit

Salida asociada

Salida no asociada

%Q0.1

%Q0.2

%Q0.3

%Q0.4

%Q0.5

EIO0000001477 11/2014

185

Objetos de software

Seccin 4.10
Pulso (%PLS)

Pulso (%PLS)
Pulso
Descripcin general
Consulte la Gua de la biblioteca de funciones avanzadas de su controlador.

186

EIO0000001477 11/2014

Objetos de software

Seccin 4.11
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 11/2014

187

Objetos de software

Seccin 4.12
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

188

Pgina

Descripcin general

189

Descripcin

191

Configuracin

194

Ejemplo de programacin

198

Ejemplos de ASCII

200

Peticiones y ejemplos estndar Modbus

202

EIO0000001477 11/2014

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

EXCH1

%MSG1

EXCH3

%MSG3

1 lnea serie y 1 Ethernet

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 195). 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 11/2014

189

Objetos de software

Protocolo ASCII
El protocolo ASCII proporciona al Logic Controller un protocolo de modalidad de caracteres simple
que permite transmitir o recibir datos mediante un dispositivo simple. Este protocolo se admite
mediante la 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

190

EIO0000001477 11/2014

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:

Entradas
El bloque de funciones Message contiene la siguiente entrada:
Etiqueta

Descripcin

Restablecer entrada Estado 1: reinicializa la comunicacin; %MSGx.E = 0 y %MSGx.D = 1.


Estado 0: modalidad normal.

EIO0000001477 11/2014

Valor

191

Objetos de software

Salidas
El bloque de funciones Message contiene las siguientes salidas:
Etiqueta

Descripcin

Valor

Comunicacin
finalizada
(%MSGx.D)

Estado 1:
Final de la transmisin (si hay transmisin)
Final de la recepcin (carcter final recibido)
Error
Restablecimiento del bloque
Estado 0: peticin en curso

Error de
comunicacin
detectado
(%MSGx.E)

Estado 1:
Comando sin definir
Tabla mal configurada
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.

Cdigos de errores 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:

192

Palabra de
sistema

Funcin

Descripcin

%SW63

Cdigo de error
del bloque
EXCH1

Cdigo de error EXCH1:


0: operacin correcta
1: nmero excesivo de bytes para enviar (> 250)
2: tabla de envo demasiado pequea
3: tabla de palabras demasiado pequea
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

EIO0000001477 11/2014

Objetos de software

Palabra de
sistema

Funcin

Descripcin

%SW64

Cdigo de error
del bloque
EXCH2

Cdigo de error EXCH2: consulte %SW63.

%SW65

Cdigo de error
del bloque
EXCH3

1-4, 6-13: consulte %SW63. (Tenga en cuenta que el cdigo de error 5 no


es vlido y se sustituye por los cdigos de error 109 y 122 especficos de
Ethernet que se describen a continuacin).
A continuacin, se indican los cdigos de error especficos de Ethernet:
101: la direccin IP no existe.
102: se ha perdido la 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 desconocido (el dispositivo remoto no est indexado en la tabla
de configuracin).
121 - irrecuperable (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.

EIO0000001477 11/2014

193

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 la biblioteca de funciones del controlador lgico.
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 estado Se detiene la transmisin de todos los


mensajes que se estn transmitiendo.
1 (o se activa la 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
finalizada

La salida D se establece en el estado 1. El Logic Controller est preparado para


enviar otro mensaje. Uso del bit %MSGx.D
para evitar la prdida de mensajes cuando se
envan varios mensajes.

Error de
comunicacin
detectado

La salida del error de comunicacin se establece en 1:


Debido a un error de programacin de comunicaciones o a un error de transmisin
de 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.

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


194

EIO0000001477 11/2014

Objetos de software

Limitaciones
Tenga en cuenta las siguientes limitaciones:
La disponibilidad (para protocolo ASCII) y el tipo del puerto 2 (consulte %SW7) solo se
comprueban en el encendido o reseteado.
La presencia (para protocolo Modbus) y 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:

Tabla de control

Tabla de
transmisin

Byte ms significativo

Byte menos significativo

Modbus

Modbus

ASCII

ASCII

Comando

Longitud (transmisin/recepcin)

Offset de recepcin Reservado (0)

Offset de
transmisin

Byte 1 transmitido

Byte 2 transmitido

...

Reservado (0)

...
Byte n transmitido

Byte n+1 transmitido


Tabla de recepcin

Byte 1 recibido
...

Byte 2 recibido
...
Byte p recibido

Byte p+1 recibido

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.

EIO0000001477 11/2014

195

Objetos de software

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.
Tablas de transmisin/recepcin para protocolo ASCII
En la modalidad de slo transmisin, las tablas de control y transmisin se rellenan antes de
ejecutar la instruccin de intercambio y pueden ser del tipo %KW o %MW. 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.
En la modalidad de transmisin/recepcin, las tablas de control y de transmisin se completarn
antes de ejecutar la instruccin de Intercambio 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.

196

EIO0000001477 11/2014

Objetos de software

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. 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.
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 11/2014

197

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

LD
%M142
[%MW2:=16#0106]
[%MW3:=0]
[%MW4:=16#0106]
[%MW5:=4]
[%MW6:=7]

Escribe en un esclavo, en la direccin 1: valor


7 en el registro 4.
[%MW2:=16#0106]: Cdigo de comando:
01 hex, longitud de la transmisin: 06 hex
[%MW3:=0]: Sin recepcin ni offset de
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 se va a escribir

LD
%MSG2.D
AND
%M0
[EXCH2%MW2:5]
R
%M0

%MSG2.D: detecta si el puerto est ocupado o


no y gestiona la coordinacin de mltiples
mensajes en consecuencia.

LDR
%I0.0
AND
%MSG2.D
[EXCH2%MW2:5]
S
%M0

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

198

EIO0000001477 11/2014

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

BLK
%MSG1
LD
%M0
R
END_BLK

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

EIO0000001477 11/2014

199

Objetos de software

Ejemplos de ASCII
Escritura en aplicacin
Ejemplo de aplicacin ASCII:
Escaln

Instruccin

Comentario

LD
1
[%MW10:=16#0104]
[%MW11:=16#0000]
[%MW12:=16#4F4B]

[%MW10:=16#0104]: Cdigo de comando: 01 hex, longitud


de la transmisin: 04 hex
[%MW11:=16#0000]: 0000: nulo
[%MW12:=16#4F4B]: correcto

LD
1
AND %MSG2.D
[EXCH2 %MW10:8]

NOTA: La tabla tiene 8 elementos.

LD
ST
END

%MSG2.E
%Q0.0

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 14) para obtener el diagrama
de contactos equivalente.
Use SoMachine Basic para crear un programa con tres escalones:
En primer lugar, inicialice las tablas de control y de 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.

200

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.

EIO0000001477 11/2014

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

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 11/2014

201

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 de control

Tabla de
transmisin

Tabla
ndice

Byte ms significativo

Byte menos significativo

01 (transmisin/recepcin)

06 (longitud de transmisin)(1)

03 (offset de recepcin)

00 (offset de transmisin)

Esclavo en (de 1 a 247)

01 02 (cdigo de peticin)

Direccin del primer bit que se leer en el esclavo

N1 = Nmero de bits que se van a leer

Tabla de recepcin 5
(despus de la
6
respuesta)

Esclavo en (de 1 a 247)

01 02 (cdigo de respuesta)

00 (byte aadido por la


accin offset de recepcin)

N2
= Nmero de bytes de datos que se
van a leer
= [1+(N1-1)/8],
donde el resultado es la parte entera
de la divisin.

Valor del primer bit (valor 00 Valor del segundo bit (si N2>1)
o 01) expandido a un byte
expandido a un byte

Valor del tercer bit (si N1>1)


expandido a un byte

...

...

(N2/2)+6 (si N2 es Valor del bit N (si N >1)


2
1
par)
expandido a un byte
(N2/2+1)+6 (si N2
es impar)

...

(1) Este byte tambin recibe la longitud de la cadena transmitida tras la respuesta..

202

EIO0000001477 11/2014

Objetos de software

Maestro Modbus: lectura de N palabras


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

Tabla de control

Tabla de transmisin

Tabla de recepcin
(despus de la
respuesta)

Tabla
ndice

Byte ms significativo

Byte menos significativo

01 (transmisin/recepcin)

06 (longitud de transmisin)(1)

03 (offset de recepcin)

00 (offset de transmisin)

Esclavo en (de 1 a 247)

03 04 (cdigo de peticin)

Direccin de la primera palabra que se va a leer

N = Nmero de palabras que se van a leer

Esclavo en (de 1 a 247)

03 04 (cdigo de respuesta)

00 (byte aadido por la accin


offset de recepcin)

2*N (nmero de bytes ledos)

Primera palabra leda

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 de control

Tabla
ndice

Byte ms significativo

Byte menos significativo

01 (transmisin/recepcin)

06 (longitud de transmisin)(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 11/2014

203

Objetos de software

Tabla de transmisin

Tabla
ndice

Byte ms significativo

Byte menos significativo

Esclavo en (de 1 a 247) o 0 en


caso de difusin

05 (cdigo de peticin)

Valor que se va a escribir para el MSB de la palabra indexada 4;


0xFF o 0x00(2).

Tabla de recepcin
(despus de la
respuesta)

Valor de bit que se va a escribir en el esclavo (16#0000 = Falso y


16#FF00 = Verdadero)

Esclavo en (de 1 a 247)

Direccin del bit escrito

Valor escrito

05 (cdigo de respuesta)

(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 de control

Tabla de transmisin

Tabla de recepcin
(despus de la
respuesta)

Tabla
ndice

Byte ms significativo

Byte menos significativo

01 (transmisin/recepcin)

06 (longitud de transmisin)(1)

00 (offset de recepcin)

00 (offset de transmisin)

Esclavo en (de 1 a 247) o 0 en


caso de difusin

06 (cdigo de peticin)

Direccin de la palabra que se va a escribir

Valor de la palabra que se va a escribir

Esclavo en (de 1 a 247)

Direccin de la palabra escrita

Valor escrito

06 (cdigo de respuesta)

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

204

EIO0000001477 11/2014

Objetos de software

Maestro Modbus: escritura de N bits


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

Tabla de control

Tabla de
transmisin

Tabla de
recepcin
(despus de la
respuesta)

Tabla
ndice

Byte ms significativo

Byte menos significativo

01
(transmisin/recepcin)

8 + nmero de bytes (transmisin)

00 (offset de recepcin)

07 (offset de transmisin)

Esclavo en (de 1 a 247) o 15 (cdigo de peticin)


0 en caso de difusin

Direccin del primer bit que se va a escribir

N1 = Nmero de bits que se van a escribir

00 (byte no enviado,
efecto de offset)

N2
= Nmero de bytes de datos que se
van a escribir
= [1+(N1-1)/8],
donde el resultado es la parte entera
de la divisin.

Valor del primer byte

Valor del segundo byte

Valor del tercer byte

Valor del cuarto byte

...

...

...

(N2/2)+5 (si N2 es
par)
(N2/2+1)+5 (si N2
es impar)

Valor del byte N2

Esclavo en (de 1 a 247)

Direccin del primer bit escrito

Nmeros de los bits escritos (= N1)

15 (cdigo de respuesta)

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.
Maestro Modbus: escritura de N palabras
En esta tabla se representa la peticin 16:

Tabla de control

EIO0000001477 11/2014

Tabla
ndice

Byte ms significativo

Byte menos significativo

01 (transmisin/recepcin)

8 + (2*N) (longitud de
transmisin)

00 (offset de recepcin)

07 (offset de transmisin)
205

Objetos de software

Tabla de transmisin

Tabla de recepcin
(despus de la
respuesta)

Tabla
ndice

Byte ms significativo

Byte menos significativo

Esclavo en (de 1 a 247) o 0 en


caso de difusin

16 (cdigo de peticin)

Direccin de la primera palabra que se va a escribir

N = Nmero de palabras que se van a escribir

00 (byte no enviado, efecto de


offset)

Primer valor de la palabra que se va a escribir

Segundo valor que se va a escribir

2*N = Nmero de bytes que se


van a escribir

...

...

N+5

Valores N que se van a escribir

N+6

Esclavo en (de 1 a 247)

N+7

Direccin de la primera palabra escrita

N+8

Nmero de palabras escritas (= N)

16 (cdigo de respuesta)

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

LD
1
[%MW800:=16#0106]
[%MW801:=16#0000]
[%MW802:=16#032B]
[%MW803:=16#0E01]
[%MW804:=16#0000]

[%MW800:=16#0106]: encabezado Modbus estndar


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

Peticin Modbus: diagnstico


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

206

Escaln

Instruccin

Comentario

LD
1
[%MW1000:=16#0106]
[%MW1001:=16#0000]
[%MW1002:=16#0308]
[%MW1003:=16#0000]
[%MW1004:=16#1234]

[%MW1000:=16#0106]: encabezado Modbus estndar


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

EIO0000001477 11/2014

Objetos de software

Ejemplo 1: Escritura de la aplicacin Modbus


Programa maestro:
Escaln

Instruccin

Comentario

LD
1
[%MW0:=16#0106]
[%MW1:=16#0300]
[%MW2:=16#0203]
[%MW3:=16#0000]
[%MW4:=16#0004]

[%MW0:=16#0106]: longitud de transmisin = 6


[%MW1:=16#0300]: offset de recepcin = 3, offset de envo = 0
%MW2 a %MW4: transmisin
[%MW2:=16#0203]: esclavo 2, funcin 3 (lectura de varias
palabras)
[%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)

LD
1
AND %MSG2.D
[EXCH2 %MW0:11]

LD
ST
END

%MSG2.E
%Q0.0

Programa del esclavo:


Escaln

Instruccin

Comentario

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

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 14) 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 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.

EIO0000001477 11/2014

207

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 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.
Ejemplo 2: Escritura de la aplicacin Modbus
Programa maestro:

208

Escaln

Instruccin

Comentario

LD
1
[%MW0:=16#010C]
[%MW1:=16#0007]
[%MW2:=16#0210]
[%MW3:=16#0010]
[%MW4:=16#0002]
[%MW5:=16#0004]
[%MW6:=16#6566]
[%MW7:=16#6768]

[%MW0:=16#010C]: longitud de la tabla de transmisin: 0C hex =


12 dec, de %MW2 a %MW7
[%MW1:=16#0007]
[%MW2:=16#0210]: direccin del esclavo 2, escritura de palabras
con el cdigo funcional 10h
[%MW3:=16#0010]: de la direccin 16 en el esclavo
[%MW4:=16#0002]: escritura de 2 palabras
[%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

LD
1
AND %MSG2.D
[EXCH2 %MW0:12]

LD
ST
END

%MSG2.E
%Q0.0

EIO0000001477 11/2014

Objetos de software

Programa del esclavo:


Escaln

Instruccin

Comentario

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

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 14) 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.
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

EIO0000001477 11/2014

209

Objetos de software

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.

210

EIO0000001477 11/2014

Objetos de software

Seccin 4.13
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 11/2014

211

Objetos de software

212

EIO0000001477 11/2014

SoMachine Basic
Objetos de comunicacin
EIO0000001477 11/2014

Captulo 5
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: No utilice la instruccin EXCH (con el bloque de funciones %MSG) simultneamente con los
bloques de funciones de comunicacin.
Contenido de este captulo
Este captulo contiene las siguientes secciones:
Seccin

Apartado

Pgina

5.1

Leer datos desde un dispositivo remoto (%READ_VAR)

214

5.2

Escritura de datos en un dispositivo Modbus (%WRITE_VAR)

222

5.3

Leer y escribir datos en un dispositivo Modbus (%WRITE_READ_VAR)

228

5.4

Comunicacin en una conexin ASCII (%SEND_RECV_MSG)

234

EIO0000001477 11/2014

213

Objetos de comunicacin

Seccin 5.1
Leer datos desde un dispositivo remoto (%READ_VAR)

Leer datos desde un dispositivo remoto (%READ_VAR)


Utilizar bloques de funciones %READ_VAR
En esta 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

214

Pgina

Descripcin

215

Configuracin de la funcin

219

Ejemplo de programacin

221

EIO0000001477 11/2014

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

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 %READ_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 11/2014

215

Objetos de comunicacin

Salidas
El bloque de funciones %READ_VAR 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 216) y cdigos
de error de funcionamiento (vase pgina 217).

Cdigos de error de comunicacin


En esta tabla se describen los cdigos de error escritos en el objeto %READ_VARi.CommError:
Nombre

Cdigo de error Descripcin


detectado

CommunicationOK

00 hex

Intercambio correcto.

TimedOut

01 hex

Parada del intercambio porque se ha agotado el timeout.

Abort

02 hex

Parada del intercambio cuando lo solicite el usuario


(entrada Anular).

BadAddress

03 hex

El formato de direccin es incorrecto.

BadRemoteAddr

04 hex

La direccin remota es incorrecta.

BadMgtTable

05 hex

El formato de la tabla de gestin es incorrecto.

BadParameters

06 hex

Los parmetros especficos son incorrectos.

ProblemSendingRq

07 hex

Emisin incorrecta de la peticin al destinatario.

RecvBufferTooSmall

09 hex

El tamao de bfer de recepcin es demasiado pequeo.

SendBufferTooSmall

0A hex

El tamao de bfer de transmisin es demasiado


pequeo.

SystemResourceMissing 0B hex
BadLength

Falta el recurso del sistema.


La longitud es incorrecta.

ProtocolSpecificError FE hex

Indica un error de protocolo Modbus. Para obtener ms


informacin, consulte los cdigos de error de
funcionamiento. (vase pgina 217)

FF hex

Se rechaza el mensaje. Para obtener ms informacin,


consulte los cdigos de error de funcionamiento.
(vase pgina 217).

Refused

216

0E hex

EIO0000001477 11/2014

Objetos de comunicacin

Cdigos de error de funcionamiento


Este cdigo de retorno es significativo cuando el cdigo de error de comunicacin (objeto
CommError) tiene el valor:
00 hex (correcto)
FF hex (rechazado)
FE hex (cdigo de excepcin Modbus)
En esta tabla se describen los cdigos de error escritos en el objeto %READ_VARi.OperError:
CommError Nombre

Cdigo de error Descripcin


detectado

00 hex
(correcto)

OperationOK

00 hex

Intercambio correcto.

NotProcessed

01 hex

La peticin no se ha procesado.

BadResponse

02 hex

La respuesta recibida es incorrecta.

TargetResourceMissing

01 hex

Falta el recurso del sistema de destino.

BadLength

05 hex

La longitud es incorrecta.

CommChannelErr

06 hex

Se ha detectado un error en el canal de


comunicacin.

BadAddr

07 hex

La direccin es incorrecta.

SystemResourceMissing

0B hex

Falta el recurso del sistema.

TargetCommInactive

0C hex

Hay una funcin de comunicacin de destino


inactiva.

TargetMissing

0D hex

Falta el destino.

ChannelNotConfigured

0F hex

Va no configurada.

FF hex
(rechazado)

EIO0000001477 11/2014

217

Objetos de comunicacin

CommError Nombre

Cdigo de error Descripcin


detectado

FE hex
(cdigo de
excepcin
Modbus)

IllegalFunction

01 hex

El cdigo de funcin recibido en la peticin no es


una accin autorizada para el esclavo. El estado
del esclavo puede ser errneo para procesar una
peticin especfica.

IllegalDataAddress

02 hex

La direccin de datos recibida por el esclavo no es


una direccin autorizada para el esclavo.

IllegalDataValue

03 hex

El valor en el campo de datos de peticin no es un


valor autorizado para el esclavo.

SlaveDeviceFailure

04 hex

El esclavo no logra realizar una accin solicitada


debido a un error irrecuperable.

Acknowledge

05 hex

El esclavo ha confirmado la peticin, pero las


comunicaciones han superado el timeout antes de
que el esclavo haya finalizado.

SlaveDeviceBusy

06 hex

El esclavo est ocupado procesando otro


comando.

MemoryParityError

08 hex

El esclavo detecta un error de paridad en la


memoria al intentar leer la memoria ampliada.

GatewayPathUnavailable

0A hex

La pasarela est sobrecargada o no est


configurada correctamente.

GatewayTargetDeviceFailedToRespond

0B hex

El esclavo no est presente en la red.

218

EIO0000001477 11/2014

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.
El bloque de funciones %READ_VAR tiene las propiedades siguientes:
Propiedad

Valor

Descripcin

Utilizado

Casilla de verificacin activada /


desactivada

Indica si se est utilizando la direccin.

Direccin

%READ_VARi, donde i va desde 0 hasta i es el identificador de instancia. Para conocer la


el nmero de objetos disponibles en este cantidad mxima de instancias, consulte la tabla
Nmero mximo de objetos (vase Modicon
Logic Controller.
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).

Enlace

SL1: Serie 1
SL2: Serie 2
ETH1: Ethernet

Seleccin de puerto

ID

Este parmetro depende de la


configuracin de la conexin:
De 1 a 247 para la direccin de
esclavo de lneas serie
De 1 a 16 para el ndice Ethernet

Identificador del dispositivo


Para obtener ms informacin sobre el ndice
Ethernet, consulte la Adicin de servidores
remotos (vase Modicon M221, Logic Controller,
Gua de programacin).

Timeout

La unidad est en ms, con 100 como


valor predeterminado.
Un valor de 0 significa que no se ha
aplicado timeout.

El timeout establece el tiempo mximo de espera


de recepcin de una respuesta.
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: SL2 y ETH1 los puertos de comunicacin


incorporados slo estn disponibles en algunas
referencias de los controladores.

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

EIO0000001477 11/2014

219

Objetos de comunicacin

Propiedad
ObjType

Valor

Descripcin

El tipo de objetos para leer:

Los tipos de cdigos de funcin de lectura Modbus


son:
Mbs Fct 3: equivale al cdigo de funcin 03 de
Modbus
Mbs Fct 2: equivale al cdigo de funcin 02 de
Modbus
Mbs Fct 1: equivale al cdigo de funcin 01 de
Modbus
Mbs Fct 4: equivale al cdigo de funcin 04 de
Modbus

%MW (Mbs Fct 3): palabras de

memoria (predeterminado)
%I (Mbs Fct 2): bits de entrada
%Q (Mbs Fct 1): bits de salida
%IW (Mbs Fct 4): palabras de

entrada

220

FirstObj

De 0 a 65.535

Cantidad

IndexData

De 0 a 65.535

La primera direccin de la tabla de palabras en la


que se guardan los valores de lectura (%MW).

Comentario

Texto definido por el usuario

Un comentario para asociar a este objeto.

De 0 a 124 para %MW


De 0 a 127 para %I
De 0 a 127 para %Q
De 0 a 124 para %IW

Direccin del primer objeto para leer.


Nmero de objetos que se van a leer

EIO0000001477 11/2014

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

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 14) para obtener el diagrama
de contactos equivalente.

EIO0000001477 11/2014

221

Objetos de comunicacin

Seccin 5.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

222

Pgina

Descripcin

223

Configuracin de la funcin

225

Ejemplo de programacin

227

EIO0000001477 11/2014

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

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 %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 11/2014

223

Objetos de comunicacin

Salidas
El bloque de funciones %WRITE_VAR 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 216)
y cdigos de error de funcionamiento (vase pgina 217).

Cdigos de error de comunicacin


Consulte los cdigos de error de comunicacin (vase pgina 216).
Cdigos de error de funcionamiento
Consulte los cdigos de error de funcionamiento (vase pgina 217).

224

EIO0000001477 11/2014

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.
El bloque de funciones %WRITE_VAR tiene las propiedades siguientes:
Propiedad

Valor

Descripcin

Utilizado

Casilla de verificacin activada / desactivada

Indica si se est utilizando la direccin.

Direccin

%WRITE_VARi, donde i va desde 0 hasta el


nmero de objetos disponibles en este Logic
Controller.

i es el identificador de instancia. Para


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.

Enlace

SL1: Serie 1
SL2: Serie 2
ETH1: Ethernet

Seleccin de puerto

Este parmetro depende de la configuracin de la


conexin:
De 1 a 247 para la direccin de esclavo de
lneas serie
De 1 a 16 para el ndice Ethernet

Identificador del dispositivo


Para obtener ms informacin sobre el
ndice Ethernet, consulte la Adicin de
servidores remotos (vase Modicon
M221, Logic Controller, Gua de
programacin).

ID

EIO0000001477 11/2014

NOTA: SL2 y ETH1 los puertos de


comunicacin incorporados slo estn
disponibles en algunas referencias de
los controladores.

225

Objetos de comunicacin

Propiedad

Valor

Descripcin

Timeout

La unidad est en ms, con 100 como valor


predeterminado.
Un valor de 0 significa que no se ha aplicado
timeout.

El timeout establece el tiempo mximo


de espera de recepcin de una
respuesta.
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)).

226

ObjType

El tipo de objetos para escribir:


%MW (Mbs Fct 16): palabras de memoria
(predeterminado)
%Q (Mbs Fct 15): bits de salida

Los tipos de cdigos de funcin de


escritura Modbus son:
Mbs Fct 16: equivale al cdigo de
funcin 16 de Modbus
Mbs Fct 15: equivale al cdigo de
funcin 15 de Modbus

FirstObj

De 0 a 65.535

Direccin del primer objeto cuyos


valores se utilizan para escribir

Cantidad

De 0 a 124 para %MW


De 0 a 127 para %Q

Nmero de objetos que se van a escribir

IndexData

De 0 a 65.535

La primera direccin de la tabla de


palabras en la que se escriben los
valores (%MW).

Comentario

Texto definido por el usuario

Un comentario para asociar a este


objeto.

EIO0000001477 11/2014

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

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 14) para obtener el diagrama
de contactos equivalente.

EIO0000001477 11/2014

227

Objetos de comunicacin

Seccin 5.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

228

Pgina

Descripcin

229

Configuracin de la funcin

231

Ejemplo de programacin

233

EIO0000001477 11/2014

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

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

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

BOOL

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 11/2014

229

Objetos de comunicacin

Salidas
El bloque de funciones %WRITE_READ_VAR 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 216) y cdigos de error de
funcionamiento (vase pgina 217).

Cdigos de error de comunicacin


Consulte los cdigos de error de comunicacin (vase pgina 216).
Cdigos de error de funcionamiento
Consulte los cdigos de error de funcionamiento (vase pgina 217).

230

EIO0000001477 11/2014

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.
El bloque de funciones %WRITE_READ_VAR tiene las propiedades siguientes:
Propiedad

Valor

Descripcin

Utilizado

Casilla de verificacin activada / desactivada

Indica si se est utilizando la direccin.

Direccin

%WRITE_READ_VARi, donde i va desde 0 hasta i es el identificador de instancia. Para


el nmero de objetos disponibles en este Logic conocer la cantidad mxima de
instancias, consulte la tabla Nmero
Controller.
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).

Enlace

SL1: Serie 1
SL2: Serie 2
ETH1: Ethernet

Seleccin de puerto

Este parmetro depende de la configuracin de


la conexin:
De 1 a 247 para la direccin de esclavo de
lneas serie
De 1 a 16 para el ndice Ethernet

Identificador del dispositivo


Para obtener ms informacin sobre el
ndice Ethernet, consulte la Adicin de
servidores remotos (vase Modicon
M221, Logic Controller, Gua de
programacin).

ID

EIO0000001477 11/2014

NOTA: SL2 y ETH1 los puertos de


comunicacin incorporados slo estn
disponibles en algunas referencias de
los controladores.

231

Objetos de comunicacin

Propiedad

Valor

Descripcin

Timeout

La unidad est en ms, con 100 como valor


predeterminado.
Un valor de 0 significa que no se ha aplicado
timeout.

El timeout establece el tiempo mximo


de espera de recepcin de una
respuesta.
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)).

232

ObjType

%MW (Mbs Fct 23): palabras de memoria

El tipo de cdigo de funcin de


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 cuyos


valores se utilizan para escribir

WriteQuantity

De 0 a 120

Nmero de objetos que se van a


escribir

IndexDataOut

De 0 a 65.535

La primera direccin de la tabla de


palabras en la que se escriben los
valores (%MW).

FirstReadObj

De 0 a 65.535

Direccin del primer objeto para leer

ReadQuantity

De 0 a 124

Nmero de objetos que se van a leer

IndexDataIn

De 0 a 65.535

La primera direccin de la tabla de


palabras en la que se guardan los
valores de lectura (%MW).

Comentario

Texto definido por el usuario

Un comentario para asociar a este


objeto.

EIO0000001477 11/2014

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

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 14) para obtener el diagrama
de contactos equivalente.

EIO0000001477 11/2014

233

Objetos de comunicacin

Seccin 5.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

234

Pgina

Descripcin

235

Configuracin de la funcin

238

Ejemplo de programacin

240

EIO0000001477 11/2014

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

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 11/2014

235

Objetos de comunicacin

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 216) y cdigos de
error de funcionamiento (vase pgina 217).

Cdigos de error de comunicacin


Consulte los cdigos de error de comunicacin (vase pgina 216).
Cdigos de error de funcionamiento
Consulte los cdigos de error de funcionamiento (vase pgina 217).
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.

236

EIO0000001477 11/2014

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 11/2014

237

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.
El bloque de funciones %SEND_RECV_MSG tiene las propiedades siguientes:

238

Propiedad

Valor

Descripcin

Utilizado

Casilla de verificacin activada / desactivada

Indica si se est utilizando la


direccin.

Direccin

%SEND_RECV_MSGi, donde i va desde 0 hasta i es el identificador de instancia.


el nmero de objetos disponibles en este Logic Para conocer la cantidad mxima de
instancias, consulte la tabla Nmero
Controller.
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).

Enlace

SL1: Serie 1
SL2: Serie 2
ETH1: Ethernet

Seleccin de puerto
NOTA: SL2 y ETH1 los puertos de
comunicacin incorporados slo
estn disponibles en algunas
referencias de los controladores.

EIO0000001477 11/2014

Objetos de comunicacin

Propiedad

Valor

Descripcin

Timeout

La unidad est en ms, con 100 como valor


predeterminado.
Un valor de 0 significa que no se ha aplicado
timeout.

El timeout establece el tiempo


mximo de espera de recepcin de
una respuesta.
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)).

QuantityToSend

De 0 a 254
Un valor de 0 significa que el bloque de
funciones slo recibe datos.

Nmero de bytes para enviar

BufferToSend

De 0 a 65.535

Direccin del primer objeto para


enviar

SizeRecvBuffer

De 0 a 254
Un valor de 0 significa que el bloque de
funciones slo enva datos.

Tamao disponible en bytes del bfer


de recepcin.

BufferToRecv

De 0 a 65.535

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.

EIO0000001477 11/2014

239

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

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 14) para obtener el diagrama
de contactos equivalente.

240

EIO0000001477 11/2014

SoMachine Basic
Fechadores (%SCH)
EIO0000001477 11/2014

Captulo 6
Fechadores (%SCH)

Fechadores (%SCH)
Uso de los fechadores
En esta seccin se proporcionan descripciones y directrices de programacin para utilizar bloques
de funciones Schedule blocks.
Contenido de este captulo
Este captulo contiene los siguiente apartados:
Apartado

Pgina

Descripcin

242

Programacin y configuracin

244

EIO0000001477 11/2014

241

Fechadores (%SCH)

Descripcin
Introduccin
Los Schedule blocks se utilizan para controlar las acciones en un mes, da u hora predefinidos.
Los Schedule blocks solo se configuran en SoMachine Basic; no se insertan en un escaln de
programa del mismo modo que otros bloques de funciones.
NOTA: Compruebe el bit de sistema %S51 y la palabra de sistema %SW118 para confirmar que la
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 139) y consulte la descripcin de Modalidades de asignacin de memoria.
Los Schedule blocks tienen los siguientes parmetros:

242

Parmetro

Descripcin

Valor

Utilizado

Direccin utilizada

Si est seleccionada, esta direccin se est


utilizando actualmente en un programa.

Direccin

Direccin de objetos Schedule


blocks

Un programa slo puede contener un nmero


limitado de objetos Schedule blocks.
Consulte la gua de programacin de la
plataforma de hardware para saber cul es el
nmero mximo de Schedule blocks.

Configurado

Si se selecciona la casilla de verificacin, est


Indica si el nmero de Schedule
blocks seleccionado est configurado configurado para ser utilizado. De lo contrario, no
se utiliza.
para ser utilizado.

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


blocks.

1...31

Mes de inicio

Mes para iniciar los Schedule


blocks.

Schedule blocks.

Da de
finalizacin

Da del mes para finalizar los


Schedule blocks.

1...31

Mes de
finalizacin

Mes para finalizar los Schedule


blocks.

Enero...diciembre

EIO0000001477 11/2014

Fechadores (%SCH)

Parmetro

Descripcin

Valor

Hora de inicio

El momento del da, las horas y los


minutos para iniciar los Schedule
blocks.

Hora: 0...23
Minuto: 0...59

Hora de
finalizacin

El momento del da, las horas y los


minutos para finalizar los Schedule
blocks.

Hora: 0...23
Minuto: 0...59

Lunes

Casillas de verificacin que identifican


el da de la semana para activar los
Schedule blocks.

Si se selecciona la casilla de verificacin, est


configurado para ser utilizado. De lo contrario, no
se utiliza.

Comentario

Se puede asociar un comentario con este objeto.

Martes
Mircoles
Jueves
Viernes
Sbado
Domingo
Comentario

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 fechadores (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 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.

EIO0000001477 11/2014

243

Fechadores (%SCH)

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

Direccin

Reloj de tiempo real 6

Schedule blocks nmero 6

Configurado

Casilla seleccionada

Casilla seleccionada para configurar los Schedule blocks


nmero 6.

Bit de salida

%Q0.2

Activa la salida %Q0.2

Da de inicio

21

Inicia la actividad el da 21 de junio

Mes de inicio

Junio

Inicia la actividad en junio

Hora de inicio 21

Inicia la actividad a las 21:00

Da de
finalizacin

21

Detiene la actividad el da 21 de septiembre

Mes de
finalizacin

Septiembre

Detiene la actividad en septiembre

Hora de
finalizacin

22

Detiene la actividad a las 22:00

Lunes

Casilla seleccionada

Realiza la actividad el lunes

Martes

Casilla no seleccionada

Sin actividad

Mircoles

Casilla seleccionada

Realiza la actividad el mircoles

Jueves

Casilla no seleccionada

Sin actividad

Viernes

Casilla seleccionada

Realiza la actividad el viernes

Sbado

Casilla no seleccionada

Sin actividad

Domingo

Casilla no seleccionada

Sin actividad

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

LD
ST

En este ejemplo, se valida %SCH6.

%I0.1
%SW114:X6

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

EIO0000001477 11/2014

Fechadores (%SCH)

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

EIO0000001477 11/2014

245

Fechadores (%SCH)

246

EIO0000001477 11/2014

SoMachine Basic
Funcin PID
EIO0000001477 11/2014

Captulo 7
Funcin PID

Funcin 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

EIO0000001477 11/2014

247

Funcin PID

248

EIO0000001477 11/2014

SoMachine Basic
EIO0000001477 11/2014

Captulo 8
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 siguiente apartados:
Apartado

Pgina

Funciones de reloj

250

Marcas de fecha y hora

251

Ajuste de fecha y hora

253

EIO0000001477 11/2014

249

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 del Programador (vase pgina 241) se utilizan para controlar
acciones a horas predefinidas o calculadas.
Fijacin de fecha y hora (vase pgina 251) 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 251). 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.

250

EIO0000001477 11/2014

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

LDR
%I0.1
[%MW11:5:=%SW49:5]

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 14) 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 11/2014

251

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.

252

EIO0000001477 11/2014

Ajuste de fecha y hora


Introduccin
Puede actualizar los ajustes de fecha y hora a travs de uno de los mtodos siguientes:
SoMachine Basic
El usuario puede seleccionar entre dos modalidades para configurar la hora del controlador
lgico:
Manual: esta modalidad muestra un selector de fecha/hora y le permite seleccionar
manualmente la hora del controlador lgico.
Automtico: con esta modalidad se muestra la hora actual del PC en el que se est
ejecutando SoMachine Basic y que se utiliza para definir la hora del controlador lgico.

(Consulte la Gua de funcionamiento de SoMachine Basic para obtener ms informacin).


Palabras de sistema
Utilice las palabras de sistema de %SW49 a %SW53 o la palabra de sistema %SW59.

NOTA: La fecha y la hora pueden definirse cuando la funcin RTC est disponible en su
controlador lgico (consulte la gua de programacin de su controlador lgico).
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 0. Cuando haya establecido la fecha y la hora, deber establecer el
bit %S51 en 1. Como resultado, se produce lo siguiente:
Se cancela la actualizacin de las palabras de %SW49 a %SW53 mediante el reloj interno.
Se transmiten los valores escritos en las palabras de %SW49 a %SW53 al reloj interno.
En esta tabla se indica la palabra de sistema que contiene los valores de fecha y hora actuales
(en BCD) para las funciones de reloj en tiempo real (RTC):
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 11/2014

253

Ejemplo de programacin:
Escaln

Instruccin

Comentario

LD %S50
R %S50

LD %I0.1
[%SW49:=%MW10]
[%SW50:=%MW11]
[%SW51:=%MW12]
[%SW52:=%MW13]
[%SW53:=%MW14]
S %S50

Consulte las Instrucciones de conversin de


BCD/binario (vase pgina 74).

NOTA: Consulte el procedimiento de reversibilidad (vase pgina 14) para obtener el diagrama
de contactos equivalente.
Las palabras de %MW10 a %MW14 contienen la nueva fecha y hora (consulte Revisin del cdigo
BCD (vase pgina 74)) y corresponden a la codificacin de las palabras de %SW49 a %SW53.
La tabla de palabras debe contener la nueva fecha y hora:
Codificacin

Byte ms significativo

Byte menos significativo

%MW10

Da de la semana (1)

%MW11

Segundo

%MW12

Hora

Minuto

%MW13

Mes

Da

%MW14

Siglo

Ao

(1) 1 = Lunes, 2 = Martes, 3 = Mircoles, 4 = Jueves, 5 = Viernes, 6 = Sbado, 7 = Domingo

Datos de ejemplo para el lunes 03 de junio de 2013:

254

Palabra

Valor (hexadecimal)

Significado

%MW10

0001

lunes

%MW11

0030

30 segundos

%MW12

1340

13 horas, 40 minutos

%MW13

0603

06 = junio, el da 03

%MW14

2013

2013

EIO0000001477 11/2014

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

EIO0000001477 11/2014

255

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.
Este programa lee las entradas del panel y ajusta el reloj interno:
Escaln

Instruccin

Comentario

LD %M0
ST %S59

LD %I0.2
ANDR %I0.0
ST %SW59:X3

Hora

LD %I0.2
ANDR %I0.1
ST %SW59:X11

LD %I0.3
ANDR %I0.0
ST %SW59:X2

Minuto

LD %I0.3
ANDR %I0.1
ST %SW59:X10

LD %I0.4
ANDR %I0.0
ST %SW59:X1

Segundo

LD %I0.4
ANDR %I0.1
ST %SW59:X9

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

256

EIO0000001477 11/2014

SoMachine Basic
Glosario
EIO0000001477 11/2014

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.
%KW
Segn el estndar IEC, %KW representa una palabra constante.
%MW
Segn el estndar IEC, %MW representa un registro de palabra de memoria (por ejemplo un
objeto de lenguaje del tipo palabra de memoria).
%Q
Segn el estndar IEC, %Q representa un bit de salida (por ejemplo, un objeto de lenguaje de tipo
OUT digital).

A
ASCII
(Cdigo estndar americano 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 la otra.
Ejemplos: temporizadores, contadores

E
entrada analgica
Convierte los niveles de tensin o corriente recibidos en valores numricos. Puede almacenar y
procesar estos valores en el controlador lgico.

EIO0000001477 11/2014

257

Glosario

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

S
salida analgica
Convierte los valores numricos del controlador lgico y enva niveles de tensin o corriente
proporcionales.

258

EIO0000001477 11/2014

SoMachine Basic
ndice
EIO0000001477 11/2014

ndice
Symbols

%C, 169
%DR, 179
%I, 23
%IW, 23
%IWS, 23
%KD, 30
%KF, 30
%KW, 26
%M, 21
%MD, 30
%MF, 30
%MSG, 191
%MW, 26
%Q, 23
%QW, 23
%QWS, 23
%R, 150
%READ_VAR, 215
configuracin, 219
descripcin, 215
ejemplo de programacin, 221
%S, 21
%SBR, 159
%SC, 164
%SCH, 242
%SEND_RECV_MSG, 235
configuracin, 238
descripcin, 235
ejemplo de programacin, 240
%SW, 26
%TM, 141
%WRITE_READ_VAR, 229
configuracin, 231
descripcin, 229
ejemplo de programacin, 233
%WRITE_VAR, 223
configuracin, 225
descripcin, 223
ejemplo de programacin, 227
%X, 21

ABS, 85
ACOS, 88
AND, 50
ANDF, 50
ANDN, 50
ANDR, 50
ASCII
ejemplos, 200
ASIN, 88
ATAN, 88
aumentar, 66

EIO0000001477 11/2014

B
bloques de comparacin
insertar expresiones IL en, 18
bloques de funciones
%READ_VAR, 215
%SEND_RECV_MSG, 235
%WRITE_READ_VAR, 229
%WRITE_VAR, 223
counter, 169
descripcin general, 39
drum register, 179
LIFO/FIFO register, 150
message, 191
principios de programacin, 135
shift bit register, 159
step counter, 164
timer, 141
bloques de operacin
insertar instrucciones de asignacin en,
17

C
cadenas de bits, 34
clculo, 66
COS, 88
259

ndice

counter
configuracin, 171
descripcin, 169
ejemplo de programacin, 174

funciones de reloj
ajuste de fecha y hora, 253
descripcin general, 250
marcas de fecha y hora, 251

DEG_TO_RAD, 90
desborde
ndice, 38
desborde de ndice, 38
DINT_TO_REAL, 91
direccionamiento
objetos de E/S, 23
direccionamiento:
formato, 23
direcciones de E/S incrustadas, 23
disminuir, 66
dividir, 66
drum register
configuracin, 180
descripcin, 179
ejemplo de programacin, 183

instruccin NOP, 79
instrucciones
aritmticas, 66
comparacin, 57
conversin de ngulos, 90
conversin de ASCII a entero, 96
conversin de ASCII a flotante, 100
conversin de entero a ASCII, 98
conversin de entero/coma flotante, 91
conversin de flotante a ASCII, 102
END, 78
intercambio, 189
NOP, 79
pila, 104
ROUND, 94
salto, 80
subrutina, 82
tablas de objetos, 109
trigonomtricas, 88
instrucciones aritmticas, 66
instrucciones booleanas, 43
instrucciones de asignacin
cadenas de bits, 62
insertar en escalones del diagrama de
contactos, 17
numrico, 61
palabras, 64
tablas de objetos, 107
instrucciones de comparacin, 57
instrucciones de conversin
BCD/binario, 74
palabras simples y dobles, 76
instrucciones de desplazamiento, 72
instrucciones de intercambio
EXCH1, 189
EXCH2, 189
EXCH3, 189

E
EQUAL_ARR, 111
EXCH, 189
EXP, 85
expresin de comparacin
insertar en los escalones del diagrama de
contactos, 18
EXPT, 85

F
fechadores
programacin y configuracin, 244
FIND_, 113
flanco ascendente
deteccin, 44
flanco descendente
deteccin, 45
formato de direccin de entrada/salida, 23

260

EIO0000001477 11/2014

ndice

instrucciones de pila
MPP, 104
MPS, 104
MRD, 104
instrucciones END, 78
instrucciones lgicas, 70
instrucciones numricas
desplazamiento, 72
INT_TO_REAL, 91

L
LD, 46
LDF, 45, 46
LDN, 46
LDR, 44, 46
LIFO/FIFO register
configuracin, 152
descripcin, 150
ejemplo de programacin, 156
FIFO, 155
LIFO, 154
LKUP, 122
LN, 85
LOG, 85

M
MAX_ARR, 115
MEDIA, 127
message
configuracin, 194
descripcin, 191
ejemplo de programacin, 198
MIN_ARR, 115
modbus
peticiones y ejemplos estndar, 202
multiplicar, 66

N
N, 56

EIO0000001477 11/2014

O
objetos
definicin de, 20
direccin directa, 37
direccin indexada, 37
estructurados, 34
indexados, 37
tablas, 34
objetos de bit
bloque de funciones, 39
objetos de bit de memoria
descripcin, 21
objetos de coma flotante
descripcin, 30
objetos de palabra
bloque de funciones, 40
descripcin, 26
objetos de palabra doble
bloque de funciones, 40
descripcin, 30
OCCUR_ARR, 117
operaciones
insertar en escalones del diagrama de
contactos, 17
operador NOT, 56
operadores
AND, 50
asignacin, 48
carga, 46
NOT, 56
OR, 52
XOR, 54
operadores AND, 50
operadores de asignacin, 48
operadores de carga, 46
operadores OR, 52
operadores OR exclusivos, 54
OR, 52
ORF, 52
ORN, 52
ORR, 52

261

ndice

P
PID, 247
procesamiento numrico
asignacin, 61
descripcin general, 60

R
R, 48
RAD_TO_DEG, 90
raz cuadrada, 66
READ_IMM_IN, 129
REAL_TO_DINT, 91
REAL_TO_INT, 91
restar, 66
resto, 66
ROL_ARR, 118
ROR_ARR, 118

S
S, 48
schedule blocks
descripcin, 242
shift bit register
configuracin, 160
descripcin, 159
ejemplo de programacin, 162
SIN, 88
SORT_ARR, 120
SQRT, 85
ST, 48
step counter
configuracin, 165
descripcin, 164
ejemplo de programacin, 166
STN, 48
SUM_ARR, 109
sumar, 66

timer
configuracin, 142
descripcin, 141
ejemplo de programacin, 147
tipo TOF, 145
tipo TON, 144
tipo TP, 146
TRUNC, 85

V
valor absoluto, 66

W
WRITE_IMM_OUT, 131

X
XOR, 54
XORF, 54
XORN, 54
XORR, 54

T
TAN, 88

262

EIO0000001477 11/2014

S-ar putea să vă placă și