EstudIo RT de Luces de Cruce II » History » Version 1

Txinto Vaz, 02/24/2015 12:06 PM

1 1 Txinto Vaz
h1. Estudo RT de Luces de Cruce II
2 1 Txinto Vaz
3 1 Txinto Vaz
h2. Aproximación 5
4 1 Txinto Vaz
5 1 Txinto Vaz
Tras unos cuantos cambios hemos llegado a éste proyecto attachment:LucesDeCruce05.zcos .
6 1 Txinto Vaz
7 1 Txinto Vaz
{{thumbnail(LucesDeCruce05.png, size=700, title=Luces de cruce aproximación 05)}}
8 1 Txinto Vaz
9 1 Txinto Vaz
Aquí hemos introducido muchos cambios, que pasaremos a enumerar:
10 1 Txinto Vaz
11 1 Txinto Vaz
* Hemos determinado que la funcionalidad "Luces Cortas" y "Luces Largas" tienen muchas cosas en común, son análogas, así que hemos puesto uno junto al otro.
12 1 Txinto Vaz
* Nos interesa ver cómo ambas funcionalidades comparten el mismo "mensajero", por lo que aunque tengamos dos grupos funcionales sólo tenemos una cadena de mensajería CAN (en el centro del diagrama).  Las señales CAN se multiplexan para dar lugar al mismo mensaje CAN, podemos entender dicho mensaje CAN como la suma de las señales agrupadas bajo el mismo identificador de mensaje y que se envían a la vez.
13 1 Txinto Vaz
* Para hacer menos aparatoso el diagrama, hemos encapsulado todas las salidas gráficas en un bloque.
14 1 Txinto Vaz
* Para mejorar la legibilidad hemos pasado las líneas de monitorización a verde, dejando las funcionales en azul.
15 1 Txinto Vaz
* Hemos cambiado el contenido de algunas de las señales que van a las gráficas, pues nos consideraba más interesante que las señales a monitorizar tuviesen retardos entre ellas, a ser posible estos retardos fuesen bien distribuidos en el tiempo.
16 1 Txinto Vaz
17 1 Txinto Vaz
En los sucesivos apartados mostraremos el interior de cada subbloque, pues ahí es donde radica la esencia de ésta transformación.
18 1 Txinto Vaz
19 1 Txinto Vaz
h3. Bloque ECU1_luces_xxx
20 1 Txinto Vaz
21 1 Txinto Vaz
{{thumbnail(LucesDeCruce05ECU1.png, size=700, title=Luces de cruce aproximación 05 bloque ECU1_luces_xxx)}}
22 1 Txinto Vaz
23 1 Txinto Vaz
PuertoDI y Logica ECU1 ya los conocemos.  Hemos añadido un bloque que hace el filtrado por tiempo de una entrada booleana.  El módulo se llama [[Pulse Width Filter]], y lo hemos metido dentro de un "wrapper", ya que el módulo utiliza señales "flotantes" y, dentro de ECU1_luces_xxx, las necesitamos enteras.
24 1 Txinto Vaz
25 1 Txinto Vaz
26 1 Txinto Vaz
{{thumbnail(LucesDeCruce05PWFWrapper.png, size=700, title=Wrapper de Pulse Width Filter para su uso con tipos enteros)}}
27 1 Txinto Vaz
28 1 Txinto Vaz
Dentro de éste wrapper encontramos el bloque [[Pulse Width Filter]].  Para conocer el interior de dicho bloque, navegue hasta la descripción: [[Pulse Width Filter]].
29 1 Txinto Vaz
30 1 Txinto Vaz
h3. Bloque ECU2_luces_xxx
31 1 Txinto Vaz
32 1 Txinto Vaz
Éste bloque ya lo conocíamos, simplemente en ésta aproximación ha perdido su bloque CAN ECU2 INPUT, que ha pasado a ser un bloque común de ambas funcionalidades.
33 1 Txinto Vaz
34 1 Txinto Vaz
h3. Bloque CANECU12ECU2
35 1 Txinto Vaz
36 1 Txinto Vaz
Éste bloque codifica el mensaje ECU12ECU2 que sale de la ECU1 y va a parar a la ECU2.  En la aproximación anterior el mensaje sólo llevaba una señal, ahora llevará varias, pues pasa a ser un bloque horizontal que da servicio a varias funcionalidades.
37 1 Txinto Vaz
38 1 Txinto Vaz
{{thumbnail(LucesDeCruce05CANECU12ECU2.png, size=700, title=Luces de cruce aproximación 05 bloque CANECU12ECU2)}}
39 1 Txinto Vaz
40 1 Txinto Vaz
Como vemos en el diagrama, hay un demultiplexor y un multiplexor, y hay un bloque "sample & hold" por cada señal.  En realidad querríamos tener, simplemente, un bloque S/H que aceptara entradas multiplexadas, puesto que el momento en el que vamos a simular el envío periódico de la información por CAN es el mismo para todas las señales del mensaje, sin embargo hacemos éste bloque así debido a una de las [[Limitaciones de modelado con XCos]], que es que el bloque S/H no permite más que entradas individuales.
41 1 Txinto Vaz
42 1 Txinto Vaz
Lo mismo sucederá con cada uno de los bloques de la cadena de transmisión del CAN (delay Bus CAN y CAN_ECU2_INPUT), cada uno de los cuales demultiplexará, procesará y volverá a multiplexar el contenido del bus.
43 1 Txinto Vaz
44 1 Txinto Vaz
h3. Bloque Delay Bus CAN
45 1 Txinto Vaz
46 1 Txinto Vaz
En éste bloque hemos eliminado las conversiones de entero a flotante y viceversa.  Debido a que estamos simulando un comportamiento que no va a ser programado en software funcional (el bus CAN es un bus físico gobernado por controladores hardware/software configurables cuyo software no hay que programar desde el nivel de aplicación) no tenemos especial interés en controlar los tipos durante la cadena CAN, podemos trabajar como le es más sencillo al XCos, que es en números flotantes.
47 1 Txinto Vaz
48 1 Txinto Vaz
{{thumbnail(LucesDeCruce05DelayBusCAN.png, size=700, title=Luces de cruce aproximación 05 bloque Delay Bus CAN)}}
49 1 Txinto Vaz
50 1 Txinto Vaz
h3. Bloque CAN_ECU2_INPUT
51 1 Txinto Vaz
52 1 Txinto Vaz
El bloque ha cambiado con respecto a su diseño anterior:
53 1 Txinto Vaz
54 1 Txinto Vaz
{{thumbnail(LucesDeCruce05CANECU2Input.png, size=700, title=Luces de cruce aproximación 05 bloque CAN_ECU2_INPUT)}}
55 1 Txinto Vaz
56 1 Txinto Vaz
* Demultiplexor para sacar las señales del bus.
57 1 Txinto Vaz
* El Delay actúa ahora sobre una señal en coma flotante, por lo que simplemente hay que convertir al final a un valor entero (no hace falta el bloque Delay Binario).
58 1 Txinto Vaz
59 1 Txinto Vaz
h3. Bloque de gráficas
60 1 Txinto Vaz
61 1 Txinto Vaz
{{thumbnail(LucesDeCruce05Graficas.png, size=700, title=Luces de cruce aproximación 05 bloque Gráficas)}}
62 1 Txinto Vaz
63 1 Txinto Vaz
Podemos ver cómo hemos encapsulado las gráficas para restarle importancia en el diagrama principal.