- // compteur de secondes
- #cnt := #cnt + #ct;
- // cadence atteinte
- IF #cnt >= 0.2 THEN
- #timeout := #timeout + #cnt;
- #cnt := 0.0;
- #wd.%X0 := #z1;
- IF #run THEN
- #i := #i + 1;
- // les 6 bits ont été lus
- IF #i >= 6 THEN
- #run := FALSE;
- #status := #wd AND 16#003F;
- #wd := 16#0000;
- END_IF;
- ELSE
- // déclencheur lecture des 6 bits de diagnostic
- IF (#wd AND 16#000F) = 16#0002 THEN
- #i := 0;
- #run := TRUE;
- #timeout := 0.0;
- END_IF;
- END_IF;
- // ROTATION DU REGISTRE DE DECALAGE
- #wd := ROL(IN := #wd, N := 1);
- END_IF;
- #moduleOk := FALSE;
- IF #timeout <= 5.0 THEN
- #moduleOk := #status = 16#2F;
- END_IF;