el 07-10-2007 12:50 PM
Si esta en un lugar “x” y su timer esta apagado, echo a andar el timer. Si sigue en ese lugar y cumplió el tiempo que tiene que estar ahí, apago el timer y enciendo la memoria:
Si ((vec_mar[x] = 1) y (vec_tiempo[xx].ban = 0))
{vec_tiempo[xx].time=Timer();
vec_tiempo[0].ban=1;
}
Si ((vec_mar[x]= 1) y (vec_tiempo[0].ban = 1))
{time=Timer();
si (time >= vec_tiempo[0].time)
{ mtxx=1;
vec_tiempo[0].ban=0;
}
}
sino
mtxx=0;
}
Estoy trabajando con Redes de Petri, (muy parecido a maquinas de estado), esa parte del código es la que me tiene con problemas.
el 07-10-2007 04:58 PM
el
07-11-2007
03:34 PM
- fecha de última edición
05-01-2025
10:48 AM
por
Content Cleaner
Hola Fercho8, cuando hay problemas de que funciona bien en HIghlight execution y no cuando corre normalmente son problemas de tiempo. Highlight execution solamente alentar la ejecución para poder verlo. Viendo tu código hay bastantes variables lo que puede producir una race condition.
Una race condition es cuando no sabes que dato se le o se escribe y en que orden. Por ejemplo en el siguiente diagrama no puedes saber el resultado (si les el valor para la operación o escribes el valor de la variable primero o si hay varios lugares en el que se escribe quien es el que escribió ates de que leyeras.
La forma más fácil de disminuir esto es reducir el número de variables. Para pasar los datos en un ciclo de la ejecución anterior a la nueva es mejor usar un shift register en lugar de una variable:
https://www.ni.com/docs/en-US/bundle/labview/page/passing-one-value-to-the-next-loop-iteration.html
Espero que esto te ayude con tu programa
Saludos
Mensaje editado por BeCeGa