]> git.llucax.com Git - z.facultad/75.42/plaqui.git/blob - docs/enunciado/tp.html
Se agrega la definicion del metodo new_connection() que era lo que daba un error...
[z.facultad/75.42/plaqui.git] / docs / enunciado / tp.html
1 <html>\r
2 \r
3 <head>\r
4 <meta http-equiv="Content-Language" content="es-mx">\r
5 \r
6 <title>New Page 1</title>\r
7 </head>\r
8 \r
9 <body>\r
10 \r
11 <h1>Trabajo práctico final</h1>\r
12 <h1>Introducción</h1>\r
13 <p>Diseñar un sistema destinado a la simulación y control de una planta química.</p>\r
14 <p>El sistema consta de 3 aplicaciones independientes destinadas al diseño, \r
15 simulación y control de la planta, respectivamente. Estas tres aplicaciones se \r
16 explican a continuación:</p>\r
17 <h1>1 - Diseño de la planta</h1>\r
18 <p>Aplicación Windows, ya sea basada en un diálogo o SDI (Single Document \r
19 Interface), destinada al diseño de la planta en forma gráfica.</p>\r
20 <p>El sistema debe poder cargar y grabar el diseño de la planta en un archivo de \r
21 texto.</p>\r
22 <h2>Parte 1 - Modelo de la planta</h2>\r
23 <p>El diseño de la planta debe incluir los siguientes elementos:</p>\r
24 <ul>\r
25   <li>caños: horizontal, vertical. La longitud de los caños debe poder variarse</li>\r
26   <li>codos de caños, en todas las 8 direcciones posibles.</li>\r
27   <li>bifurcaciones de caños</li>\r
28   <li>uniones de caños</li>\r
29   <li>tanque</li>\r
30   <li>bomba (fuente)</li>\r
31   <li>drenaje (salida)</li>\r
32   <li>exclusa</li>\r
33 </ul>\r
34 <p>El programa debe permitir insertar, borrar y mover cada uno de estos \r
35 elementos.</p>\r
36 <p>Algunos de estos elementos de la planta tendrán atributos y estados, tal como \r
37 se detalla en la siguiente tabla:</p>\r
38 <table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber1">\r
39   <tr>\r
40     <td width="33%"><b><font size="4">Elemento</font></b></td>\r
41     <td width="33%"><b><font size="4">Atributos</font></b></td>\r
42     <td width="34%"><b><font size="4">Estados</font></b></td>\r
43   </tr>\r
44   <tr>\r
45     <td width="33%">caños</td>\r
46     <td width="33%">caudal máximo (litros / seg.)</td>\r
47     <td width="34%">&nbsp;</td>\r
48   </tr>\r
49   <tr>\r
50     <td width="33%">codos</td>\r
51     <td width="33%">&nbsp;</td>\r
52     <td width="34%">&nbsp;</td>\r
53   </tr>\r
54   <tr>\r
55     <td width="33%">bifurcaciones</td>\r
56     <td width="33%">&nbsp;</td>\r
57     <td width="34%">&nbsp;</td>\r
58   </tr>\r
59   <tr>\r
60     <td width="33%">uniones</td>\r
61     <td width="33%">&nbsp;</td>\r
62     <td width="34%">&nbsp;</td>\r
63   </tr>\r
64   <tr>\r
65     <td width="33%">tanque</td>\r
66     <td width="33%">capacidad (en litros)</td>\r
67     <td width="34%">cantidad de litros en el tanque (valor real)</td>\r
68   </tr>\r
69   <tr>\r
70     <td width="33%">bomba</td>\r
71     <td width="33%">caudal máximo (litros / seg.). Color del líquido.</td>\r
72     <td width="34%">encendida/apagada (valor binario)</td>\r
73   </tr>\r
74   <tr>\r
75     <td width="33%">drenaje</td>\r
76     <td width="33%">&nbsp;</td>\r
77     <td width="34%">&nbsp;</td>\r
78   </tr>\r
79   <tr>\r
80     <td width="33%">exclusa</td>\r
81     <td width="33%">&nbsp;</td>\r
82     <td width="34%">abierta/cerrada (valor binario)</td>\r
83   </tr>\r
84 </table>\r
85 <p>Cada elemento del sistema deberá poder asociarse un atributo adicional que \r
86 será el nombre del objeto</p>\r
87 <p>A continuación se muestra como ejemplo el diseño de una planta.</p>\r
88 <p><img border="0" src="TPf.ht1.gif" width="800" height="559"></p>\r
89 <p>A continuación se muestra el despiece de la planta en los diferentes objetos \r
90 que la componen.</p>\r
91 <p><img border="0" src="TPf.ht2.gif" width="797" height="547"></p>\r
92 <h2>Parte 2 - Sistema de control</h2>\r
93 <p>Seleccionando alguna opción en la aplicación se debe pasar al diseño del \r
94 sistema de control de la planta.</p>\r
95 <p>En este modo, no se podrá modificar los objetos que componen la planta, sino \r
96 que se mostrarán y permitirá modificar los elementos que determinan el control \r
97 de la misma.</p>\r
98 <p>Como se mencionó anteriormente, algunos objetos pueden tener estados \r
99 asociados. El programa debe desplegar dos entradas, que permitan modificar dicho \r
100 estado (abrir/cerrar) y <br>\r
101 una salida que permita leer dicho estado. En el caso del tanque, sólo se tendrán \r
102 2 salidas que indicarán si el contenido del mismo es superior/inferior a un \r
103 porcentaje dado.<br>\r
104 <br>\r
105 Estas entradas y salidas deben poder conectarse utilizando un editor gráfico, y \r
106 debe permitir agregar los símbolos binarios AND y OR, el símbolo unitario \r
107 NEGADOR, un pulsador y un<br>\r
108 temporizador, tal como se muestra en el diagrama.</p>\r
109 <p><img border="0" src="TPf.ht3.gif" width="451" height="528"></p>\r
110 <p><br>\r
111 Esta lógica debe grabarse en el archivo con la descripción de la planta en \r
112 formato texto, utilizando la nomenclatura que los alumnos prefieran.</p>\r
113 <h1>2 - Simulación</h1>\r
114 <p>Aplicación de consola, destinada a la simulación de la planta.</p>\r
115 <p>El programa debe cargar una planta de un archivo de texto generada por la \r
116 aplicación de diseño descripta anteriormente, simular el funcionamiento de la \r
117 misma y comunicarse con el programa de control para permitir la visualización y \r
118 control de la planta.</p>\r
119 <p>Todos los parámetros requeridos por esta aplicación deben recibirse por línea \r
120 de comandos.</p>\r
121 <p>Esta aplicación debe constar de 2 partes o módulos.</p>\r
122 <h2>Módulo Simulación</h2>\r
123 <p>Debe simular el funcionamiento de la planta en base al modelo que se describe \r
124 en el apéndice I</p>\r
125 <h2>Servidor TCP/IP.</h2>\r
126 <p>Debe implementar la comunicación con una o más aplicaciones de control de la \r
127 planta.</p>\r
128 <p>El protocolo utilizado para la comunicación debe ser en formato texto, y debe \r
129 basarse en la filosofía web-services, que se describe a continuación:</p>\r
130 <p>El cliente (aplicación de control) envía un requerimiento al servidor en \r
131 formato texto (preferentemente XML). Estos requerimientos pueden interpretarse \r
132 como llamadas a funciones, donde se pasa el nombre de la &quot;funcion&quot; a invocar y \r
133 sus parámetros. </p>\r
134 <p>El servidor responde con un texto (preferentemente en formato XML).</p>\r
135 <p>Las funciones a implementar deben permitir:</p>\r
136 <p>1 - Obtener una descripción de la planta</p>\r
137 <p>2 - Obtener el estado de un elemento de la planta.</p>\r
138 <p>3 - Modificar el estado de un elemento de la planta</p>\r
139 <h1>3 - Aplicación de control.</h1>\r
140 <p>Aplicación win32 similar a la descripta en el punto 1 y con similar interfaz \r
141 gráfica. El programa no debe permitir modificar la planta, sino que debe mostrar \r
142 el estado de la misma.</p>\r
143 <p>Esta aplicación debe mostrar el estado de todos los elementos que componen la \r
144 planta en forma gráfica, animando cada elemento para indicar los flujos de \r
145 líquido, con el color correspondiente a cada líquido.</p>\r
146 <p>Si la capacidad máxima de un tanque es superada, el programa debe emitir una \r
147 alerta.</p>\r
148 <p>El sistema deberá mostrar el contenido de los tanques con el color de los \r
149 líquidos que lo llenaron.<br>\r
150 &nbsp;</p>\r
151 <h1>Apéndice I - Modelo de simulación</h1>\r
152 <p>La planta puede entenderse como un grafo dirigido, donde cada objeto \r
153 representa un nodo del grafo y cada caño una arista. Si bien en un caño el \r
154 líquido puede fluir en ambas direcciones,<br>\r
155 simplificaremos el modelo suponiendo que el liquido fluye en una única \r
156 dirección.<br>\r
157 <br>\r
158 Los objetos de la planta pueden dividirse en 3 tipos:</p>\r
159 <p>1 - Fuentes. (ejemplo: bomba)<br>\r
160 2 - Drenajes. (ejemplo: salida)<br>\r
161 3 - Los restantes objetos (exclusas, bifurcaciones, uniones, etc) son \r
162 idealizados suponiendo que no almacenan líquido.</p>\r
163 <p>Un caso particular de dispositivo es el tanque, que constituye una fuente y \r
164 drenaje al mismo tiempo.</p>\r
165 <p>Para simular la planta, se analizan todos los flujos de liquido entre todas \r
166 las fuentes y drenajes.</p>\r
167 <p>Las bifurcaciones son simplificadas suponiendo que divide el flujo de líquido \r
168 en dos.<br>\r
169 Las uniones son simplificadas suponiendo que sólo aceptan el 50% del caudal \r
170 posible de cada entrada.</p>\r
171 <p>Si una exclusa / bomba está cerrada, el programa debe considerar que dicha \r
172 parte del grafo no está presente.<br>\r
173 <br>\r
174 Ejemplo:</p>\r
175 <p>Tomando el diseño de la planta dado anteriormente, se lo dividirá en un \r
176 grafo, tal como se muestra a continuación:</p>\r
177 <p><img border="0" src="TPf.ht4.gif" width="827" height="571"></p>\r
178 <p>El sistema deberá iterar n veces por segundo, determinando los caudales en \r
179 cada arista del grafo. Una vez hecho esto se actualizará los contenidos de \r
180 líquido en cada tanque en base a los caudales determinados.</p>\r
181 <p>En primer lugar se determinan los posibles caminos fuente-drenaje:</p>\r
182 <p>1 - 4<br>\r
183 3 - 4<br>\r
184 4 - 8<br>\r
185 4 - 10<br>\r
186 8 - 10<br>\r
187 10 - 12</p>\r
188 <p>Una vez hecho esto se determinará el caudal en cada arista, tal como se \r
189 muestra a continuación:</p>\r
190 <p><b>Flujo en arista 1<br>\r
191 </b>Si la bomba 1 está apagada: 0<br>\r
192 Si la bomba 1 está encendida y la 2 apagada:<br>\r
193 mínimo entre:<br>\r
194 * caudal max. entregado por la bomba<br>\r
195 * caudal max. arista 1<br>\r
196 * caudal máx. arista 3<br>\r
197 Si la bomba 1 y 2 están encendidas:<br>\r
198 * caudal max. entregado por la bomba<br>\r
199 * caudal max. arista 1<br>\r
200 * mitad del caudal máx. arista 3.<br>\r
201 <br>\r
202 <b>Flujo en arista 2<br>\r
203 </b>Similar flujo en arista 1<br>\r
204 <br>\r
205 <b>Flujo en arista 3<br>\r
206 </b>Suma de los flujos por las aristas 1 y 2<br>\r
207 <br>\r
208 <b>Flujo en arista 4<br>\r
209 </b>Si la exclusa 5 está cerrada, el flujo será 0.<br>\r
210 En caso contrario:<br>\r
211 Si la bomba 8 está apagada, el grafo se reduce y el flujo estará<br>\r
212 dado por el mínimo caudal entre<br>\r
213 * máximo caudal posible en arista 4<br>\r
214 * máximo caudal posible en arista 5<br>\r
215 * máximo caudal posible en arista 8 por dos, ya que sólo la mitad<br>\r
216 del caudal se irá por esta arista.<br>\r
217 * máximo caudal posible en arista 6 por dos, ya que sólo la mitad<br>\r
218 del caudal se irá por esta arista.<br>\r
219 * máximo caudal posible en arista 9 por dos.<br>\r
220 <br>\r
221 Si la bomba 8 está abierta, el análisis es similar solo que el <br>\r
222 último flujo será directamente:<br>\r
223 * máximo caudal posible en arista 9.<br>\r
224 <br>\r
225 <b>Flujo en arista 5<br>\r
226 </b>Será idéntico al flujo por la arista 4<br>\r
227 <br>\r
228 <b>Flujo en arista 6<br>\r
229 </b>Será la mitad del flujo en la arista 5<br>\r
230 <br>\r
231 <b>Flujo en arista 8<br>\r
232 </b>Será la mitad del flujo en la arista 5<br>\r
233 <br>\r
234 <b>Flujo en arista 9<br>\r
235 </b>Suma de los flujos en aristas 6 y 7<br>\r
236 <br>\r
237 Los restantes flujos pueden ser determinados por los alumnos.<br>\r
238 <br>\r
239 En este análisis no se tuvo en cuenta la existencia de líquido en un tanque. Si \r
240 un tanque está vacío, debe considerarse que no hay flujo de líquido (exclusa \r
241 cerrada). Si un cuanto de flujo de líquido resulta ser superior al líquido \r
242 existente en un tanque, dicho caudal deberá ser limitado al caudal existente.</p>\r
243 <p>Una vez determinado el caudal en cada arista del grafo, el programa debe \r
244 actualizar el contenido de todos los tanques.</p>\r
245 <p>Tener en cuenta que cada bomba de la planta entrega líquidos de distinto tipo \r
246 (color) lo cual deberá ser tenido en cuenta al actualizar los volúmenes de cada \r
247 tanque, de tal forma que el color mostrado en el grafo sea proporcional (en \r
248 forma aproximada) a la densidad de los líquidos entrantes.</p>\r
249 <p>Por ejemplo:</p>\r
250 <p>Si un tanque contiene 10 litros de líquido rojo (255,0,0) y recibe 10 litros \r
251 de líquido de verde (0,255,0), el color resultante será:</p>\r
252 <p>(255 * 90 / 100, 255 * 10 / 100, 0)</p>\r
253 <p>Utilizar números double para minimizar errores de redondeo.</p>\r
254 \r
255 </body>\r
256 \r
257 </html>