Professional Documents
Culture Documents
Controlador digital
Red de µcontroladores
2
Puerto serie
3
Puerto serie
4
Puerto serie
5
Puerto serie
6
Puerto serie
7
Puerto serie
8
Puerto serie
C2 C1
33pF 33pF
X1 U1
RXD
19 39
XTAL1 P0.0/AD0
38
P0.1/AD1 TXD
37
CRYSTAL P0.2/AD2
18 36
12 MHz XTAL2 P0.3/AD3 RTS
35
+5V P0.4/AD4
34
P0.5/AD5 CTS
33
P0.6/AD6
9 32
RST P0.7/AD7
21 C4
C7 P2.0/A8
22
P2.1/A9
R1 P2.2/A10
23
8.2k 29 24 10uF
PSEN P2.3/A11
10uF 30 25
31
ALE P2.4/A12
26 1 3 U2
EA P2.5/A13
27
P2.6/A14
28
P2.7/A15 C1+ C1-
1 10 11 14 J1
P1.0 P3.0/RXD T1IN T1OUT
2 11 12 13 1
P1.1 P3.1/TXD R1OUT R1IN
3 12 10 7 6
P1.2 P3.2/INT0 T2IN T2OUT
4 13 9 8 2
P1.3 P3.3/INT1 R2OUT R2IN
5 14 7
P1.4 P3.4/T0
6 15 2 3
P1.5 P3.5/T1 VS+
7 16 6 8
P1.6 P3.6/WR VS-
8 17 4
P1.7 P3.7/RD
9
C2+ C2-
80C51 5
C6 C5
4 5 MAX232 10uF 10uF CONN-D9M
C3
10uF
9
Puerto serie
C2 C1
33pF 33pF
X1 U1
RXD
19 39
XTAL1 P0.0/AD0
38
P0.1/AD1 TXD
37
CRYSTAL P0.2/AD2
18 36
12 MHz XTAL2 P0.3/AD3 RTS
35
+5V P0.4/AD4
34
P0.5/AD5 CTS
33
P0.6/AD6
9 32
RST P0.7/AD7
21 C4
C7 P2.0/A8
22
P2.1/A9
R1 P2.2/A10
23
8.2k 29 24 10uF
PSEN P2.3/A11
10uF 30 25
31
ALE P2.4/A12
26 1 3 U2
EA P2.5/A13
27
P2.6/A14
28
P2.7/A15 C1+ C1-
1 10 11 14 J1
P1.0 P3.0/RXD T1IN T1OUT
2 11 12 13 1
P1.1 P3.1/TXD R1OUT R1IN
3 12 10 7 6
P1.2 P3.2/INT0 T2IN T2OUT
4 13 9 8 2
P1.3 P3.3/INT1 R2OUT R2IN
5 14 7
P1.4 P3.4/T0
6 15 2 3
P1.5 P3.5/T1 VS+
7 16 6 8
P1.6 P3.6/WR VS-
8 17 4
P1.7 P3.7/RD
9
C2+ C2-
80C51 5
C6 C5
4 5 MAX232 10uF 10uF CONN-D9M
C3
10uF
10
Controlador PID
Programa 15
Programar un controlador proporcional integral para la planta con función
de transferencia
2
G( s)
( s 1)( s 2)
11
Controlador PID
El controlador PID
Existen varias versiones de PID, todas ellas basadas en la estructura
original del PID continuo, cuya salida tiene la transformada de Laplace de la
ec. 2.
1 t de(t)
u(t) K p e(t)
Ti
0
e( )d TD
dt
(1)
1
U(s) K p (1 TDs)E(s) (2)
Ts
i
12
Controlador PID
Modelos discretos del PID
1. Algoritmo de posición.
Calcula el valor absoluto de la señal de control uk. Una nueva acción de
control es realizada cada ciclo de muestreo.
2. Algoritmo de velocidad.
Calcula cambios incrementales del esfuerzo de control uk. Se usa el
valor anterior uk-1 como una referencia. Es apropiado para procesadores
con palabra de longitud corta.
13
Controlador PID
Algoritmo de posición
La expresión la para la señal de control es:
I (t )
u( t ) K p P ( t ) TD D(t )
Ti
I
U k K P ( Pk k TD Dk )
Ti
Aproximación de Pk
Pk ( rk yk ) ek
14
Controlador PID
Aproximación I k
dI
e
dt
Usando diferencia hacia atrás para aproximar la derivada
I k I k 1
ek
T
Resulta la ecuación recursiva
I k I k 1 T ek
15
Controlador PID
Acción derivativa
ek ek 1
Dk
T
1 ek ek 1
uk K P ek I k TD
Ti T
16
Controlador PID
Definiendo:
1
sk Ik
T
Haciendo:
T TD
Ki KP KD KP
Ti T
Se obtiene
s k sk -1 ek
El algoritmo de posición:
uk K P ek K i sk K D (ek ek 1 ) ~
17
Controlador PID
El siguiente seudocódigo realiza la ley de control PID
Procedimiento PID(Kp,Ki,Kd);
s=e1=0; Inicializa sk-1, ek-1
Repetir lazo
LEER(r,y); Leer convertidor A/D
e=(r-y);
s=s+e; sk=sk-1+ek
u=Kp*e+Ki*s+Kd*(e-e1); Calcular nuevo comando de control
e1=e
ESCRIBIR(u) Escribir a convertidor D/A
Fin lazo
18
Controlador PID
Algoritmo de posición
La transformada z de la ecuación 2 es:
U (z) T (1 z 1 )
K P 1 1
TD
E(z) Ti (1 z ) T
Expandiendo
T K T
uk uk uk -1 K P [ek - ek -1 ] K P ek P D [ek 2ek 1 ek 2 ]
Ti T
T T T T
uk K P (1 D ) ek (1 2 D ) ek 1 D ek 2 ~
Ti T T T
19
Controlador PID
El siguiente seudocódigo realiza la ley de control PID
Procedimiento PID(Kp,Ti,Td);
K1=Kp*(1+T/Ti+Td/T);
K2=-Kp*(1+2*Td/T);
K3=Kp*Td/T);
u=e1=e2=0; Inicializa u, ek-1, ek-2
Repetir lazo
LEER(r,y); Leer convertidor A/D
e=(r-y);
u=u+ K1*e+K2*e1+K3·*e2; Calcular nuevo comando de control
e2=e1;
e1=e;
ESCRIBIR(u) Escribir a convertidor D/A
Fin lazo
20
Controlador PID
Controlador PI
Para un controlador PI el término derivativo es cero. Si además el valor de
la referencia no es leído por el convertidor A/D, sino que es constante y
entrada del programa, se tiene:
T
uk uk -1 K P [ yk 1 - yk ] K P ( r yk )]
Ti
Con
T
Ki KP
Ti
uk uk -1 K P [ yk 1 - yk ] K i ( r yk )] ~
21
Controlador PID
El siguiente seudocódigo realiza la ley de control PI
Procedimiento PI(r,Kp,Ki);
u=y1=0; Inicializa u, yk-1
Repetir lazo
LEER(y); Leer convertidor A/D
yp=y1-y
e=(r-y);
u=u+ Kp*yp+Ki*e; Calcular nuevo comando de control
y1=y;
ESCRIBIR(u) Escribir a convertidor D/A
Fin lazo
22
Controlador PI
Ki Kd s
U (s) K p E p (s) E ( s) Ed (s)
s i Td
s 1
N
23
Controlador PI
uPk ( yk 1 - yk ) K P _ num K P _ den
uik ( r - yk ) K i _ num K i _ den
uk uk uk -1 uPk uik
uk uk 1 uk
24
Controlador PI
25
Controlador PI
26
Controlador PI
27
Controlador PI
28
Controlador PI
29
Controlador PI
30
Controlador PI
31
C2 C3
33pF 33pF
X1 U1
19 39
XTAL1 P0.0/AD0
38
12 MHz P0.1/AD1
Controlador PI
37
CRYSTAL P0.2/AD2
18 36
XTAL2 P0.3/AD3
35
+5V P0.4/AD4
34
RESET C4 P0.5/AD5
33
P0.6/AD6
9 32
RST P0.7/AD7
10uF 21
P2.0/A8
22 start
D1 R4
P2.1/A9
23
P2.2/A10
29 24
PSEN P2.3/A11
30 25
10k ALE P2.4/A12
1N914 31 26
EA P2.5/A13
27
P2.6/A14
28
+5V P2.7/A15
1 10
P1.0 P3.0/RXD
2 11
P1.1 P3.1/TXD
3 12
P1.2 P3.2/INT0
4 13
P1.3 P3.3/INT1
5 14
P1.4 P3.4/T0
6 15
P1.5 P3.5/T1
7 16 EOC
P1.6 P3.6/WR
8 17
P1.7 P3.7/RD
y
80C51
PROTEUS
1
IN2
7 U3 R1
5k
IN3 EOC
2 5 14
IN4 A1 VREF+
3 21 6 R2 u
IN5 OUT1 A2 5k
4 20 7 15
5
IN6 OUT2
19 8
A3 VREF- H1
IN7 OUT3 A4 5k
18 9 4
OUT4 A5 IOUT N2.p² + N1.p + N0
25 8 10 K.
ADD A OUT5 A6
24 15 11 16 D2.p² + D1.p + D0
ADD B OUT6 A7 COMP
23 14 12 3
ADD C OUT7 A8 VEE
22 17 2° ORD : POLY
ALE OUT8
DAC0808 C1
12
16
VREF(+)
9
0.1u PLANTA
VREF(-) OE
ADC0808
-12V
CONTROL PI
p[0..7]
p0
p1
p2
p3
p4
p5
p6
p7
p[0..7]
32
Ref=2.0
Controlador PI
33
Ref=1.0
Controlador PI
34
Ref=1.0
Controlador PI
35
Ref=1.0
Controlador PI
36
Ref=1.0
Controlador PI
37
C3
33pF
X1
C2
33pF
U2 U1 R1
+5V
R3
5k
Controlador PI
19 39 5 14
XTAL1 P0.0/AD0 A1 VREF+
38 6 y1
12 MHz P0.1/AD1
37 7
A2
15
R2 5k
CRYSTAL
18
P0.2/AD2
36 8
A3 VREF- H1
XTAL2 P0.3/AD3 A4 5k
35 9 4
+5V P0.4/AD4 A5 IOUT N2.p² + N1.p + N0
34 10 K.
C4 P0.5/AD5
33 11
A6
16 D2.p² + D1.p + D0
y1
P0.6/AD6 A7 COMP
9 32 12 3
RST P0.7/AD7 A8 VEE
2° ORD : POLY
10uF
P2.0/A8
21 DAC0808 C1
22 0.1u
D1 R4
P2.1/A9
23
P2.2/A10
29 24
PSEN P2.3/A11
30 25
10k ALE P2.4/A12
1N914 31 26
EA P2.5/A13
27
P2.6/A14
28
+5V P2.7/A15
-12V
1 10
P1.0 P3.0/RXD Rx
2 11
P1.1 P3.1/TXD Tx
3 12
P1.2 P3.2/INT0
4 13
P1.3 P3.3/INT1 +5V
5 14 R7
P1.4 P3.4/T0
6 15
P1.5 P3.5/T1 start
7 16
8
P1.6 P3.6/WR
17
eoc U4 R5
5k
P1.7 P3.7/RD sel
5 14
A1 VREF+
80C51 6 y2
7
A2
15
R6 5k
8
A3 VREF- H?
A4 5k
9 4
A5 IOUT N2.p² + N1.p + N0
10 K.
A6 y2
11 16 D2.p² + D1.p + D0
A7 COMP
12 3
A8 VEE
2° ORD : POLY
Tx
U3(CLOCK) DAC0808 C5
0.1u PLANTA
Rx
U3
26 10
y1 IN0 CLOCK
27 6
y2 IN1 START start
28
IN2
1 7
IN3 EOC eoc -12V
sel 2
IN4
3 21
IN5 OUT1
4 20
IN6 OUT2
5 19
IN7 OUT3
18
OUT4
25 8
sel ADD A OUT5
24 15
ADD B OUT6
23 14
ADD C OUT7
22 17
ALE OUT8
12
VREF(+)
16 9
VREF(-) OE
ADC0808
CONTROL PI
38
Controlador PI
39
C3
33pF
X1
C2
33pF
U2 U1 R1
+5V
R3
5k
Controlador PI y1
19 39 5 14
XTAL1 P0.0/AD0 A1 VREF+
38 6 R2
12 MHz P0.1/AD1 A2 5k
37 7 15
CRYSTAL
18
P0.2/AD2
36 8
A3 VREF- H1 y1
XTAL2 P0.3/AD3 A4 5k
35 9 4
+5V P0.4/AD4 A5 IOUT 1 + Tn.p
C4 P0.5/AD5
34 10
A6 K. SUM1
33 11 16 1 + Td.p V(A)+V(B)
P0.6/AD6 A7 COMP VA+VB
9 32 12 3
RST P0.7/AD7 A8 VEE
1° ORD : POLY 1
10uF 21 DAC0808 C1 H2
P2.0/A8 start
22 0.1u
D1 R4
P2.1/A9
23
eoc
K.
1 + Tn.p
P2.2/A10 sel
29 24 1 + Td.p
PSEN P2.3/A11
30 25
10k ALE P2.4/A12
1N914 31 26 1° ORD : POLY 1
EA P2.5/A13
27
P2.6/A14
28
+5V P2.7/A15
-12V
1 10
2
P1.0 P3.0/RXD
11 H4
P1.1 P3.1/TXD
3 12
P1.2 P3.2/INT0 1 + Tn.p
4 13 K.
P1.3 P3.3/INT1 +5V
5 14 y2
6
P1.4 P3.4/T0
15
R7 1 + Td.p
P1.5 P3.5/T1
7 16 1° ORD : POLY 1
8
P1.6 P3.6/WR
17 U4 R5
5k
P1.7 P3.7/RD
5 14
A1 VREF+ y2
80C51 6
7
A2
15
R6 5k
8
A3 VREF- H3 SUM2
A4 5k
9 4 V(A)+V(B)
A5 IOUT 1 + Tn.p VA+VB
10 K.
A6
11 16 1 + Td.p
A7 COMP
12 3
A8 VEE
1° ORD : POLY 1
U3(CLOCK) DAC0808 C5
0.1u PLANTA
U3
26 10
y1 IN0 CLOCK
27 6
y2 IN1 START start
28
IN2
1 7
IN3 EOC eoc -12V
sel 2
IN4
3 21
IN5 OUT1
4 20
IN6 OUT2
5 19
IN7 OUT3
18
OUT4
25 8
sel ADD A OUT5
24 15
ADD B OUT6
23 14
ADD C OUT7
22 17
ALE OUT8
12
VREF(+)
16 9
VREF(-) OE
ADC0808
CONTROL MULTIVARIABLE
40
Controlador PI
41
Red de µcontroladores
Red de µcontroladores
La principal aplicación de una red de microcontroladores es realizar un
sistema distribuido funcional, el cual es dirigido por un computador de
mayor nivel. Un programa desarrollado en ambiente Windows o Linux, con
soporte gráfico, supervisa cada nodo de la red presentando la información
correspondiente en forma de texto o usando gráficas.
Cuando un problema de control no puede ser resuelto con la participación
de un único procesador, debe considerarse el uso de instrumentación
distribuida. Tal técnica hace posible seccionar el problema en tareas,
asignando una tarea particular a cada µCtrl, de modo que con la
contribución de varios elementos de procesamiento se resuelve un
problema único.
42
Red de µcontroladores
Topología de la red
Cuando se trata de redes de µCtrls, las topologías más apropiadas y
sencillas de realizar son: cadena margarita y bus común.
43
Red de µcontroladores
Convertidor RS-232 (Puerto COM PC) a RS-485 ( Red)
44
Red de µcontroladores
Nodos de la red
45
Red de µcontroladores
Adaptadores de señales
Todos los microcontroladores en los nodos usan dos transceptores RS-485 los
cuales se encargan de convertir los niveles TTL a la salida del canal serie del µCtrl
a señales diferenciales aceptadas la red (y viceversa), para la transferencia de
datos a través del bus común.
A la salida del puerto serie del PC se tienen señales con niveles RS-232 (±12V).
Cuando la información viaja desde el PC hacia la red el primer paso es convertir
las señales RS-232 a niveles TTL. Esto es realizado por el circuito MAX232.
Al obtenerse estos niveles, son aplicados al driver RS-485 el cual convertirá éstos
al voltaje diferencial apropiado. El proceso de recepción de datos desde los nodos
hacia el PC es inverso al descrito anteriormente. El circuito adaptador MAX487E
consiste de dos drivers RS-485, uno para transmitir y el otro para recibir.
46
Red de µcontroladores
47
Red de µcontroladores
Comunicación a dos cables
48
Red de µcontroladores
Comunicación a cuatro cables
49
Red de µcontroladores
Uso de par torcido
50
Red de µcontroladores
51
Red de µcontroladores
52
Red de µcontroladores
• La información se traslada por la red en forma de señales eléctricas
diferenciales. Al usar señales diferenciales el bus es menos sensible a la
interferencia electromagnética, y además se pueden alcanzar grandes
distancias en comparación con RS-232.
• Mayor velocidad de transmisión que RS-232.
• El formato hace posible que los nodos sean microcontroladores, PC o
cualquier dispositivo capaz de realizar comunicación asincrónica serie.
• Los sistemas de comunicación como RS-232, los cuales transmiten datos
en forma de señales eléctricas cuyo valor se toma usando la tierra como
referencia, se conocen como sistemas no balanceados.
53
Red de µcontroladores
• Los sistemas balanceados, tipo RS-485, transmiten los datos como
señales de tensión a través de dos conductores. El receptor diferencial
evalúa el voltaje presente en la línea para determinar si es un 1 ó un 0.
Aunque el sistema balanceado tiene una tierra para referencia, esta no
es usada para determinar el valor del bit recibido.
• Usando un bus auxiliar puede realizarse comunicación full duplex. La
conmutación entre los modos de comunicación half y full duplex se
realiza por programa.
54
Red de µcontroladores
Protocolos de comunicación
La mayoría de los microcontroladores tienen un UART interno que hace
posible la comunicación asincrónica serie por hardware. El UART se usa el
formato serie común a RS-232 para realizar la transmisión. Esto es un de
arranque en nivel bajo, 7 u 8 bits de datos y 1 ó 2 bits de parada con nivel
alto. Debido a esto, sobre este esquema se ejecuta el protocolo de
transmisión.
El protocolo de comunicación especifica las reglas para la recepción y
transmisión de información entre los nodos de la red. De modo que para
que dos nodos puedan comunicarse, deben ejecutar el mismo protocolo.
Usualmente se usa la técnica Maestro-Esclavo. El PC inicia la transmisión
sobre el bus y todos los nodos esclavos escuchan. 55
Red de µcontroladores
56
Red de µcontroladores
La transferencia de información, independientemente de la topología de la
red, es realizada por medio de mensajes que pueden ser de longitud fija o
variable. El la figura se muestra un ejemplo de un protocolo de longitud fija.
57
Red de µcontroladores
58
Red de µcontroladores
El primer byte (‘<‘ ) indica que el maestro inicia una transferencia sobre el
bus. El siguiente byte indica el número de identificación del nodo a recibir el
mensaje. El tercer byte distingue el tipo de comando enviado por el maestro
y el cuarto es un dato que tiene sentido en caso de una acción de escritura.
En una lectura este byte es desechado por el esclavo. El byte que continúa
es el de verificación por suma total de errores en la transmisión. El mensaje
culmina con el byte de fin de transmisión (`>’).
Para que cada nodo realice con eficiencia la tarea que le fue asignada, la
transferencia de información se realiza usando la técnica de interrupciones.
No obstante de acuerdo con la naturaleza del trabajo que ejecuta, un nodo
particular puede usar un método de consulta para detectar el inicio de una
transferencia sobre el bus.
59
Red de µcontroladores
La figura muestra un ejemplo de un mensaje con longitud variable.
60
Red de µcontroladores
El byte uno del mensaje identifica al nodo a recibir la información y el 2do es
el número del nodo que está enviando el mensaje. El tercer byte
corresponde a la longitud del mensaje. Normalmente los µCtrls están
realizado su tarea particular asignada en el sistema distribuido. El momento
que se presenta un mensaje en el bus, todos los nodos lo escuchan y
deben estar en capacidad de distinguir si los datos cuta transmisión
progresa van dirigidos a ellos o no.
En el momento que un mensaje nuevo llega a la entrada serie de los
µCtrls, ocurre una interrupción del puerto serie correspondiente. Como
respuesta, los µCtrls ejecutan una rutina de interrupción. Cuando el 3 er
byte es recibido, cada nodo verifica si el mensaje está dirigido a ellos. Si la
dirección le corresponde, el nodo deberá recibir el número de bytes del
mensaje, indicado en la tercera localidad del buffer de recepción, donde la 61
longitud del mensaje fue almacenada.
Red de µcontroladores
62
Red de µcontroladores
63
Red de µcontroladores
La secuencia de operación correspondiente al diagrama de flujo de la
RSI, es la siguiente:
1. En el momento que el primer byte del mensaje es enviado, todos los
nodos lo reciben porque el programa principal en ejecución es
interrumpido y se ejecuta la RSI. El procesador almacena este dato en
la posición 1 del buffer de recepción y el contador, el cual es una
posición de memoria usada para determinar el momento cuando los tres
primeros bytes han sido recibidos, es incrementado (inicialmente el
contador es puesto a cero).
2. El segundo byte es el número del nodo que envía el mensaje y es
almacenado en la posición 2 del buffer. El contador es incrementado en
1. El byte 3 indica la longitud del mensaje. Cuando es recibido es
cargado en la siguiente posición y el contador es incrementado. 64
Red de µcontroladores
En este momento el valor del contador es igual a 3, el nodo deberá
determinar si el mensaje es para él, comparando su número con el
contenido de la posición 1 del buffer de recepción. Si estos son iguales
significa que el nodo es el receptor del mensaje, una bandera_1 será
puesta a 1, que indicará que los datos subsiguientes (cantidad indicada
por el contenido de la posición 3 del buffer) serán almacenados en
posiciones consecutivas. Si el mensaje no es para el nodo, los bytes
restantes del mensaje serán ignorados. En este momento una bandera
indica que ´se está transmitiendo un mensaje.
3. Cuando un nuevo dato llega, el nodo verifica si un mensaje está siendo
recibido (examinando la bandera correspondiente). Si es así, el paso
siguiente es verificar si este mensaje debería ser tomado en cuenta
examinando el estado de la bandera_1. 65
Red de µcontroladores
Cuando es recibido un dato, el contenido de la posición 3 (longitud del
mensaje) es disminuido en 1.
4. Finalmente, en ambos casos, cuando se recibe el último byte del
mensaje (localidad 3 =0), y la detección de error ha sido realizada, se
activa la bandera_2 para notificar al programa principal que el mensaje
ha concluido y las banderas y contadores son reiniciados en espera de
la llegada de un nuevo mensaje.
66
Red de µcontroladores
Programa 16
67
Red de µcontroladores
68
Red de µcontroladores
FUNCIONES DEL MAESTRO
1. Presenta en la pantalla del terminal el siguiente menú:
'*******SISTEMA DE SUPERVISION DE DATOS******* '
--------------------------------------------------------
[I] Iniciar adquisición
[G] Girar motor a la derecha
[A] Girar motor a la izquierda
[P] Parar motor
[ESC] Salir
---------------------------------------------------------
I
Envía mensajes a cada RTU solicitando la transferencia de:
RTU 1: Voltaje DC RTU 2: Temperatura RTU 3 :Estado de interruptores 69
Red de µcontroladores
FUNCIONES DEL MAESTRO
A
Si el motor está parado, lo arranca con giro en sentido horario.
Si el motor está en operación, fija la dirección de rotación.
G
Si el motor está parado, lo arranca con giro en sentido
antihorario. Si el motor está en operación fija, la dirección de rotación.
P
Para el motor.
70
Red de µcontroladores
71
Red de µcontroladores
FUNCIONES DE LOS ESCLAVOS
RTU 1
Adquiere y mide una tensión DC. Envía el valor de la medida en BCD,
cuando sea solicitado por el maestro.
RTU 2
Usa un NTC para medir temperatura en el rango -10 ºC≤T≤50 ºC. Envía el
valor de la medida en BCD cuando sea solicitado por el maestro.
RTU 3
Arranca, para y fija el sentido de giro de un motor cuando sea ordenado por
el maestro. Envía el estado de 8 interruptores conectados a un puerto de
entrada, cuando lo solicite el maestro. 72
RTU1 RTU2 RTU3
SUB1
SUB2 SUB3
MEDIDOR DE
+5V
MEDIDOR DE
Red de µcontroladores M+
+5V
CONTROL DE M-
7
C P5
P6 s0
DIAGRAMA DE LA RED DE s0
s1
CCT001 P7
s1
RTU2
S0
s0
s1
RTU3
µCONTROLADORES
RS485
s0
s0
S1
s0
S1
SUB4
s0
s1
MAESTRO
RXD_term
TTL RXD
TXD
TXD_term
RTS
Programas de aplicación
Este es un ejemplo muy sencillo de una red y en consecuencia el software
es simple.
Al inicio el maestro presenta el menú en el terminal y espera por una orden.
Si la selección es adquirir, el maestro ejecutará transferencias periódicas
sobre el bus solicitando a cada RTU que envíe sus datos. Solo existen dos
comandos: enviar: la RTU transfiere sus datos al maestro y recibir: la RTU3
acepta funciones de control del motor.
74
Red de µcontroladores
75
Red de µcontroladores
En este caso usamos un 8051 como maestro y aceptamos que su único
trabajo consiste en el proceso comando/respuesta.
En el caso de las RTU 1 y 2, el panorama es diferente. Cada uno de estos
nodos ejecuta una tarea continuamente y no pueden estar escuchando el
bus en espera de un mensaje ni deberían mantenerse muchos
milisegundos transmitiendo información. Para estos nodos se programa
una comunicación basada en la interrupción del puerto serie.
Cada nodo realiza su tarea y cuando llega al puerto serie el bit de parada
de un caracter, el 8051 es interrumpido y si es el encabezado de un
mensaje se carga en un buffer circular (tamaño 4), donde se almacenan los
datos siguientes del mensaje.
76
Red de µcontroladores
77
Red de µcontroladores
78
Red de µcontroladores
79
Red de µcontroladores
U12
s1
1 7
RO B
C12 C11
33pF 33pF MAESTRO 2
RE R11
120
X4 U10
3
DE
19 39 4 6
XTAL1 P0.0/AD0 DI A
38
P0.1/AD1 s0
37 MAX487
CRYSTAL P0.2/AD2
18 36
XTAL2 P0.3/AD3
35
+5V P0.4/AD4
34
C13 P0.5/AD5
33
P0.6/AD6
9 32
RST P0.7/AD7
10uF 21
P2.0/A8
22
D4 R12
P2.1/A9
23 U11:A
P2.2/A10
29 24 74125
PSEN P2.3/A11
10k 30 25
ALE P2.4/A12
1N914 31 26 2 3
EA P2.5/A13 RXD_term
27
P2.6/A14
28
P2.7/A15
1
1 10
+5V P1.0 P3.0/RXD
2 11
P1.1 P3.1/TXD
3
P1.2 P3.2/INT0
12 U11:B
4 13 74125
P1.3 P3.3/INT1
5 14
P1.4 P3.4/T0
6 15 6 5
P1.5 P3.5/T1 TXD_term
7 16
P1.6 P3.6/WR
8 17
P1.7 P3.7/RD
4
80C51
80
C4 C1
Red de µcontroladores
33pF 33pF
X2 U2
19 39
XTAL1 P0.0/AD0
38
P0.1/AD1
37
CRYSTAL P0.2/AD2
18 36
12 MHz XTAL2 P0.3/AD3
35
+5V P0.4/AD4
34
C10 P0.5/AD5
33
P0.6/AD6
9 32
RST P0.7/AD7
10uF 21
P2.0/A8
22
D1 R9
P2.1/A9
23
29
P2.2/A10
24 U9
PSEN P2.3/A11 s1
30 25 1 7
10k ALE P2.4/A12 RO B
1N914 31 26
EA P2.5/A13
P2.6/A14
27 2
RE R7
28 120
+5V P2.7/A15
3
DE
1 10
P1.0 P3.0/RXD
2 11 4 6
P1.1 P3.1/TXD DI A
3 12
P1.2 P3.2/INT0 s0
4 13 MAX487
P1.3 P3.3/INT1
5 14
P1.4 P3.4/T0
6 15
P1.5 P3.5/T1
7 16
P1.6 P3.6/WR
8 17
P1.7 P3.7/RD
80C51
U6 U6(CLOCK)
26 10
V IN0 CLOCK
27 6
IN1 START
28
IN2
1 7
IN3 EOC
2
IN4
3 21
IN5 OUT1
4 20
IN6 OUT2
5 19
IN7 OUT3
18
OUT4
25 8
ADD A OUT5
24 15
ADD B OUT6
23 14
ADD C OUT7
22 17
RTU 1
ALE OUT8
12
VREF(+)
16 9
VREF(-) OE
ADC0808
81
p[0..7]
p1
p2
p3
p0
p4
p5
p6
p7
p[0..7]
C5 C4
33pF 33pF
X2
19
U4
39 Red de µcontroladores
RTU 2
XTAL1 P0.0/AD0
38
P0.1/AD1
37
CRYSTAL P0.2/AD2
18 36
12 MHz XTAL2 P0.3/AD3
35
+5V P0.4/AD4
34
RESET2 C7 P0.5/AD5
33
P0.6/AD6
9 32
RST P0.7/AD7
10uF 21
P2.0/A8
22
D2 R5
P2.1/A9
23
P2.2/A10
29 24
30
PSEN P2.3/A11
25 U6
10k ALE P2.4/A12 s1
1N914 31 26 1 7
EA P2.5/A13 RO B
27
P2.6/A14
28 2
P2.7/A15 RE
1 10 3
+5V P1.0 P3.0/RXD DE
2 11
P1.1 P3.1/TXD
3 12 4 6
P1.2 P3.2/INT0 DI A
4 13
P1.3 P3.3/INT1 s0
5 14 MAX487
P1.4 P3.4/T0
6 15
P1.5 P3.5/T1
7 16
P1.6 P3.6/WR
8 17
P1.7 P3.7/RD
80C51
+5V
+3.33V +5V
R3 Q1
2N3904
1k R4
U5 2.2k
4
5
6
3
7
2
C6
1uF
8
1
LM111
82
+5V
Red de µcontroladores
U9
s1
1 7
RTU 3
RO B
2
RE
C9 C8 3
DE
RTU3
33pF 33pF
4 6
DI A
X3 U8 s0
MAX487
+12V
19 39
XTAL1 P0.0/AD0
38
P0.1/AD1
37
CRYSTAL P0.2/AD2
18 36
XTAL2 P0.3/AD3
35
+5V P0.4/AD4
34
RESET3 C10 P0.5/AD5
33
P0.6/AD6
9 32
RST P0.7/AD7
U7:A Q3
10uF
P2.0/A8
21 R8 Q2 U7:C
22 1 2 2N6609 R9
D3 P2.1/A9
R10 23 6 5
P2.2/A10 1k
29 24
PSEN P2.3/A11 7406 1k
30 25
10k ALE P2.4/A12 7406
1N914 31 26
+5V
EA P2.5/A13
27 2N6609
P2.6/A14
28
P2.7/A15
1 10
P0 P1.0 P3.0/RXD
2 11
P1 P1.1 P3.1/TXD
P2
3
P1.2 P3.2/INT0
12 R6
4 13 1k
P3 P1.3 P3.3/INT1
P4
5
P1.4 P3.4/T0
14 R7
6 15 1k
P5 P1.5 P3.5/T1 M+ M-
7 16
P6 P1.6 P3.6/WR
8 17
P7 P1.7 P3.7/RD
80C51
Q5
U7:B U7:D
Q4
3 4 2N3055 8 9
7406 7406
2N3055
83
Red de µcontroladores
84
MAESTRO
85
MAESTRO
86
MAESTRO
87
MAESTRO
88
MAESTRO
89
MAESTRO
90
MAESTRO
91
MAESTRO
92
MAESTRO
93
RTU1
94
RTU1
95
RTU1
96
RTU1
97
RTU1
98
RTU1
99
RTU1
100
RTU1
101
RTU3
102
RTU3
103
RTU3
104
105
106