Je viens de pensé, vérifie si ton interrupteur n'a pas des moments ou il perdrait ça valeur même une fois en position. La perte de la position peut-être que de quelques millisecondes seulement, celà est largement suffisant pour la relecture du script SIOC, donc le retour en position Both dans Fs.
SIOC fonctionne par évènement, donc, si il y a un changement et seulement si il y a un changement de valeur d'une des variables, il exécute de nouveau le script. Autrement, le script demeure en pause sans qu'il y ait relecture de ce dernier.
Les lignes qui font la déduction de la position OFF sont placé à cette endroit volontairement et ils ne fonctionneraient pas si placé ailleurs. Comme la position Right sur le magnéto est la position suivant la position Off, quand tu tournes l'interrupteur, il passera donc sur cette position avant d'arrivé à la position OFF lors du chemin de retour. SIOC, comme je le disais fonctionnement par évènement, donc à chaque fois qu'il y a un changement de valeur d'une des variables il relit le script. C'est donc à la position (Right) que la valeur de l'interrupteur est la dernière changé. En gros c'est la dernière position à changer de valeur avant que tous les positions soit à la valeur 0.
Les 3 dernières ligne dit ceci: si le moteur est démarré (Eng1Flag = 1) et que l'interrupteur est en position Both (RotBothPos = 1) alors mets le offset de Fs à la valeur 3 (FsMag = 3)
@+
Daniel.
PS: il est encore tôt chez moi

presque 20:10