Professional Documents
Culture Documents
Automats Programables I Robotica Ii - Catala
Automats Programables I Robotica Ii - Catala
Automats Programables I Robotica Ii - Catala
ROBÒTICA EN GENERAL 2
CURS: 44053
ACCIÓ: 7
GRUP: 2
PROGRAMACIÓ DE L ‘AUTOMATA
S7-300
Instruccions avançades
PRÒLEG
Aquesta documentació forma part d'una sèrie de manuals que un grup de professors de
tres instituts d'educació secundària de Catalunya, com són:
Aquest grup de treball continua treballant en cada un dels temes per poder anar
actualitzant dia a dia aquesta documentació, és per això, que ens podeu enviar els vostres
suggeriments a través de la informació que trobareu a la web dedicada a aquest grup de
treball i que des d'aquí us convidem a participar.
http://iespalauausit.com/edcai/html/web_cat/indexcat.htm
Esperem que l'esforç i dedicació que hem realitzat pugui ajudar a millorar la vostra tasca
educativa.
INDEX:
1 SISTEMES DE NUMERACIÓ
SISTEMA DECIMAL
En un sistema decimal, ens trobem que cada dígit pot tenir els següents valors:
0123456789
3 2 1 0
7x10 + 6x10 + 3x10 + 2x10
SISTEMA BINARI
En un sistema binari, ens trobem que cada dígit pot tenir els següents valors:
0 y 1
Un numero binario es pot llegir en decimal y hexadecimal
5 4 3 2 1 0
1x2 + 0x2 + 1x2 + 1x2 + 0x2 + 1x2
32 + 0 + 8 + 4 + 0 + 1 + = 45
7 6 5 4 3 2 1 0
1x2 + 0x2 + 1x2 + 0x2 + 1x2 + 1x2 + 0x2 + 1x2
En aquest cas que és un byte, el bit més alt és a dir el el bit 7 és el que determina el signe si el bit 7 és igual
a 1 el signe és negatiu, sinó serà positiu.
Si treballéssim amb una paraula, el bit més alt és a dir el el bit 15 seria el que determinaria el signe si el bit
15 és igual a 1 el signe és negatiu, sinó serà positiu.
128 + 0 + 32 + 0 + 8 + 4 + 0 + 1 + = 173
13 2
1 6 2
0 3 2
1 1 2
1 0
1 1 0 1
SISTEMA HEXADECIMAL
En un sistema hexadecimal, ens trobem que cada dígit pot tenir els següents valors (16):
0 1 2 3 4 5 6 7 8 9 A (10) B (11) C (12) D (13) E (14) F (15)
3512 16
R8 219 16
R1 13 16
R 13(D) 0
D 1 8
El nombre binari hexadecimal E57A equival al nombre binari 1110 0101 0111 1010
CODI BCD
En un codi BCD, ens trobem amb el que es diu binari codificat decimal.
Aquest binari es pot llegir en decimal
7 6 5 4 3 2 1 0
1x2 + 0x2 + 0x2 + 1x2 + 0x2 + 1x2 + 1x2 + 0x2 = 150
10 0 1 0110
9 6
2 MÒDUL D’ORGANITZACIÓ
OB30 a OB38 Són OB que s’executen cada cert temps prefixat i amb prioritats diferents
OB Base de temps Valor prefixat
Prefixat per la prioritat
•OB 30 5s 7
•OB 31 2s 8
•OB 32 1s 9
•OB 33 500 ms 10
•OB 34 200 ms 11
•OB 35 100 ms 12
•OB 36 50 ms 13
•OB 37 20 ms 14
•OB 38 10 ms 15
OB100 a 0B102 OBS de manera d’arrencada (només pot estar activat un d’ells ).
Se selecciona en Administrador-ÆHardware---ÆCPU (picar dues vegades)Æpestanya
‘arrencada’
3 BLOCS DE FUNCIÓ
Les Funcions, són mòduls que s'executen en ser cridats des d'altres mòduls.
• Quan se'ls crida, la funció actua com una subrutina del programa.
• Quan acaba d'executar el mòdul, el programa retorna al mòdul des d'on va ser cridat, en la instrucció
posterior al salt.
Tots els valors de la declaració local, menys els temporals, s'emmagatzemen en un bloc de dades (DB
d'Instància).
4 MÒDULS DE DADES
Els mòduls de dades, són àrees de memòria de la CPU que s'utilitzen per emmagatzemar dades.
• Els DB mantenen el seu valor davant d'un tall de tensió, sempre que tinguem la pila tampó de suport. En
cas de no tenir pila, només mantindran el seu valor els DB configurats en l'àrea d'elements romanents de la
CPU. En les CPUs actuals que van amb Memory Card, mantenen la memòria tots els DBs
5 ACUMULADORS
Els acumuladors són registres auxiliars en la CPU que s'utilitzen per a l'intercanvi de dades, operacions de
comparació i operacions aritmètiques.
El S7-300 té dos acumuladors de 32 bits i el S7-400 té quatre.Carga: (L)
L'operació de càrrega, sempre va a l’ACCU1 (les posicions no utilitzades es posen a 0), és a dir si càrrec un
Byte, els 24 bits restants es posen a 0.
El registre que abans de la càrrega era a l’ACCU1, es desplaça a l’ACCU2.
Transferència: (T)
L'operació de transferència només transfereix el valor que hi hagi en l’ACCU1 i l’ACCU1 queda invariable.
(còpia el valor del ACCU1 en un registre).
ACCU1
0000 0000 0000 EB0 L EB0
31 24 23 16 15 8 7 0
ACCU1
0000 0000 EB0 EB1 L EW0
31 24 23 16 15 8 7 0
ACCU1
MB0 MB1 MB2 MB3 L MD0
31 24 23 16 15 8 7 0
ACCU1
MB0 MB1 MB2 MB3 T AB0
T AB0
ACCU1
MB0 MB1 MB2 MB3 T AW0
T AW0
ACCU1
MB0 MB1 MB2 MB3 T AD0
T AD0
-La funció MOVE és executada quan tenim un 1 a A, llavors el valor que hi ha a IN és copiat en OUT. (El
valor en IN roman inalterable).
-En ENO tindrem un 1 si la funció s'executa sense errors.
-Si tenim un 0 en A la funció no s'executa (és saltada).
Els formats en IN i en OUT poden ser de 8, 16 i 32 bits. (Els formats en IN i en OUT poden ser diferents.
0000000000000000 AW124
1 011100111001010 AW124
FC1
E126.0 MOVE
EN ENO
Programació en AWL
U E 126.0
SPBNB _001
L EW 124
T AW 124
_001: NOP 0
-En aquest cas volem enviar diferents constants a una mateixa paraula.
-PAW752 és una sortida analògica que treballés entre valors 0 i 27.648. Amb aquests valors, donarà un
senyal exterior de tensió que estarà entre 0 i 10 Volts que en el nostre cas seria la consigna de velocitat d'un
variador de freqüència de tal manera que 0 V serien 0 rpm i 10 V serien 1500 rpm.
-En aquest cas tinc sis polsadors del E124.0 al E124, 5. Accionant els polsadors en ordre ascendent volem
que la sortida analògica ens de valors de 0, 2, 4, 6, 8 i 10 volts.
-Quan accioni l'entrada E124.6, un potenciòmetre que donarà de 0 a 10 V a l'entrada analògica PEW752
enviés el seu valor a la sortida analògica PAW752.
Fent una regla de 3, càlcul les següents correspondències:
Valor en PAW752 Volts en sortida
0 0V
5529 2V
11058 4V
16578 6V
22118 8V
27648 10 V
2103305456
FC2
E124.0 MOVE
1 EN ENO
0 IN OUT PAW752
E124.1 MOVE
2 EN ENO
E124.2 MOVE
3 EN ENO
E124.3 MOVE
4 EN ENO
E124.4 MOVE
5 EN ENO
E124.5 MOVE
6 EN ENO
E124.6 MOVE
7 EN ENO
Nota: Proveu que passa quan acciono dos pulsadors al mateix temps.
-Indicar quina solució puc prendre per que l’últim valor actiu sigui l’efectiu.
-Una cop provat l’exercici, calcular els valors que tindríem que enviar per tenir 1, 3, 5, 7 i 9 volts de sortida
en PAW752
R DEZ MW4
Nota: Quan es col · loca un temps en format S5T (Temps Simatic), ajusta automàticament el valor a 3
dígits i adapta la base de temps.
Forçar valors en el MW0 (Hexadecimal) amb diferents bases de temps en el dígit 3 i diferents valors en els
dígits 0 al 2. i comprovar que temps SIMATIC agafa.
FC4
E124.0 MOVE
1 EN ENO
E124.1 MOVE
2 EN ENO
E124.2 MOVE
3 EN ENO
E124.0 A124.1 T1
4
SV
MW0
E124.1
E124.2
T1 A124.1
5
A124.1
P M G
-El operari primer accionarà el selector E124.0 i després posarà en un terminal d'operador o en un SCADA
un valor al MW0 (preselecció del nombre de peces que volem controlar en aquest procés). En aquest punt
accionarà el polsador E124.1 que carregarà el valor de preselecció, això provoca que la cinta A124.0 es
posi en marxa a l'instant.
-Hi ha un detector de peces E124.7 que explica les peces que passen. Quan ha comptat les peces
preseleccionades (el comptador arriba a 0), es para la cinta i es posa en marxa de forma intermitent la
lampara A124.7.
-L'operari retira llavors la caixa plena, posa una caixa buida i repeteix el procés (Posa la nova preselecció en
MW0 i acciona de nou el polsador E124.1 amb la qual cosa el cicle comença de nou.FC5
E124.7 E124.0 Z1
ZR
E124.1 E124.0 Z1
SZ
MW0
Z1 E124.0 A124.0
A124.0
E124.7
A124.7
E124.0
E124.1
NOTA: Un comparador, actua com un contacte en el qual hi haurà un 1 quan es compleixi la comparació.
FC6 AWL
E124.0 A124.0
CMP==I
1
MW0 IN1
MW2 IN2
E124.1 A124.1
CMP<>I
2
MW0 IN1
MW2 IN2
E124.2 A124.2
CMP>I
3
MW0 IN1
MW2 IN2
E124.3 A124.3
CMP<I
4
MW0 IN1
MW2 IN2
E124.4 A124.4
CMP>=I
5
MW0 IN1
MW2 IN2
E124.5 A124.5
CMP<=I
6
MW0 IN1
MW2 IN2
Si volem fer una comparació d'un Byte o de nombres en format hexadecimal, haurem de fer la comparació
en AWL.
exemple:
-Volem que quan el valor de la EW124 sigui igual al valor H2A4D s'activi la sortida A124.7
-Volem que quan el valor del EB126 sigui igual a 73 es desactivi la sortida A124.7
Programació en AWL
L EW 124
L W#16#2A4D
==I
S A 124.7
L EB 126
L 73
==I
R
A 124.7
-Per posar en funcionament un procés, s’hauran de donar certes condicions. Aquestes són que algunes
entrades deuran estar a 0 i altres a 1.
-Aquest exercici resolt de forma tradicional, implicaría la col·locació de 16 contactes en sèrie amb l’element
a activar.
-Resolt amb un comparador, es realitzaría de la següent manera:
Estat que han de tenir les entrades en posar en marxa el procés:
EB124 EB125
.7 .6 .5 .4 .3 .2 .1 .0 .7 .6 .5 .4 .3 .2 .1 .0 EW124
1 0 1 0 1 0 0 1 0 1 1 0 1 1 0 1
FC7
E126.0 A124.0
CMP==I
1 S
EW124 IN1
-22163 IN2
E126.1 A124.0
2
R
EW124 IN1
-22163 IN2
A124.0
-Per poder obrir un pany, he de posar en MW0 el valor 1234. Aquest valor seria introduït per un terminal
d'operador o per un SCADA.
-Si en accionar el polsador E124.0 la clau és correcta, funcionrà el pany A124.0 (segment 1) durant 5
segons i esborrarem la clau correcta de MW0. (segment 3)
-Si ens equivoquem tres vegades, es bloquejarà el pany i funcionarà una sirena (A124.7) de forma
intermitent fins que la parem accionant el polsador E124.0 havent col · locant abans en MW0 el valor 9999.
(Segment 5)
-Programar en el OB100 la càrrega del valor de preselecció 3 al comptador 1.
-Exercici: Fer el programa necessari perquè una vegada marqui alguna fallada donem un temps de 15
segons per obrir el pany, en cas de no fer-ho, ha d'activar l'alarma. OB100
E0.0 Z1
1 SZ
C#3
FC8
E124.0 Z1 A124.0
CMP==I
1 S
MW0 IN1
1234 IN2
A124.0 T1
2 SE
S5T#5S
T1 MOVE A124.0
3 EN ENO R
0 IN OUT MW0
E124.0 M2.0 Z1
CMP<>I
4 P ZR
MW0 IN1
1234 IN2
E124.0 Z1
CMP==I
5 SZ
SZ
C#3
MW0 IN1
9999 IN2
A124.0
Z1 M255.3 A124.7
6
FC9
E124.0 WAND_W
1 EN ENO
MW0 IN1
OUT MW4
MW2 IN2
E124.1 WOR_W
2 EN ENO
MW0 IN1
OUT MW4
MW2 IN2
E124.2 WXOR_W
3 EN ENO
MW0 IN1
OUT MW4
MW2 IN2
-Tindríem un terminal d'operador o un SCADA on posariem el valor al MW0. Quan accionem el E124.4, el
temporitzador s'activarà amb MW10 com a valor de preselecció (segons).
-Per aconseguir això, primer haurem de fer un filtre perquè els bits 12-15 no afectin la base de temps del
temporitzador i després farem una funció paral · lel per posar la base de temps.
El registre MW10 ha d'estar en BCD. En cas de no estar, el PLC es va a STOP.
Nota: Si enviem sl PLC el OB121 (Detecta errors de programació) encara que sigui buit hi ha un error, el
PLC no s'anirà a STOP encara indicarà amb el led SF que hi ha un error.FC10
T2
E124.4 S_EVERZ A124.2
2 S Q
MW0 TW DUAL
R DEZ
- (Segment 1) Suma de nombres enters: ADD_I suma els registres que tingui en IN1 i IN2 i envia el resultat
a OUT. (OUT = IN1 + IN2).
- (Segment 2) Resta de nombres enters: SUB_I resta els registres que tingui en IN1 i IN2 i envia el resultat a
OUT. (OUT = IN1-IN2).
- (Segment 3) Multiplicació de nombres enters: MUL_I multiplica els registres que tingui en IN1 i IN2 i envia
el resultat a OUT. (OUT = IN1 * IN2).
- (Segment 4) Divisió de nombres enters: DIV_I divideix els registres que tingui en IN1 i IN2 i envia el
resultat a OUT. (OUT = IN1/IN2).
-La funció MOD, recupera la resta d'aquesta divisió (només en dobles paraules).
-En qualsevol d'aquestes quatre operacions, el resultat ha d'estar comprès dins dels límits dels nombres
enters.
FC11
E124.0 ADD_I
1 EN ENO
MW2 IN2
OV M255.3 A124.0
E124.1 SUB_I
2 EN ENO
MW2 IN2
OV M255.3 A124.1
E124.2 MUL_I
3 EN ENO
MW2 IN2
OV M255.3 A124.2
E124.3 DIV_I
4 EN ENO
MW2 IN2
OV M255.3 A124.3
FC12
E124.0 M2.0
ADD_I
1 P ENO
MW0 IN1
OUT MW0
1 IN2
E124.1 M2.1
SUB_I
2 P ENO
MW0 IN1
OUT MW0
1 IN2
E124.2 MOVE
3 EN ENO
0 IN OUT MW0
A124.4
CMP>=I
4
MW0 IN1
10 IN2
FC13
E124.0 A124.0
1 S
E124.1 A124.0
2 R
MW0 IN1
OUT MW0
1 IN2
E124.2 MOVE
5 EN ENO
0 IN OUT MW0
MOVE
EN ENO
0 IN OUT MW2
M255.5 A124.7
CMP > I
6
MW2 IN1
5000 IN2
-(Segment 1) Suma de nombres reals: ADD_R suma els registres que tingui en IN1 i IN2 i envia el resultat a
OUT. (OUT = IN1 + IN2).
-(Segment 2) Resta de nombres reals: SUB_R resta els registres que tingui en IN1 i IN2 i envia el resultat a
OUT. (OUT = IN1-IN2).
-(Segment 3)Multiplicació de nombres reals: MUL_R multiplica els registres que tingui en IN1 i IN2 i envia
el resultat a OUT. (OUT= IN1*IN2).
-(Segment 4) Divisió de nombres reals: DIV_R divideix els registres que tingui en IN1 i IN2 i envia el resultat
a OUT. (OUT= IN1/IN2).
-(Segment 5)Arrel quadrada: SQRT realitza l’arrel quadrada de IN i envia el resultat a OUT.
-(Segment 6)Elevar al quadrat: SQR eleva al quadrat el valor que hi ha en IN i envia el resultat a OUT.
-(Segment 7)Valor absolut d’un nombre: ABS agafa el valor de IN (sigui positiu o negatiu) i l’envia a OUT
sempre amb signe positiu.
FC14
E124.0 ADD_R
1 EN ENO
MD0 IN1
OUT MD8
MD4 IN2
E124.1 SUB_R
2 EN ENO
MD0 IN1
OUT MD8
MD4 IN2
E124.2 MUL_R
3 EN ENO
MD0 IN1
OUT MD8
MD4 IN2
E124.3 DIV_R
4 EN ENO
MD0 IN1
OUT MD8
MD4 IN2
E124.4 SQRT
5 EN ENO
E124.5 SQR
6 EN ENO
E124.6 ABS
7 EN ENO
FC15
#T2 #T1
SE
#TIEMPO_OFF
#T1 #T2
SE
#TIEMPO_ON
#T1 #GENERADOR
OB1
FC15
1 EN ENO
GENERA
MW0 TIEMPO_OFF M10.0
DOR
MW2 TIEMPO_ON
T10 T1
T11 T2
FC15
3 EN ENO
GENERA
S5T#2S TIEMPO_OFF M10.1
DOR
S5T#1S TIEMPO_ON
T12 T1
T13 T2
- Volem fer una plantilla amb la qual poguem calcular el resultat del tant per cent d'un valor.
Per això hem de realitzar les següents operacions:
Resultat = (Tant per cent * valor) / 100
Hem de realitzar dues operacions
1a Auxiliar = Tant per cent * valor
2a Resultat = Auxiliar / 100
Per crear la plantilla, hem d'omplir la taula de declaració de variables.definir les variables
FC16
MUL_R DIV_R
1 EN ENO EN ENO
MD4 Valor
E124.2 FC16
2 EN ENO
Tanto por
MD20
Ciento
Resultado MD28
MD24 Valor
L DBW[MD0]
T MW10
Exercici 1
Volem que unes dades gravades en 20 paraules del DB1 puguin ser mogudes al MW10.
1º Per a això crearem primer el DB1 amb els següents valors actuals.
AUF DB 1
L DBW [MD 0]
T MW10
Exercici 2
-Volem realitzar la suma de dues paraules del DB1 i moure el resultat al MW20.
1º Crearem el programa en el FC18
FC18
AUF DB 1
L DBW [MD 0]
L DBW [MD 4]
+I
T MW 20
- Tenim un procés idèntic per a realitzar tres tipus de mescles de dos productes.
- En aquest procés, es fa una barreja d'una quantitat d'un material amb una altra quantitat d'altres materials
durant un temps determinat.
- L'única diferència que existeix en el procés, la quantitat del producte A (va per temps d'obertura d'una
vàlvula), la quantitat del producte B i el temps de barreja dels dos productes.
En accionar un polsador s'obren les dues electrovàlvules que donen pas als productes i es posa en marxa el
mesclador. Segons van passant els temps, es tanca la vàlvula A, es tanca la vàlvula B i s'atura el
mesclador.
-Posarem les dades dels temps de cada tipus de barreja en un DB diferent.
FC19
E124.0 PEQU
1 JMPN
DB1
2 OPN
PEQU
E124.1 MEDI
3 JMPN
DB2
4 OPN
MEDI
E124.2 GRAN
5 JMPN
DB3
6 OPN
GRAN
E124.0 FC20
7 EN ENO
E124.1
E124.2
FC20
MOVE
1 EN ENO
MOVE
2 EN ENO
MOVE
3 EN ENO
OB1
FC19
1 EN ENO
E124.7 T1
2 SV
MW0
T2
SV
MW2
T3
SV
MW4
T1 A124.0
3
T2 A124.1
4
T3 A124.2
5
PRODUCTE A PRODUCTE B
A124.0 A124.1
A124.2
M SELECCIÓ MESCLA
E124.1
E124.0
E124.2
MARXA PROCÉS
E124.7
E10.2. LECTURA DE DADES D'UN BLOC DE DADES (DB) II. DIRECCIONAMENT INDIRECTE D'UN
BLOC DE DADES
- En aquest exercici, mitjançant el E124.0 seleccionarem el nombre de DB que volem obrir i al llegir-se el
FC2 es carregaran les dades d'aquest DB en MW0, MW2 i MW4.
- En accionar el E124.7 es posarà en marxa el procés.
Nota: La instrucció AUF en AWL és igual a OPN en KOP
AUF DB10 (Això significa "Obre el DB10”)
Si MW210=1 AUF DB 1
Si MW210=2 AUF DB 2
Si MW210=3 AUF DB 3
.................................................
.................................................
Si MW210=’N’ AUF DB ‘N’
FC19
1 IN2
MOVE
CMP==I
2 EN ENO
4 IN2
CMP==I
MW210 IN1
0 IN2
FC 20
EN ENO
4
NOTA: Si tinguéssim el mateix procés amb 20 dades diferents, creariem 20 DBs, posariem aquestes dades
des del DB1 al DB20 i en el primer comparador del segment 2 substituiria el valor 4 pel valor 21.
- Raonar que passaria si el segment 3 ho posem davant del segment 2. Canviar-lo i comprovar el seu
funcionament.
Per treballar amb les dades del rellotge, es pot fer de dues formes:
- Una d'elles és la de treballar amb funcions especials SFC
- Una altra de les formes, és recuperar les dades del rellotge del OB1
Exercici 1 :
- En aquest exercici, volem que a les 5 i 15 de la tarda, es posi en funcionament el reg (A124.0) i que s'aturi
a les 5 i 30 de la tarda.
- Programar després el mateix funcionament, però que només funcioni de dilluns a divendres.
DB6
Direcció Nom Tipus Valor inicial Comentari
0.0 STRUCT
+0.0 Rellotge ARRAY[1..8] B#16#0
1.0 BYTE
=8.0 END_STRUCT
OB1
Direcció Declaració Nom Tipus Valor Comentari
inicial
0.0 Temp -------------------- -----------------------
1.0 Temp -------------------- -----------------------
2.0 Temp -------------------- -----------------------
----- Temp -------------------- -----------------------
12.0 Temp OB1_DATE_TIME DATE__AND_TIME
MOVE MOVE
1 EN ENO EN ENO
FC21
2 EN ENO
En realitzar aquest programa en OB1, les dades del rellotge estaran en:
DB6.DBB0 (Any)
DB6.DBB1 (Mes)
DB6.DBB2 (Dia)
DB6.DBB3 (Hora)
DB6.DBB4 (Minut)
DB6.DBB5 (Segons)
DB6.DBB6 (Dècimes i Centèssimes)
DB6.DBB7 (Mil·lèsimes,Dia de la setmana)
FC21
L DB6.DBW3
L W#16#1715
==I
S A124.0
L DB6.DBW3
L W#16#1830
==I
R A124.0
-Exercici 2
-Volem que de dilluns a divendres una sirena funcioni des de la 1 i 30 de la tarda fins la 1 i 32
Per poder solucionar l’exercici, hem de filtrar el dia de la setmana en una paraula o en un byte per
poder realitzar comparacions amb ell. (En aquest cas l'hem posat en MB0)
FC22
Exercici 3
-Creació d'una plantilla per poder realitzar la connexió i desconnexió d'un element entre unes hores
determinades.
-Des d'un terminal d'operador o un sistema SCADA podrem programar aquest rellotge (forçant les MW20 i
MW22) perquè la sortida funcioni quan que ens interessi
Per crear la plantilla, hem d'omplir la taula de declaració de variables.Definir les variables
FC23
Declaració Nom Tipus Comentari
In HORA_INICIO WORD
In HORA_FINAL WORD
Out SALIDA BOOL
In_out
temp REAL
L DB6.DBW3
L #HORA_INICIO
== I
S #SALIDA
L DB6.DBW3
L #HORA_FINAL
== I
R #SALIDA
OB1
MOVE MOVE
1 EN ENO EN ENO
E124.2 FC23
2 EN ENO
MW20 HORA_INICIO
SALIDA A124.0
MD22 HORA_FINAL
-La funció SCALE serveix per escalar el valor d’una entrada analògica entre dos valors (màxim i mínim).
També podríem escalar qualsevol altre registre que no sigui una entrada analògica.
Paràmetres:
EN Quan tinguem un 1 s’executa la funció. Si hi ha un 0, la funció es saltada.(no s’executa).
IN Valor d’entrada (nombre d’entrada analògica). Format enter 16 bits INT.
HI_LIM Valor màxim desitjat de sortida (OUT). Nombre REAL, doble paraula o constant
LOW_LIM Valor mínim desitjat de sortida (OUT). Nombre REAL, doble paraula o constant
BIPOLAR Si val 0 (treballem amb valors entre 0 i 27648). Entrada analògica de 0 a 10 V
Si val 1 (treballem amb valors entre –27648 y +27648) Entrada analògica de
–10V a +10 V
OUT Valor de sortida escalat entre el valor màxim i mínim. Format REAL.
ENO Val 0 si el valor de IN es superior o inferior al límit (-27648 o + 27648). En aquest cas, a més
en OUT surt el valor màxim o el mínim segons es superi en positiu o en negatiu.
RET_VALUE Registre d’error. Val W#16#0000 si el escalat s’ha fet correctament.
Val W#16#0008 si IN surt dels límits màxim o mínim.
-En aquest cas, volem controlar el valor de temperatura d’una sonda que dóna 0 Volts a 0ºC i 10 Volts a
100ºC i volem tenir en MD100 el valor real d’aquella temperatura.
FC24
FC105
SCALE
1 EN ENO
0.0 LO_LIM
E124.0 BIPOLAR
UNIPOLAR
27648 27648
PEW752 PEW752
13824 13824
0 0
0V 5V 10 V 0ºC 50ºC 100ºC
0º PEW752 100º MD10
SONDA DE TEMPERATURA RESULTAT ESCALAT DE PEW752
BIPOLAR
+27648
Sonda de PLC PEW752
temperatura
0 a 100ºC
0- 10 V
PEW752
PAW12
8
0
0ºC 50ºC 100ºC
MD10
-27648
-La funció UNSCALE serveix per desescalar el valor (màxim i mínim) d’un registre sobre una sortida
analògica.. També podríem desescalar qualsevol altre registre que no sigui una sortida analògica.
Parámetres:
EN Quan tinguem un 1 s’executa la funció. Si hi ha un 0, la funció és saltada.
IN Valor d’entrada .Registre en format REAL 32 bits.
HI_LIM Valor màxim desitjat del valor de entrada (IN). Nombre REAL, doble paraula o constant
LOW_LIM Valor mínim desitjat del valor d’entrada (IN) . Nombre REAL, doble paraula o constant
BIPOLAR Si val 0, donarem valors de sortida entre 0 y 27648). Sortida analògica de 0 a 10 V
Si val 1, donarem valors de sortida entre –27648 y +27648) .Sortida analògica de
–10V a +10 V
OUT Valor de sortida escalat . Format INT 16 bits.
ENO Val 0 si el valor de IN és superior al límit inferior o al superior (HI_LIM o LOW_LIMIT). En
aquest cas, a més en OUT surt el valor màxim o el mínim segons es superi per sobre o per
sota. ( 0 o 27648).
RET_VALUEÆRegistre d’error. Val W#16#0000 si l’escalat s’ha fet correctament.
Val W#16#0008 si IN surt dels límits màxim o mínim.
-En aquest cas, volem controlar la velocitat d'un motor mitjançant un convertidor de freqüència.
El variador té una consigna de 0-10 Volts.
Amb 0 volts, el motor ira a 0 rpm i amb 10 volts, anirà a 1500 rpm
Anirem donant un valor a MD100 entre 0 i 1500, aquest valor es convertirà en un valor a la sortida
analògica entre 0 i 27.648, que al seu torn farà que la sortida analògica d'un senyal entre 0 i 10 Volts ..
FC25
FC 106
UNSCALE
1 EN ENO
0.0 LO_LIM
E124.0 BIPOLAR
Exercici 1: Afegir a aquest exercici les línies de l'exercici E2 col · locant en els IN de la funció moure:
0.0, 300.0, 600.0, 900.0, 1200.0 i 1500.0 i en tots els OUT col · locar MD10.
El col · locar 0 s'afegeix per dir-li que aquest valor és un nombre real.
-Volem tenir una alarma de mínim i una de màxim d'una temperatura. La temperatura la llegeix l'entrada
analògica PEW752.
-Ha d'activar l'alarma de màxima quan el valor de la temperatura superi els 90 º C
-Ha d'activar l'alarma de mínima quan el valor de la temperatura estigui per sota de 40 º C.
-El E124.0 és el polsador d'assabentat. A l'accionar-s'esborra l'alarma de mínim i de màxim
-Les alarmes de mínim o màxim, no tornaran a activar fins que el seu valor no pugi (mínima) o baixi
(màxima) del valor de la consigna i es donin de nou les condicions d'activació de les alarmes.
-Per poder col · locar les consignes de màxima i mínima, he de fer una regla de tres i així dedueixo que:
Tindré 90 º C quan el valor en PEW752 sigui de 24.883.
Tindré 40 º C quan el valor en PEW752 sigui de 11.059.
FC26
M1.0 A124.0
CMP>I
1 P S
PEW752 IN1
24883 IN2
M1.1 A124.1
CMP<I
2 P S
PEW752 IN1
11059 IN2
E124.0 A124.0
3 R
A124.1
R
-Volem tenir una alarma de mínim i una de màxim d'una temperatura. La temperatura la llegeix l'entrada
analògica PEW752.
-Ha d'activar l'alarma de màxima quan el valor de la temperatura superi els 90 º C
-Ha d'activar l'alarma de mínima quan el valor de la temperatura estigui per sota de 40 º C.
-El E124.0 és el polsador d'assabentat. A l'accionar -s'esborra l'alarma de mínim i de màxim-Les alarmes de
mínim o màxim, no es tornaran a activar fins que el seu valor no pugi (mínima) o baixi (màxima) del valor de
la consigna i es donin de nou les condicions d’activació de les alarmes.
-En aquest cas, utilitzant la funció SCALE, ja tinc en MD10 en format REAL el valor de la temperatura que
llegeix el PEW752, de manera que puc fer la comparació de forma directa.
-Si en lloc de posar les constants 90.0 i 40.0 posem dos registres en format Real, des d'un terminal
d'operador o des d'un sistema Scada podríem canviar els valor de consigna amb només forçar els valors
que ens interessin a MD20 (Consigna de màxima) i MD30 (Consigna de mínima).
FC27
SCALE
1 EN ENO
0.0 LO_LIM
E0.0 BIPOLAR
M2.0 A124.0
CMP>R
2 P S
MD10 IN1
MD20 IN2
M2.1 A124.1
CMP<R
3 P S
MD10 IN1
MD30 IN2
NOTA: Quan posem una constant en format REAL, encara que la constant no tengui decimals com en el
nostre cas, hem de posar 40.0 si només posem 40 ell entén que és un nombre enter i no te cabuda en una
funció de nombres reals.
E124.0 A124.0
4 R
A124.1
Editar el DB10:
-Volem tenir un bloc de dades de 12 paraules en format INT (nombres sencers).
-Volem que el valor que tingui la primera paraula de dades sigui 10
DB10
Direcció Nom Tipus Valor inicial Comentari
0.0 STRUCT
+0.0 Temperatura ARRAY[1..12] 0
*2.0 INT
=24.0 END_STRUCT
-Cada vegada que accioni el E124.0, el valor que tingui en aquell moment l’entrada analògica PEW752 anirà
al primer registre lliure de la taula.
-Quan la taula estigui plena (DBW0 serà igual a DBW2), funcionarà de forma intermitent la sortida A125.0
FC28
E124.0 M0.0 ATT
1 P EN ENO
PEW752 DATA
DB10.DBW0 TABLE
M255.4 A125.0
CMP==I
2
DB10.DBW0 IN1
DB10.DBW2 IN2
PEW752 DATA
DB10.DBW0 TABLE
M255.4 A125.0
CMP==I
2
DB10.DBW0 IN1
DB10..DBW2 IN2
-En aquest exercici, podem comprovar que quan la taula és plena de dades, sobreescrivim de nou la taula.
-Després de gravar el registre 10, començaria a sobreescriure l'1, després el dos .. etc.
-Amb això aconseguiríem tenir sempre gravades les deu últimes dades.
FC30
E124.0 M0.0 ATT
1 P EN ENO
PEW752 DATA
DB10.DBW0 TABLE
MOVE
CMP==I
2 EN ENO
DB10.DBW0 IN1
0 IN OUT DB10.DBW2
DB10..DBW2 IN2
E12.4 GRAVACIÓ D’UNA TAULA DE DADES (III). ESBORRAT DE DADES. FUNCIÓ FILL
A) -En aquest exercici, podem comprovar com esborrem totes les dades d'una taula.
- (Segment 2 i 3) En accionar el polsador E124.1, carreguem el valor 0 en DBW2 i durant 10 scaner
escrivim el valor 0 en tots els registres de la taula. (DBW2 quedés amb valor 10).
- (Segment 4) En deixar anar el polsador E124.1 posarem a DBW2 al valor 0, de manera que la
taula quedés preparada per poder gravar noves dades.Creació d’un programa per esborrar les
dades.
B) FC31
E124.0 M0.0 ATT
1 P EN ENO
PEW752 DATA
DB10.DBW0 TABLE
0 IN OUT DB10.DBW2
E124.1 ATT
3 EN ENO
W#16#0000 DATA
DB10.DBW0 TABLE
0 IN OUT DB10.DBW2
-Volem guardar el valor d'una entrada analògica i al mateix temps que ens quedi registrat de forma paral ·
lela a quina hora i minut s'ha gravant aquesta dada.
-Per això primer utilitzarem l'DB6 en l'exercici E17.1 (en aquest tenim les dades del rellotge) el DB10 ja usat
anteriorment i a més hem de crear un DB11 on gravar les dades del rellotge.
DB11
Direcció Nom Tipus Valor inicial Comentari
0.0 STRUCT
+0.0 Hora_i_minut ARRAY[1..12] W#16#0
*2.0 WORD
=22.0 END_STRUCT
En el primer registre de la taula, hem d’indicar el nombre de registres que volem gravar. En el nostre cas
són 10 per tant com el format del registre està en hexadecimal haurem de posar W#16#A.
Anar a “Ver” “Datos”
Posar valor W#16#000A en valor actual de la paraula 0.0 Salvar
-Per salvar l'hora i minut haurem de treballar amb DBW3 (DBB3 és l'hora i DBB4 són els minuts)
-En el nostre cas per ser més operatius i poder veure abans els resultats usarem DBW4 (DBB4 són els
minuts i DBB5 són els segons)
FC32
E124.0 M0.0 ATT
1 P EN ENO
PEW752 DATA
DB10.DBW0 TABLE
ATT
EN ENO
DB6.DBW4 DATA
DB11.DBW0 TABLE
M255.4 A125.0
CMP==I
2
DB10.DBW0 IN1
DB10..DBW2 IN2
El OB10, permet interrompre el OB 1 i executar-se en una data determinada o diferents intervals a partir
d'una data determinada.
Es pot programar perquè s'executi en els següents intervals:
Un cop: S’ executarà només una vegada en el moment especificat.
• Cada minut: S’ executarà 1 cop cada minut a partir del moment especificat.
• Cada hora: S’executarà 1 cop cada hora a partir del moment especificat.
• Cada dia: S’ executarà una vegada al dia a partir del moment especificat
• Cada mes: S’ executarà un cop al mes a partir del moment especificat.
• Cada any: S’ executarà un cop l'any a partir del moment especificat
• Al final de mes: S’ executarà una vegada al final del mes a partir del moment especificat.
ADD_I
1 EN ENO
1 IN2
Provar l'exercici transferint el OB10 i en la taula d'estat visualitzar el valor de MW10 en decimal.
Segona forma:
1ª Mitjançant la funció FC3 (D_TOD_DT)de Librerias de Standard Library de IEC Funtión Blocks pasem la
data i hora a la que volem que comenci el OB10 a la variable temporal “hora començar” (definir-la en el OB1
amb format de DATE_AND_TIME)
2º Mijançant la funció SFC28 (SET_TINT) de Librerias de Standard Library de System Funtions Blocks,
indiquem quin és l’OB amb el que volem treballar(OB_NR), a quina hora volem que comenci (SDT) i quina
serà la seva periodicitat (PERIOD) i on va el còdi d’ error (RET_VAL)
PERIOD W#16#0000 = una vegada
W#16#0201 = cada minut
W#16#0401 = cada hora
W#16#1001 = diaria
W#16#1201 = setmanal
W#16#1401 = mensual
W#16#1801 = anual
W#16#2001 = al final del mes
3º Mijançant la funció SFC30 (ACT_TINT)de Librerias de Standard Library de System Funtions Blocks,
activem o desactivem l’ execució de l’OB10.
OB1
D_TOD_DT
EN ENO
TOD#15:23:45.0 IN2
SET_TINT
EN ENO
W#16#201 PERIOD
E124.0 ACT_TINT
EN ENO
ADD_I
EN ENO
1 IN2
OB1
E124.0 M20.0 SRT_D_INT
P EN ENO
T#2S DTIME
W#16#1 SIGN
E124.1 A124.0
R
OB20
SET
= A124.0
• L’OB35, permet interrompre l'execució del OB1 a intervals fixos i ser executat.
• L'interval de temps és respecte al moment que la CPU es posa en RUN.
• Cal assegurar-se que el temps d'execució del programa del OB35 és menor que el temps d'interval
programat com repetició de l'execució de l’OB35.
Configuració de l’OB35:
1º Anar a l’ Administrador Hardware (Picar dues vegades sobre d’ell) Picar dues vegades
sobre CPU Seleccionar la pestanya “Alarmes cicliques” En periodicitat seleccionar cada quant
temps volem que actuï (1 a 60000 ms), posar 125 ms Compilar i transferir el Hardware a la CPU.
OB35
ADD_I
EN ENO
1 IN2
CMP==I MOVE
EN ENO
MW10 IN1
0 IN OUT MW10
256 IN2
Comprovar que amb els bits 0 al 7 de MW10, hem creat generadors d'impulsos (MB11)
Si el temps d'execució del OB35 és de 125 ms
• El M11.0 serà un generador de 0’25 S
• El M11.1 serà un generador de 0’5 S
• El M11.2 serà un generador de 1 S
• El M11.3 serà un generador de 2 S
• El M11.4 serà un generador de 4 S
• El M11.5 serà un generador de 8 S
• El M11.6 serà un generador de 16 S
• El M11.7 serà un generador de 32 S
-El sistema operatiu de la CPU truca a l’OB 121 quan apareix un un error durant l'execució del programa.
-Quan es produeixi un error si en l'automat no està programat l’OB121, el PLC es posa en STOP i
s'il·lumina el led SF
-Quan es produeixi un error si en l'automat aquesta programat l’OB121, el PLC segueix en RUN i
s'il·lumina el led SF.
Exemples: -Dins del programa es diu a un bloc que no va ser carregat en la CPU
- Es numera una entrada o una sortida que no existeix
- Es numera un temporitzador o comptador inexistent
- Error en crida a DB o DB inexistent
- Trucada a un FC no carregat
Hi han dues maneres de localitzar les errades:
- Una és utilitzant les variables temporals del OB121 i desxifrant el que volen dir els valors escrits en ells
- Una altra forma és la d'usar la informació del mòdul (descrita en segon lloc)
MOVE
EN ENO
MOVE
EN ENO
MOVE
EN ENO
MOVE
EN ENO
OB121_SW_FLT
OB121_FLT_REG
En la majoria dels casos indica el nombre de registre afectat (decimal)
OB121_BLK_TYPE
Tipus de bloc en què ha aparegut l'error (en S7-300 no es consigna aquí un valor vigent):
B#16#88: OB
B#16#8A: DB
B#16#8C: FC
B#16#8E: FB
OB121_BLK_NUM (decimal)
Nombre del bloc on ha aparegut l'error
NOTA:-Transferir tots els mòduls a excepció del FC34, i anar localitzant els errors de programació
realitzats.
OB1
E124.0 MOVE
EN ENO
DB2
E124.1 FB 80
EN ENO
E124.2 FC 34
EN ENO
E124.3 FC 100
EN ENO
FC34
E124.5 T1230
SA
T12 A124.1
FC100
E124.7 A1240.6
E124.6 A124.7
DB1
Direcció Nom Tipus Valor inicial Comentari
0.0 STRUCT
0.0 Primer_valor WORD W#16#0
2.0 Segundo_valor WORD W#16#0
4.0 Tercer_valor WORD W#16#0
=6.0 END_STRUCT
DB2
Direcció Nom Tipus Valor inicial Comentari
0.0 STRUCT
0.0 Valor_tiempo_1 WORD W#16#0
2.0 Valor_tiempo_2 WORD W#16#0
4.0 Valor_tiempo_3 WORD W#16#0
=6.0 END_STRUCT
B) Revisió dels errors en el buffer de disgnòstic .. Es farà a l'editor AWL / FUP / KOP
1º Seleccionar “Sistema
de destino”
2º Clicar sobre
”Información del
modulo”
3º Clicar sobre
bufer de
diagnostico
4º En aquesta
casella sortirà
informació sobre
l’error
- Activar l'entrada E124.3 i comprovar a la taula de variables els valors que em donaran les dades de l'error
ocorregut.
Infracció de l’àrea
en escriure
Nombre erroni.
Error ocorregut
Descripció de l’error
Localització de l’error
- Activar l'entrada E124.0 i comprovar a la taula de variables els valors que em donaran les dades de l'error
ocorregut.
Infracció de
l’àrea al llegir.
Nombre erroni.
Error ocorregut
Descripció de l’error
- Activar l'entrada E124.1 i comprovar a la taula de variables els valors que em donaran les dades de l'error
ocorregut.
Accés a un DB
no carregat
Nombre del DB
Error ocorregut
Descripció de l’error
- Activar l'entrada E124.2 i comprovar a la taula de variables els valors que em donaran les dades de l'error
ocorregut.
Accés a un FC
no carregat.
Nombre FC
Error ocorregut
Descripció de l’error
- Transferir el FC34 al PLC i activar de nou l'entrada E124.2 i comprovar a la taula de variables els valors
que em donaran les dades de l'error ocorregut.
Error en direcció
d’un temporizador
Nombre erroni.
Error ocorregut
Descripció de l’error