Vai al contenuto
PLC Forum


Strano risultato in SCL


pilota60

Messaggi consigliati

Buonasera,

ho fatto due righe in SCL per "spazzolare" un array alla ricerca del primo bit a 1
Impostando sull'array uno qualsiasi dei bit da 1 a 9 ottengo che M0.0 va a true ma il risultato del loop rimane su false e l'indice rimane su 0.

 

1-9.thumb.JPG.1079f78155de914c470bce7df6ef2f24.JPG

 

 


Diversamente se forzo a 1 il bit 0 dell'array ho il risultato corretto.

0.thumb.JPG.c38161a25d32b58530843ed3cb3e8148.JPG

 

 


Come se il ciclo For non funzionasse.
Dove sbaglio?

Grazie ad auguri a tutti

Link al commento
Condividi su altri siti


Mattia Spoldi

Se non ho capito male M0.0 va ad 1 in entrambi i casi, giusto?

 

Non sbagli da nessuna parte, semplicemente quando vai online su un ciclo vedi solo la prima esecuzione, le successive vengono nascoste, il ciclo funziona lo stesso.

Volendo c'è un modo per visualizzare i cicli successivi, ma non ne vedo l'utilità, la scansione è troppo veloce, restando online vedresti, ad esempio, una volta la scansione con indice a 7, una volta con l'indice a 3 ,una a 5 ecc.(è piuttosto casuale)

 

Nel caso volessi comunque vederlo ti basta flaggare <monitor loops>

image.png.128fa40f3bea1fb0b314b834d0ce06ec.png

Link al commento
Condividi su altri siti

il ciclo funziona.

metti una variabile dentro IF che ti memorizza Index e vedrai che all'uscita del FOR contiene il valore di Index con IF vero.

dovresti fare un trace passo passo per vedere quello che cerchi...come in Visual Studio o similari...

Modificato: da drn5
Link al commento
Condividi su altri siti

Grazie per risposte,

ma ho ancora un dubbio la parola chiave "Exit" non dovrebbe interrompere il ciclo FOR al verificarsi dell'evento e visualizzarmi il valore corretto di #index?

12 ore fa, drn5 ha scritto:

dovresti fare un trace passo passo per vedere quello che cerchi

Purtroppo per questa prova ho usato una CPU che non supporta i punti di interruzione.

Link al commento
Condividi su altri siti

16 minuti fa, drn5 ha scritto:

Prova a visualizzare index alla riga 12 per esempio con un index:=index;

 

 

 

Fatto ed in effetti visualizza il valore corretto dell'indice , anche se laddove è scritto "risultato" continua a scrivere "FALSE" e non colorarsi.
Grazie in ogni caso

Link al commento
Condividi su altri siti

3 minuti fa, pilota60 ha scritto:

" e non colorarsi

Perché è come ti aveva detto iltoby...

Per il colore magari ci daremo una mano di bianco...pardon di verde...😁😁😁

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...