Title: PROGRAMACI
1PROGRAMACIÓN AVANZADA DE PLCs
2MOV, FUN(21)
- LA INSTRUCCIÓN MOV REALIZA EL MOVIMIENTO DE UN
DATO DE 16 BIT, DESDE - UN CANAL A OTRO.
- EL CONTENIDO DEL CANAL FUENTE S SE TRANSFIERE
AL CANAL DESTINO D.
- LAS ÁREAS DE DATOS UTILIZABLES EN LA
TRANSFERENCIA SON
S, IR, SR, HR, TIM, CNT
D IR, HR
3EJEMPLO. EMBOTELLADORA
- EL MOTOR M1 ESTARÁ EN MARCHA HASTA
- QUE LA FOTOCÉLULA F1 DETECTE
F1
E1
- CUANDO F1 DETECTE, COMENZARÁ A
- LLENARSE LA BOTELLA AL ACTIVARSE LA
- ELECTROVÁLVULA E1
- CUANDO LA BOTELLA PESE LO DESEADO,
- SE ACTIVARÁ E1 Y DESPUÉS DE 3
- SEGUNDOS, LA CINTA SE PONDRÁ EN
- MARCHA HASTA QUE LA FOTOCÉLULA F1
- VUELVA A DETECTAR.
M1
4 / 20 mA
ENTRADAS
F1 0000
CÉLULA DA CARGA ENTRADA ANALÓGICA
SALIDAS
M1 1000
E1 1001
4SFT, FUN(10) /1
- LA INSTRUCCIÓN SFT REALIZA LA FUNCIÓN DE
REGISTRO DE DESPLAZAMIENTO - EN SERIE
- EL DESPLAZAMIENTO AFECTA A LOS BITS, EN SENTIDO
DEL MENOS - SIGNIFICATIVO AL MÁS SIGNIFICATIVO
- IN ENTRADA DE DATOS. EL ESTADO DE ESTA ENTRADA
SE INTRODUCE EN EL - REGISTRO DE DESPLAZAMIENTO CON EL FLANCO
ASCENDENTE DEL IMPULSO - DE RELOJ.
- SP IMPULSO DEL RELOJ. EL FLANCO ASCENDENTE
CREA EL DESPLAZAMIENTO - DE LOS DATOS, SI RT? 0
- RT RESET. SU FLANCO ASCENDENTE DETERMINA EL
RESET DEL CANAL (O - CANALES) SOBRE LOS QUE SE PRODUCE EL
DESPLAZAMIENTO
- B , E PRIMER Y ÚLTIMO CANAL DEL ÁREA DE DATOS
SOBRE LA QUE SE - PRODUCE EL DESPLAZAMIENTO
5SFT, FUN(10) /2
- SI COMO CANALES DE DESPLAZAMIENTO SE UTILIZAN
LOS DEL ÁREA HR, EN - CASO DE FALLO DE ALIMENTACIÓN LOS DATOS SE
MANTIENEN
0000
IN
SFT
LD 0000
0001
CP
LD 0001
05
LD 0002
0002
R
SFT (10) 05
06
06
CH 05
0 1 2 3
14 15
DATOS
ESTE DATO SE PIERDE
0 1 2 3
14 15
CH 06
6EJEMPLO. APLICACIÓN FUNCIÓN SFT
- SE TIENE UNA LÍNEA DE SUMINISTRO DE BOTELLAS.
- SOBRE LA LÍNEA EXISTEN 10 PUESTOS QUE PUEDEN EN
UN MOMENTO DADO - CONTENER BOTELLA.
- LA PRESENCIA DE BOTELLA EN UN PUESTO SE DETECTA
CON UN SENSOR. - CON OTRO SENSOR SE DETERMINA SI LA BOTELLA ES
BUENA O MALA.
- SEGÚN LA NATURALEZA DE CADA BOTELLA ÉSTA ES
RECHAZADA O NO.
7EJEMPLO. APLICACIÓN FUNCIÓN SFT
- LA LÍNEA ACCIONADA POR UN MOTOR, ES CONTROLADA
CON UN PULSADOR - DE START, UNO DE STOP Y UNO DE EMERGENCIA.
- ANTE UNA FALTA DE ALIMENTACIÓN, LA MÁQUINA DEBE
PODER CONTINUAR - CORRECTAMENTE CON EL PROCESO CUANDO LA
ALIMENTACIÓN VUELVE, - PREVIO START.
- UN PULSADOR ACTÚA DE RESET DE LA LÍNEA
(MOTOR OFF, NINGUNA BOTELLA BUENA SOBRE LA
LÍNEA).
SALIDAS
START MOTOR 1000
RECHAZADOR 1001
AUX 1002
CLOCK HR0000
8EJEMPLO. APLICACIÓN FUNCIÓN SFT
SENSOR DE PRESENCIA EN PUESTO
SENSOR BUENA / MALA
RECHAZADOR
0 1 2 3 4 5
6 7 8 9
1 1 0 0 0 1
0 1 0 1
9EJEMPLO. BRAZO ROBOT
START 0000
LS1 0001
LS2 0002
LS3 0003
LS4 0004
LS5 0005
PS1 0006
RTRANSPORTADORA 1000
GIRO DERECHA 1001
GIRO IZQUIERDA 1002
SUBIR 1003
BAJAR 1004
COGER 1005
SOLTAR 1006
0 1 2 3 4 5
6 7 8
CICLO DE TRABAJO
10RELLENAR BLOQUE, FUN(71) _at_FUN(71)
- FUNCIÓN TRANSFIERE EL DATO CONTENIDO EN UN
CANAL (O CONSTANTE) - A UN GRUPO DE CANALES ESPECIFICADOS.
D DATO
I CANAL INICIAL
F CANAL FINAL
11RELLENAR BLOQUE, FUN(71) _at_FUN(71)
3200
BSET
2345
DM10
DM20
DM10
2345
DM11
DM20
12MOVER BLOQUE, FUN(70) _at_FUN(70)
- FUNCIÓN TRANSFIERE DATOS DE VARIOS CANALES
CONSECUTIVOS A - OTROS CANALES TAMBIÉN CONSECUTIVOS
XFER
N Nº CANALES
N
O CANAL ORIGEN
O
D CANAL DESTINO
D
13MOVER BLOQUE, FUN(70) _at_FUN(70)
3300
XFER
4
LR00
HR04
LR 0000
3456
HR 0400
3456
LR 0001
5629
HR 0401
5629
LR 0002
5894
HR 0402
5894
LR 0003
8974
HR 0403
8974
14MENSAJE, FUN(46) _at_FUN(46)
- FUNCIÓN LEE LOS DATOS ASCII CONTENIDOS EN OCHO
CANALES (16 - CARACTERES) Y LOS VISUALIZA EN EL DYSPLAY DEL
DISPOSITIVO DE - PROGRAMACIÓN
N CANAL DE COMIENZO
NOTA EL ÚLTIMO CARÁCTER DEBE SER OD
15MENSAJE DE LONGITUD DOBLE, FUN(47) _at_FUN(47)
- FUNCIÓN LEE LOS DATOS ASCII CONTENIDOS EN
DIECISEIS CANALES (32 - CARACTERES) Y LOS VISUALIZA EN EL DYSPLAY DEL
DISPOSITIVO DE - PROGRAMACIÓN (CONSOLA O INTERFACE RS232)
LMSG
N CANAL DE COMIENZO
N
D CANAL DE DESTINO
D
NOTA EL ÚLTIMO CARÁCTER DEBE SER OD
16CONTADOR REVERSIBLE, FUN(12)
- FUNCIÓN CONTADOR REVERSIBLE. CUENTA ENTRE CERO
Y SV DE - ACUERDO CON LOS CAMBIOS EN DOS CONDICIONES DE
EJECUCIÓN, LA - ENTRADA DE CON TAJE ADELANTE (II) Y LA DE
CONTAJE ATRÁS (DI)
II
CNTR12
N Nº CANAL DE COMIENZO
DI
N
(000 A 511)
R
SV VALOR SELECCIONADO
SV
IR, SR, AR, DM, HR, LR,
17EJEMPLO. SECUENCIA DE MENSAJE EN CONSOLA DE
PROGRAMACIÓN
- APLICACIÓN Utilizar la instrucción MSG para
mostrar mensajes en la - consola de programación PRO-27.
- La instrucción MSG permite mostrar un mensaje de
hasta 16 caracteres - sobre el display de la consola de
programación. En este caso el programa - deberá hacer posible el desplazamiento de un
mensaje de 32 caracteres por el - display, a izquierda o a derecha según
voluntad del usuario e incluso poder - detenerlo.
18EJEMPLO. SECUENCIA DE MENSAJE EN CONSOLA DE
PROGRAMACIÓN
- El mensaje estará contenido
- en los DMs del 10 al 25 en
- formato ASCII de la siguiente
- forma
- ORDEN DE PARADA DE MENSAJE
Entrada 0000.
- SENTIDO DE DESPLAZAMIENTO DEL MENSAJE
Entrada 1
- FRECUENCIA DE DESPLAZAMIENTO
Base de tiempo constante.
19DIRECCIONAMIENTO INDIRECTO
- Cuando para un operando se especifica el área
dde DM, se puede utilizar - una dirección indirecta.
- Para diferenciar el direccionamiento de DM
indirecto se coloca un - asterisco delante de DM DM
- Cuando se especifica una dirección indirecta de
DM, el canal DM designado - contendrá la dirección del canal DM que
contiene el dato que se utilizará como - operando de la instrucción.
- Cuando se utilice direccionamiento indirecto, la
dirección del canal deseado - debe estar en BCD y debe especificar un canal
comprendido en área de DM.
20DIRECCIONAMIENTO INDIRECTO
- Normalmente la variable especificada por una
cierta instrucción es tal que la - instrucción opera con el dato especificado en
la variable especificada.
TIM00
DM0011
0432
DM0011
EN ESTE CASO SV 432
- El direccionamiento indirecto permite
especificar un dato por la dirección de - DM donde ése dato está contenido (la dirección
es la variable).
TIM00
DM0011
0432
DM0011
0432
DM0432
EN ESTE CASO SV 1547
21DIRECCIONAMIENTO INDIRECTO
Ejemplo
Canal
Contenido
DM 0000
4C59
MOV(21)
DM 0001
1111
DM 0001
Dirección indirecta
DM 0002
F35A
Indica DM 1111.
LR 00
DM 1111
5555
5555 movido a LR 00.
DM 1112
2506
DM 1113
D541
Si se designa DM 0001 como primer operando y LR
00 como segundo operando de MOV(21), los
contenidos de DM0001 son 1111 y DM 1111 contiene
5555, el valor 5555 será movido a LR 00.
22DIRECCIONAMIENTO INDIRECTO
EJEMPLO
ALMACENAR LA TEMPERATURA EN UN HORNO CADA 15 SEG.
Y DURANTE 2 HRS., TIEMPO DE DURACIÓN DEL PROCESO.
DATOS
- Tº ENTRADA ANALÓGICA CANAL 101
23STC / CLC, FUN 40 / 41
- FUNCIÓN ESTAS INSTRUCCIONES GESTIONAN EL FLAG
DE ACARREO, - O FLAG CY.
EL FLAG CY SE UTILIZA EN LAS OPERACIONES
MATEMÁTICAS, PARA DETECTAR
- EXISTENCIA DE OVERFLOW EN EL RESULTADO DE UNA
SUMA - (ADD)
- EXISTENCIA DE RESULTADO NEGATIVO EN UNA
SUBSTRACCIÓN - (SUB)
LD 0000
STC(40)
LD NOT 0000
CLC(41)
LD 1904
OUT 1000
24ADD, FUN(30) /1
- LA INSTRUCCIÓN ADD EJECUTA LA SUMA ENTRE DOS
DATOS DE 16 BIT - (CANALES Y/O CONSTANTES) EN FORMATO BCD
- AL RESULTADO SE LE SUMA EL ACARREO SUMANDO 1 SI
CY ON
- LOS PARÁMETROS DE LAS INSTRUCCIONES SON 3
- A1,A2 SUMANDOS (, IR, SR, HR, TIM, CNT)
- R RESULTADO (IR, HR) A1A2CY
LD 0000
STC(40)
ADD(30)
A1
HR00
0001
A2
HR00
R
25ADD, FUN(30) /2
- EN EL CASO DE ACARREO (CY 1), LA SUMA DE LOS
DOS SUMANDOS - HA SUPERADO EL LÍMITE 9999. EL RESULTADO
EFECTIVO ES ENTONCES - 10000R
- EN EL CASO DE SUMA CON 8 O MÁS CIFRAS BCD, (SUMA
COMBINADA) - SE DEBERÁ RESETEAR CY SÓLO PARA LA PRIMERA
SUMA.
- SI EL RESULTADO DE LA OPERACIÓN SUMA ES 0,
ENTONCES EL FLAG - EQ 1
- SI LOS SUMANDOS NO ESTÁN EN FORMATO BCD, LA
OPERACIÓN NO SE - EJECUTA Y ENTONCES ER 1
26SUB, FUN(31) /1
- LA INSTRUCCIÓN SUB EJECUTA LA SUBSTRACCIÓN DE
DOS DATOS DE - 16 BIT EN FORMATO BCD
- AL RESULTADO SE LE RESTA EL ACARREO O BIEN SE LE
SUMA -1 SI - CY ON
- LOS PARÁMETROS DE LA INSTRUCCIÓN SON 3
- Mi MINUENDO (, IR, SR, HR, TIM, CNT)
- Su SUSTRAENDO (, IR, SR, HR, TIM, CNT)
- R RESULTADO (IR, HR) Mi - Su - CY
LD 0000
STC(40)
SUB(31)
Mi
0100
Su
00
05
R
27SUB, FUN(31) /2
- SEGÚN LOS VALORES QUE TENGAN Mi Y Su, SE TIENEN
LOS SIGUIENTES - CASOS
- SI Mi Y Su NO ESTÁN EN EL FORMATO BCD, LA
OPERACIÓN NO SE - EJECUTA, Y ER 1
28MULTIPLICACIÓN BCD, FUN(32) _at_FUN(32)
- FUNCIÓN MULTIPLICA EL CONTENIDO DE LOS DATOS
ESPECIFICADOS - EN LA INSTRUCCIÓN (EN BCD) Y EL RESULTADO SE
TRANSFIERE A UN - REGISTRO.
MUL
A, B CANALES /CONSTANTES
A
R REGISTRO RESULTADO
B
C
29MULTIPLICACIÓN BCD, FUN(32) _at_FUN(32)
3300
MUL
10
0021
DM100
0034
CH 10
X
0021
714
DM100 (CH 10) X 21
30DIVISIÓN BCD, FUN(33) _at_FUN(33)
- FUNCIÓN DIVIDE EL CONTENIDO DE LOS DATOS
ESPECIFICADOS EN LA - INSTRUCCIÓN (EN BCD) Y EL RESULTADO SE
TRANSFIERE A DOS REGISTROS - (COCIENTE Y RESTO).
A DIVIDENDO
DIV
B DIVISOR
A
R COCIENTE
B
R1 RESTO
C
A, B CANAL / CONSTANTE
31DIVISIÓN BCD, FUN(33) _at_FUN(33)
3300
DIV
10
4
LR10
133
CH 10
(CH 10) (LR 10) X 4 LR 11
4
33
LR 10
1
LR 11
32EJEMPLO DE PROGRAMACIÓN
SUMA DE DATOS DE HASTA 8 DÍGITOS
- APLICACIÓN SE TRATA DE SUMAR DOS DATOS QUE
PUEDEN TENER UNA - LONGITUD DE HASTA 8 DÍGITOS.
- ESTE PROGRAMA PUEDE LLEVARSE A CABO UTILIZANDO
DIRECTAMENTE LA - INSTRUCCIÓN DE SUMA DE DOBLE LONGITUD PERO LO
HAREMOS USANDO LA - INSTRUCCIÓN ADD NORMAL.
- LOS DATOS A SUMAR SON LOS SIGUIENTES
DM1
4 DÍGITOS MENORES
DM0
DM3
4 DÍGITOS MENORES
DM2
- EL RESULTADO SE GUARDARÁ EN
DM6
DM5
DM4
- El programa debe poder detectar si alguno de los
datos A o B no está en formato - BCD. Utilizar el CARRY en las instrucciones
suma.