11-11-2011 02:48 AM
Hola a todos, estoy haciendo un nuevo ejercicio y tengo un problerma que llevo varios días y no puedo resolver. El ejemplo que está adjunto, a grandes rasgos se trata de lo siguiente: cinco depósitos se vacía a otro de forma secuencial, ya que solo existe un único caudalímetro (que se simula con una constante igual a uno) Estos cinco depósitos se vacian en otro que los bate. Cuando acaba el primer depósito, comienza la batidora a trabajar hasta un tiempo "T batido", que introduce el usuario, es decir, comienza cuando acaba el primer depósito y termina T batido después del último.
Mediante un "Ring" yo puedo decir que cantidad verterá de cada uno por ejemplo "0 0 50 0 50 ", significa que solo verterán contenido a la batidora dos depósitos el tercero y quinto, por lo tanto cuando finalice el tercer depósito comenzará a batir y T batdio segundos despues de acabar el quinto depósito terminará el batido.
Todo funciona mas o menos, pero al cambiar de valaores del "Ring" bastante a menudo se salta uno de los depósitos o cuenta menos de lo que necesita. Me he dado cuenta que aunque le he reseteado las variables cuando acaba el proceso, de vez en cuando se ve que queda algún valor (incluso negativo si el valor posterior es menor). En defintiva que creo que no reincia las variables cuando termina el proceso.
He intentado poner en paralelo (meidante una puerta or (aún está la puerta or y un false) con el reset la variable Fin de batido para reiniciar, pero no lo hace ya que necesita presionar dos veces Inicio de proceso para que funcione.
Cualquier ayuda es bienvenidfa, ya que como he dicho llevo varios días con el problema y no logro nada positivo.
Gracias y que pasen un buen día.
11-11-2011 03:13 AM
Your code is full of race conditions. You read from, and write to local variables in completely unpredictable order.
Get rid of all these local variables and design the program as a proper state machine.
11-14-2011 05:59 AM
Gracias por la respuesta pero sigo sin resultados sarisfactorios. Mi pregunta es ahora la siguiente:
¿Existe alguna manera de que al terminar la secuencia (vaciado de los cinco depósitos más el batido) realice otra secuncia (de forma automática) pero el "Ring" debe estar a cero, y de esta forma reiniciaría todas las variables.
Gracias de nuevo a todos.
Que pasen un buen día.
11-14-2011 02:46 PM
Saludos,
Utilizando los Invoke nodes puedes reiniciar tus variables cuando quieras. Aquí te mando un link acerda de esto:
Jorge N.
PD: Hay un foro en español, creo que te responderían más rápido si escribieras alla...