You are on page 1of 106

Complemento del puerto serie

Controlador digital
Red de µcontroladores

Por Luis D. Urdaneta G.


1
Puerto serie
Programa 14
Escribir un programa que presente el siguiente menú en la pantalla.

2
Puerto serie

Al pulsar la tecla <ENTER> se podrá realizar una nueva selección. La


velocidad de transmisión es de 9600 baudios.

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)

• El periodo de muestreo es de 0.460 segundos.


• Para generar el tiempo de muestreo use la interrupción de T0.

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

La señal de control tiene la forma:

 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

Modificación de la estructura PID

Ki Kd s
U (s)  K p E p (s)  E ( s)  Ed (s)
s i Td
s 1
N
23
Controlador PI

Algoritmo PI a programar en ensamblador


con aritmética de punto fijo.

 
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

La rutina DESB usada en la suma final debe verificar si ocurre desborde.


Finalmente debe chequearse los límites maximo y minimo a escribir en el CDA

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

Simulación del control PI con


26
27
28
U2
IN0
IN1
CLOCK
START
10
6
U2(CLOCK)
+5V
R3

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

El estándar RS-485 tiene como características:


• Permite la comunicación multipunto.
• Hasta 32 nodos pueden conectarse a la red sin repetidoras.
• La comunicación se realiza a través de un par de cables (par torcido) y
una tierra de referencia.
• Usualmente se usa un maestro, el cual es el único que puede iniciar una
transferencia sobre el bus. No obstante todos los µCtrls pueden tener la
capacidad de transmitir. Solo un dispositivo puede transmitir a la vez.

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

El PC es el maestro y cuando inicia una transferencia sobre el bus todos


los nodos esclavos escuchan. Cuando un nodo determina que el mensaje
en curso está dirigido a él, espera el final de la transmisión del maestro y le
envía a este los datos solicitados o realiza una acción especificada por el
mensaje desde el maestro. Esto se conoce en forma general como
protocolo Comando/Respuesta.
Uno de los puntos críticos en el establecimiento de una red RS-485 es el
control de las líneas de habilitación de los drivers. Antes de transmitir, un
driver debe asegurase que el amo anterior del bus ha sido deshabilitado.

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.

Formato de los mensajes entre el maestro y los nodos esclavos

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

La estructura de la RSI es la misma para todos los µCtrls.


• Mientras no se transfiera información sobre el bus, todos los
procesadores se dedican a ejecutar la tarea que se les asigno en el
sistema distribuido.
• Todos los nodos tienen un buffer donde se almacena la información que
deben transmitir cuando sean autorizados. Además existe un buffer de
recepción de información en cada nodo.
• Cuando no hay actividad en la red, las banderas y contadores que ayudan
al proceso de recepción son inicializados.

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

Se realizará una red de microcontroladores 8051 con 4 nodos: un maestro y


tres esclavos (unidades remotas: RTU). Para simplificar la simulación, el
maestro será un 8051 conectado a un terminal de datos para permitir la
entrada de información y la presentación de resultados.
Los buffer tri-estados garantizan que el terminal sólo se comunica con el
maestro. Se supone que el terminal acepta niveles TTL. Si no es así o se
usa un PC como terminal, deben incluirse un circuito MAX232 para la
conversión de niveles.

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-

TENSIÓN RT1 TEMPERATURA


-tc 10.0k MOTOR
SW5
s1 s1 P0
RV1
47K
V
s0
T
s0 9
C P1
P2
P3
SW1
P4 s1

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

RED DE µCONTROLADORES CTS 73


CCT002
Red de µcontroladores

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

Cuando el maestro envía un mensaje a una RTU, espera hasta cuando


ésta responda. Al recibir la información, la presenta en pantalla e interroga
a la siguiente RTU y de nuevo espera por respuesta. Este proceso se
cumple en forma cíclica hasta cuando el operador pulse la tecla <ESC>;
momento en el cual cesan las consultas a la s RTUs y se despliega el
menú en pantalla. Si la selección es una función de control del motor, se
transmite el mensaje correspondiente a la RTU3 y se regresa al menú.
Este modo de operación es ineficiente en extremo, debido a que mantiene
ocupado permanentemente al maestro aún cuando esté esperando
respuesta de los nodos. Si el maestro fuese un PC debe usarse la técnica
de interrupciones para la comunicación.

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

Cuando el 8051 detecta que ha llegado un mensaje completo, lo procesa y


procede en correspondencia.
La transmisión de la respuesta también está basada en inte-rrupciones. La
información que sale de la RTU1 o RTU2, es cargada en un buffer de
transmisión con tamaño:
RTU1: 1.48 V son 4 bytes; RTU2: +37.5 C son 5 bytes

El 8051 inicia la salida de datos escribiendo el primer carácter de la


respuesta en el UART y los siguientes bytes se transmiten por
interrupciones.

77
Red de µcontroladores

Si el procesador tuviese que examinar continuamente el bus, solo realizaría


la medida cuando se estén recibiendo mensajes. Usando interrupciones el
CPU no se ocupa de esperar por los bytes de un mensaje ni se mantiene
atento por la transmisión de un carácter para enviar el otro.
De este modo el 8051 dedica pocos µs de tiempo de CPU a la
transmisión/recepción de datos en lugar de los miles de µs que
representan la comunicación por consulta de TI y RI. Esto significa que el
8051 dedica la mayor parte de su tiempo o a realizar la tarea que le fue
asignada en la red.

78
Red de µcontroladores

La naturaleza de la tarea que ejecuta la RTU3 hace innecesario el uso de


interrupciones para la comunicación. El arranque o parada del motor solo
se realiza cuando los solicite el maestro, de modo que este 8051 puede
escuchar permanentemente a la red y cuando reciba una solicitud o un
comando con su número, actúa en correspondencia y vuelve a esperar por
un nuevo mensaje.
La RTU3 recibe el encabezado y el segundo byte del mensaje, si éste no
corresponde a su número, espera por un nuevo encabezado.

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

A CONTINUACIÓN SE MUESTRA EL CÓDIGO DEL


MAESTRO, DE LA RTU1 Y DE LA RTU3. EL PROGRAMA
DEL MEDIDOR DE TEMPERATURA (RTU2) NO SE
MUESTRA PORQUE ES PARTE DE UNA ASIGNACIÓN.
EL CÓDIGO DE COMUNICACIÓN DE RTU2 ES EL MISMO
QUE EL DE RTU1.

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

You might also like