Documente Academic
Documente Profesional
Documente Cultură
EIO0000001477 11/2014
SoMachine Basic
Gua de la biblioteca de funciones
genricas
EIO0000001477.03
11/2014
www.schneider-electric.com
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 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)
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
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
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
Accin
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
EIO0000001354 (ING)
EIO0000001355 (FRA)
EIO0000001356 (ALE)
EIO0000001357 (ESP)
EIO0000001358 (ITA)
EIO0000001359 (CHI)
EIO0000001366 (POR)
EIO0000001367 (TUR)
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
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.
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.
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
14
Bloques de operacin
17
Bloques de comparacin
18
EIO0000001477 11/2014
13
Introduccin
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
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:
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.
Escriba una operacin de lista de instrucciones vlida o una instruccin de asignacin y pulse
INTRO.
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:
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.
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
21
Objetos de E/S
23
Objetos de palabra
26
30
Objetos estructurados
34
Objetos indexados
37
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
Elemento Descripcin
Smbolo
Tipo de objeto
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
%Mi
Sistema
%Si
Depende de i
Pasos Grafcet
%Xi
Ejemplo
En esta pgina se muestran algunos ejemplos de direccionamiento de objetos de bit:
22
Objeto de bit
Descripcin
%M25
%S20
%X4
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:
Elemento
Valor
Descripcin
Smbolo
Tipo de objeto
IW
QW
IWS
QWS
1...m(1)
m+1...n(2)
Nmero de
mdulo
23
Objetos de lenguaje
Componente
Elemento
Valor
Descripcin
Nmero de
canal
De 0 a 31
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.
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
EIO0000001477 11/2014
Objetos de lenguaje
Objeto de E/S
Descripcin
%QW2.1
%IWS0.1
%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)
26
Grupo
Elemento Descripcin
Smbolo
Tipo de objeto
Formato
Palabra de 16 bits.
Identificador de
instancia de objeto
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
De 0 a 65.535
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
No
Base 10 (decimal)
De -32.768 a 32.767
Base 16 (hexadecimal)
De 16#0000 a
16#FFFF
Memoria
%MWi
Constantes
%KWi
No
%SWi
Depende de i
%TM2.P, %Ci.P,
etc.
Sistema
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
%KW26
%SW30
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
EIO0000001477 11/2014
29
Objetos de lenguaje
Bits {30...23}
Bits {22...0}
Exponente
Significando
30
Tipo
Sintaxis
#INF (infinito)
Raz cuadrada de un
operando
SQRT(x)
x<0
x > 1,7E38
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
%SW17:X1
Reservado
%SW17:X2
%SW17:X3
%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:
Elemento Descripcin
Smbolo
Tipo de objeto
Formato
Identificador de
instancia de objeto
EIO0000001477 11/2014
31
Objetos de lenguaje
Descripcin
Direccin
Acceso de
escritura
Valores inmediatos
No
Coma flotante de
memoria
%MFi
%MDi
%KFi
S (no segn el
programa)
%KDi
S (no segn el
programa)
Palabra doble de
memoria
Valor de constante
flotante
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
%KF26
%MD15
%KD26
EIO0000001477 11/2014
Objetos de lenguaje
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
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
%I0.0:L o %I1.0:L
No
Bits de sistema
%Si:L
con i mltiplo de 8
En funcin de i
%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
35
Objetos de lenguaje
Direccin
Acceso de escritura
Palabras de memoria
%MDi:L
Palabras constantes
%KDi:L
No
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
%MDi[MWj]
%KDi[%MWj]
No
%MFi[MWj]
%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
38
EIO0000001477 11/2014
Objetos de lenguaje
Objetos de bit
Los objetos de bit corresponden a las salidas del bloque de funciones. A estos bits se puede
acceder mediante las instrucciones de verificacin booleanas a travs de uno de los mtodos
siguientes:
Directamente (por ejemplo, LD E) si estn cableados al bloque en programacin
(vase pgina 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
106
3.8
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
46
48
50
52
54
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
%I0.0
Elementos de
accin
La instruccin de
almacenamiento (ST) equivale
a una bobina.
%Q0.0
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
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
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
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
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
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
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
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
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
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
>
>=
<
<=
<>
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
Op1
Op2
Palabras
Palabras dobles
%MDi, %KDi
Palabras de coma
flotante
%MFi, %KFi
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
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
60
Instrucciones de asignacin
61
62
Asignacin de palabras
64
66
Instrucciones lgicas
70
Instrucciones de desplazamiento
72
74
76
EIO0000001477 11/2014
59
Instrucciones
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
EIO0000001477 11/2014
61
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 asignaciones de cadenas de bits:
Operador
Sintaxis
:=
[Op1 := Op2]
Op1 toma el valor de Op2
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
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
%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
Funcin
REM
SQRT
INC
Aumentar un operando
DEC
Disminuir un operando
ABS
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
INC, DEC
[operador Op1]
SQRT (1)
[Op1: = SQRT(Op2)]
ABS (1)
[Op1: = ABS(Op2)]
EIO0000001477 11/2014
Instrucciones
Op1
Op2 y Op3(1)
Palabras
%MDi, %BLK.x
Palabras dobles
%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
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
OR
XOR
NOT
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
NOT
[Op1:=NOT(Op2)]
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.
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
ROL, ROR
n Valor inmediato entero para:
palabra: 1-16, ambos incluidos
palabra doble: 1-32, ambos incluidos
Op1
Op2
Palabras
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
Funcin
BTI
ITB
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.
74
Operador
Sintaxis
BTI, ITB
EIO0000001477 11/2014
Instrucciones
Op1
Op2
Palabras
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
Funcin
LW
HW
CONCATW
DWORD
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
%MWi
%MDi, %KDi,
%BLK.x
[-]
CONCATW
%MDi, %KDi,
%BLK.x
%MWi, %KWi,
valor inmediato
%MWi, %KWi,
valor inmediato
DWORD
%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
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
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
85
Instrucciones trigonomtricas
88
90
91
EIO0000001477 11/2014
Instrucciones
Objetivo
LOG
Logaritmo de Base 10
LN
Logaritmo natural
SQRT
ABS
TRUNC
EXP
Exponencial natural
EXPT
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:=operador (Op2)
EXPT
Op1:=operador (Op2,Op3)
EIO0000001477 11/2014
85
Instrucciones
Op1
Op2
Op3
+, - *, /
%MFi
%MFi
%MFi, %KFi
[-]
TRUNC
%MFi, %MD
i
%MFi, %KFi
[-]
EXPT
%MFi
%MFi, %KFi
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.
Resultado
TRUNC(3.5)
TRUNC(324.18765)
324
TRUNC(927.8904)
927
TRUNC(-7.7)
-7
TRUNC(45.678E+20)
TRUNC(-94.56E+13)
(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
ASIN
arco seno (resultado entre
COS
TAN
)
)
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
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
EIO0000001477 11/2014
provoca una
89
Instrucciones
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 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
DINT_TO_REAL
REAL_TO_INT
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)
Op2
%MFi
%MWi,%KWi
Sintaxis
DINT_TO_REAL
Op1=DINT_TO_REAL(Op2)
Op2
%MFi
%MDi,%KDi
EIO0000001477 11/2014
91
Instrucciones
Sintaxis
REAL_TO_INT
Op1=operador(Op2)
REAL_TO_DINT
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
96
98
100
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
Op2
Op3
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
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
Descripcin
Op1
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,
Resultado
%MW20 := ASCII_TO_INT(%MW10)
%MW20 = 29318
%MW20 := ASCII_TO_INT(%MW12)
%MW20 = 8
%MW20 := ASCII_TO_INT(%MW13)
EIO0000001477 11/2014
97
Instrucciones
Descripcin
Op1
Op2
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
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
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
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
MRD
MPP
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
106
Pgina
107
109
111
113
115
117
118
120
122
127
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 asignaciones de tablas de palabras, palabras dobles y coma flotante:
Operador
Sintaxis
:=
[Op1 := Op2]
Op1 toma el valor de Op2
Op1
Op2
Tabla de palabras
%MWi:L, %SWi:L
Tablas de palabras
dobles
%MDi:L
Tablas de palabras
flotantes
%MFi:L
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
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)
%MDi
%MDi:L,%KDi:L
%MFi
%MFi:L,%KFi:L
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
Resultado (Res)
%MWi
%MDi:L,%KDi:L
%MWi
%MFi:L,%KFi:L
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
112
EIO0000001477 11/2014
Instrucciones
Sintaxis
FIND_EQR
Res:=Funcin(Tab,Val)
FIND_GTR
FIND_LTR
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
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
%MD36=40
EIO0000001477 11/2014
Instrucciones
Sintaxis
MAX_ARR
Result:=Function(Tab)
MIN_ARR
Resultado (Res)
Tabla (Tab)
%MDi
%MDn:L,%KDn:L
%MFi
%MFn:L,%KFn:L
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
Sintaxis
OCCUR_ARR
Res:=Funcin(Tab,Val)
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
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
ROR_ARR: realiza el desplazamiento circular de n posiciones desde abajo hacia arriba de los
elementos de la tabla de palabras flotantes.
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
Tabla (Tab)
%MFi:L
%MDi:L
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
Sintaxis
SORT_ARR
Funcin(direccin,Tab)
Direccin de la clasificacin
Tabla (Tab)
%MDi:L
%MFi:L
120
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
, donde
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
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
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
126
EIO0000001477 11/2014
Instrucciones
Sintaxis
MEAN
Resultado=Funcin(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
128
Pgina
129
131
EIO0000001477 11/2014
Instrucciones
Tipo
Descripcin
Op1
%MWi
Op2
Descripcin
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
Tipo
Descripcin
Op1
%MWi
Op2
Descripcin
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
134
4.2
Temporizador (%TM)
140
4.3
149
4.4
158
4.5
163
4.6
Contador (%C)
168
4.7
176
4.8
177
4.9
178
4.10
Pulso (%PLS)
186
4.11
187
4.12
188
4.13
211
EIO0000001477 11/2014
133
Objetos de software
Seccin 4.1
Uso de bloques de funciones
134
Pgina
135
137
139
EIO0000001477 11/2014
Objetos de software
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:
EIO0000001477 11/2014
135
Objetos de software
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
Accin
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).
Descripcin
Timer
LIFO/FIFO Register
Step Counter
Counter
Fast Counter
EIO0000001477 11/2014
137
Objetos de software
Objeto de bloque de
funciones
Descripcin
Drum Register
Pulse
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
Accin
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.
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
144
145
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)
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
Direccin
Smbolo
Smbolo
Tipo
Tipo de Timer
conexin (predeterminado)
TOF (vase pgina 145): temporizador de retardo de
desconexin
TP (vase pgina 146): temporizador de pulso
(monoestable)
142
Base
Base de tiempo
Preajuste
Valor preestablecido
Comentario
Comentario
EIO0000001477 11/2014
Objetos de software
Objetos
El bloque de funciones Timer contiene los objetos siguientes:
Objeto
Descripcin
Valor
%TMi.P
Valor
preestablecido
%TMi.V
Valor actual
%TMi.Q
Salida de Timer
EIO0000001477 11/2014
143
Objetos de software
144
EIO0000001477 11/2014
Objetos de software
EIO0000001477 11/2014
145
Objetos de software
(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.
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
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)
Pgina
Descripcin
150
Configuracin
152
154
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)
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)
Salida llena
(%Ri.F)
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
Direccin
Direccin de objetos
LIFO/FIFO Register
Smbolo
Smbolo
Tipo
Tipo de LIFO/FIFO
Register
Comentario Comentario
Objetos
El bloque de funciones LIFO/FIFO Register contiene los siguientes objetos:
152
Objeto
Descripcin
%Ri.I
Valor
%Ri.O
%Ri.E
Salida vaca
%Ri.F
Salida llena
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
EIO0000001477 11/2014
153
Objetos de software
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
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
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)
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
CU
CD
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
Direccin
Smbolo
Smbolo
Comentario
Comentario
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
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
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)
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
CU
CD
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
Direccin
Direccin de objetos
Step Counter
Smbolo
Smbolo
Comentario
Comentario
Objetos
El bloque de funciones Step Counter contiene el siguiente objeto:
Objeto
Descripcin
Valor
%SCi.j
Caso especial
Esta tabla contiene una lista de casos especiales de funcionamiento del bloque de funciones Step
Counter:
Caso especial
Descripcin
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
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)
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
Establecer entrada
(o instruccin)
CU
Conteo progresivo
CD
Conteo regresivo
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
Salida
predeterminada
alcanzada
Desborde de 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
Direccin
Direccin de objetos
Counter
Smbolo
Smbolo
Preajuste
Valor preestablecido
Comentario
Comentario
Objetos
El bloque de funciones Counter contiene los objetos siguientes:
Objeto
Descripcin
Valor
%Ci.V
%Ci.P
Valor preestablecido
%Ci.E
Vaco
%Ci.D
Terminado
%Ci.F
Completo
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
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).
Conteo
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
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
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
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
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)
176
EIO0000001477 11/2014
Objetos de software
Seccin 4.8
Contador de alta velocidad (%HSC)
EIO0000001477 11/2014
177
Objetos de software
Seccin 4.9
Registro Drum (%DR)
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.
Entradas
El bloque de funciones Drum Register contiene las siguientes entradas:
Etiqueta
Descripcin
Valor
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)
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
Direccin
Direccin de objetos
Drum Register
Smbolo
Smbolo
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
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
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
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
Efecto de un reinicio en
caliente (%S1=1)
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
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:
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)
EIO0000001477 11/2014
187
Objetos de software
Seccin 4.12
Mensaje (%MSG) e intercambio (EXCH)
188
Pgina
Descripcin general
189
Descripcin
191
Configuracin
194
Ejemplo de programacin
198
Ejemplos de ASCII
200
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.
Instruccin de intercambio
2 lneas serie
EXCH1
%MSG1
EXCH2
%MSG2
EXCH1
%MSG1
EXCH3
%MSG3
Instruccin de intercambio
La instruccin de Intercambio permite a un controlador lgico enviar o recibir informacin dirigida
a dispositivos ASCII o Modbus o procedente de ellos. El usuario define una tabla de palabras
(%MWi:L) que contiene la informacin de control y los datos que se enviarn o recibirn. Consulte
Configuracin de la tabla de transmisin (vase pgina 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.
Entradas
El bloque de funciones Message contiene la siguiente entrada:
Etiqueta
Descripcin
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.
192
Palabra de
sistema
Funcin
Descripcin
%SW63
Cdigo de error
del bloque
EXCH1
EIO0000001477 11/2014
Objetos de software
Palabra de
sistema
Funcin
Descripcin
%SW64
Cdigo de error
del bloque
EXCH2
%SW65
Cdigo de error
del bloque
EXCH3
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
Comunicacin
finalizada
Error de
comunicacin
detectado
Casos especiales
Esta tabla contiene una lista de casos especiales para el funcionamiento de Message:
Caso especial
Descripcin
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
Tabla de control
Tabla de
transmisin
Byte ms significativo
Modbus
Modbus
ASCII
ASCII
Comando
Longitud (transmisin/recepcin)
Offset de
transmisin
Byte 1 transmitido
Byte 2 transmitido
...
Reservado (0)
...
Byte n transmitido
Byte 1 recibido
...
Byte 2 recibido
...
Byte p 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
196
EIO0000001477 11/2014
Objetos de software
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]
LD
%MSG2.D
AND
%M0
[EXCH2%MW2:5]
R
%M0
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
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]
LD
1
AND %MSG2.D
[EXCH2 %MW10:8]
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
EIO0000001477 11/2014
Objetos de software
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
Tabla de control
Tabla de
transmisin
Tabla
ndice
Byte ms significativo
01 (transmisin/recepcin)
06 (longitud de transmisin)(1)
03 (offset de recepcin)
00 (offset de transmisin)
01 02 (cdigo de peticin)
Tabla de recepcin 5
(despus de la
6
respuesta)
01 02 (cdigo de respuesta)
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
...
...
...
(1) Este byte tambin recibe la longitud de la cadena transmitida tras la respuesta..
202
EIO0000001477 11/2014
Objetos de software
Tabla de control
Tabla de transmisin
Tabla de recepcin
(despus de la
respuesta)
Tabla
ndice
Byte ms significativo
01 (transmisin/recepcin)
06 (longitud de transmisin)(1)
03 (offset de recepcin)
00 (offset de transmisin)
03 04 (cdigo de peticin)
03 04 (cdigo de respuesta)
...
...
N+6
(1) Este byte tambin recibe la longitud de la cadena transmitida tras la respuesta..
Tabla de control
Tabla
ndice
Byte ms 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
05 (cdigo de peticin)
Tabla de recepcin
(despus de la
respuesta)
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
01 (transmisin/recepcin)
06 (longitud de transmisin)(1)
00 (offset de recepcin)
00 (offset de transmisin)
06 (cdigo de peticin)
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
Tabla de control
Tabla de
transmisin
Tabla de
recepcin
(despus de la
respuesta)
Tabla
ndice
Byte ms significativo
01
(transmisin/recepcin)
00 (offset de recepcin)
07 (offset de transmisin)
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.
...
...
...
(N2/2)+5 (si N2 es
par)
(N2/2+1)+5 (si N2
es impar)
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
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
16 (cdigo de peticin)
...
...
N+5
N+6
N+7
N+8
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]
206
Escaln
Instruccin
Comentario
LD
1
[%MW1000:=16#0106]
[%MW1001:=16#0000]
[%MW1002:=16#0308]
[%MW1003:=16#0000]
[%MW1004:=16#1234]
EIO0000001477 11/2014
Objetos de software
Instruccin
Comentario
LD
1
[%MW0:=16#0106]
[%MW1:=16#0300]
[%MW2:=16#0203]
[%MW3:=16#0000]
[%MW4:=16#0004]
LD
1
AND %MSG2.D
[EXCH2 %MW0:11]
LD
ST
END
%MSG2.E
%Q0.0
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
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]
LD
1
AND %MSG2.D
[EXCH2 %MW0:12]
LD
ST
END
%MSG2.E
%Q0.0
EIO0000001477 11/2014
Objetos de software
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
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)
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
214
5.2
222
5.3
228
5.4
234
EIO0000001477 11/2014
213
Objetos de comunicacin
Seccin 5.1
Leer datos desde un dispositivo remoto (%READ_VAR)
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
Anular
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
215
Objetos de comunicacin
Salidas
El bloque de funciones %READ_VAR contiene las siguientes salidas:
Etiqueta
Tipo
Valor
Terminado
BOOL
Ocupado
BOOL
Cancelado
BOOL
Error
BOOL
CommunicationOK
00 hex
Intercambio correcto.
TimedOut
01 hex
Abort
02 hex
BadAddress
03 hex
BadRemoteAddr
04 hex
BadMgtTable
05 hex
BadParameters
06 hex
ProblemSendingRq
07 hex
RecvBufferTooSmall
09 hex
SendBufferTooSmall
0A hex
SystemResourceMissing 0B hex
BadLength
ProtocolSpecificError FE hex
FF hex
Refused
216
0E hex
EIO0000001477 11/2014
Objetos de comunicacin
00 hex
(correcto)
OperationOK
00 hex
Intercambio correcto.
NotProcessed
01 hex
La peticin no se ha procesado.
BadResponse
02 hex
TargetResourceMissing
01 hex
BadLength
05 hex
La longitud es incorrecta.
CommChannelErr
06 hex
BadAddr
07 hex
La direccin es incorrecta.
SystemResourceMissing
0B hex
TargetCommInactive
0C hex
TargetMissing
0D hex
Falta el destino.
ChannelNotConfigured
0F hex
Va no configurada.
FF hex
(rechazado)
EIO0000001477 11/2014
217
Objetos de comunicacin
CommError Nombre
FE hex
(cdigo de
excepcin
Modbus)
IllegalFunction
01 hex
IllegalDataAddress
02 hex
IllegalDataValue
03 hex
SlaveDeviceFailure
04 hex
Acknowledge
05 hex
SlaveDeviceBusy
06 hex
MemoryParityError
08 hex
GatewayPathUnavailable
0A hex
GatewayTargetDeviceFailedToRespond
0B hex
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
Direccin
Smbolo
Enlace
SL1: Serie 1
SL2: Serie 2
ETH1: Ethernet
Seleccin de puerto
ID
Timeout
EIO0000001477 11/2014
219
Objetos de comunicacin
Propiedad
ObjType
Valor
Descripcin
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
Comentario
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)
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
Anular
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
223
Objetos de comunicacin
Salidas
El bloque de funciones %WRITE_VAR contiene las siguientes salidas:
Etiqueta
Tipo
Valor
Terminado
BOOL
Ocupado
BOOL
Cancelado
BOOL
Error
BOOL
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
Direccin
Smbolo
Enlace
SL1: Serie 1
SL2: Serie 2
ETH1: Ethernet
Seleccin de puerto
ID
EIO0000001477 11/2014
225
Objetos de comunicacin
Propiedad
Valor
Descripcin
Timeout
226
ObjType
FirstObj
De 0 a 65.535
Cantidad
IndexData
De 0 a 65.535
Comentario
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)
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
Anular
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
Ocupado
BOOL
Cancelado
BOOL
Error
BOOL
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
Direccin
Smbolo
Enlace
SL1: Serie 1
SL2: Serie 2
ETH1: Ethernet
Seleccin de puerto
ID
EIO0000001477 11/2014
231
Objetos de comunicacin
Propiedad
Valor
Descripcin
Timeout
232
ObjType
FirstWriteObj
De 0 a 65.535
WriteQuantity
De 0 a 120
IndexDataOut
De 0 a 65.535
FirstReadObj
De 0 a 65.535
ReadQuantity
De 0 a 124
IndexDataIn
De 0 a 65.535
Comentario
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)
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
Anular
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
235
Objetos de comunicacin
Salidas
El bloque de funciones %SEND_RECV_MSG contiene las siguientes salidas:
Etiqueta
Tipo
Valor
Terminado
BOOL
Ocupado
BOOL
Cancelado
BOOL
Error
BOOL
236
EIO0000001477 11/2014
Objetos de comunicacin
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
Direccin
Smbolo
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
QuantityToSend
De 0 a 254
Un valor de 0 significa que el bloque de
funciones slo recibe datos.
BufferToSend
De 0 a 65.535
SizeRecvBuffer
De 0 a 254
Un valor de 0 significa que el bloque de
funciones slo enva datos.
BufferToRecv
De 0 a 65.535
QuantityRecv
De 0 a 254
Comentario
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
Direccin
Configurado
Bit de salida
Bit de salida
Da de inicio
1...31
Mes de inicio
Schedule blocks.
Da de
finalizacin
1...31
Mes de
finalizacin
Enero...diciembre
EIO0000001477 11/2014
Fechadores (%SCH)
Parmetro
Descripcin
Valor
Hora de inicio
Hora: 0...23
Minuto: 0...59
Hora de
finalizacin
Hora: 0...23
Minuto: 0...59
Lunes
Comentario
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
Configurado
Casilla seleccionada
Bit de salida
%Q0.2
Da de inicio
21
Mes de inicio
Junio
Hora de inicio 21
Da de
finalizacin
21
Mes de
finalizacin
Septiembre
Hora de
finalizacin
22
Lunes
Casilla seleccionada
Martes
Casilla no seleccionada
Sin actividad
Mircoles
Casilla seleccionada
Jueves
Casilla no seleccionada
Sin actividad
Viernes
Casilla seleccionada
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
%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
251
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
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
%MW11
Da de la semana (1)
%MW12
00
Segundo
%MW13
Hora
Minuto
%MW14
Mes
Da
%MW15
Siglo
Ao
EIO0000001477 11/2014
251
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
252
EIO0000001477 11/2014
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
%SW50
00SS: segundos
%SW51
%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
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
%MW10
Da de la semana (1)
%MW11
Segundo
%MW12
Hora
Minuto
%MW13
Mes
Da
%MW14
Siglo
Ao
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
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