Vai al contenuto
PLC Forum


Valori anomali dei registri durante debug


Messaggi consigliati

Inserito:

Buongiorno,

da come è possibile vedere dall'allegato il risultato finale dell’operazione è 900, ma nella variabile viene scritto 768.

Questo non è un problema di visualizzazione, vedo lo stesso risultato anche nel valore della DB.

La cosa assurda è che se, tenendo sempre sotto controllo il valore nella DB, faccio sparire dal video quella parte di codice, nella DB il valore della variabile si aggiorna correttamente e da 768 passa a 900!

Altra assurdità è che se tolgo il commento che vedete sempre nell'immagine fa le cose correttamente e il risultato appare correttamente anche se non faccio sparire dal video quella parte di codice.

Ho provato a sostituire anche la CPU (Open controller CPU 1505SP FW: V21.) ma il problema non cambia.

Se lascio girare il programma senza attivare il debug (occhialini) il problema non si evidenzia!!!
Me ne sono accorto perchè durante il debug arrivavano dei valori assurdi all'inverter a cui spedivo i dati.

Sto utilizzando TIA18 Upd3

Grazie a chiunque possa darmi il suo pensiero.

Immagine.png


Inserita: (modificato)

Non è che quella DW è scritta parzialmente da qualche altra parte? Perché guarda caso la differenza tra i due valori sta proprio in un byte....

Modificato: da drn5
Inserita:

Grazie @drn5 per l'interessamento.

Ma perchè dici che la differenza sta in un byte?

900-768=132

Mi sto perdendo qualcosa?

E comunque non sarebbe giustificato il fatto che se tolgo il commento tutto si mette a posto.

 

Inserita: (modificato)

Sulla affermazione del byte ho detto una caz..ta. avevo fatto  una conversione in binario alla svelta....

Quindi se fai un doppio trasferimento (T) o togli in debug va?  Allora boh!

Sarebbe interessante riscriverlo in scl o in ladder o da solo in altro segmento....

Modificato: da drn5
Inserita:

Confermo che con doppio trasferimento funziona. Idem se esco dal debug. Mistero misterioso targato Siemens! Certo che una cosa del genere è inaccettabile.

dina_supertramp
Inserita: (modificato)
1 ora fa, MaChePLC ha scritto:

Confermo che con doppio trasferimento funziona. Idem se esco dal debug. Mistero misterioso targato Siemens! Certo che una cosa del genere è inaccettabile.

E’ da debuggare il codice, per debuggare non intendo quello tre righe, intendo tutto il codice…


L’AWL esiste da 30 anni…non diamo colpe cosi a naso, lo facevo pure io a suo tempo, poi il 99% degli errori (tipo questo) erano nel mio codice, non bachi intrinsechi del PLC.

 

Modificato: da dina_supertramp
Inserita:
1 ora fa, dina_supertramp ha scritto:

L’AWL esiste da 30 anni…non diamo colpe cosi a naso, lo facevo pure io a suo tempo, poi il 99% degli errori (tipo questo) erano nel mio codice, non bachi intrinsechi del PLC.

Concordo.
Mi sento di escludere un baco del PLC, ma è impossibile capire dov'è il problema guardando solo quelle 4 righe.
Per esempio, se le metti all'inizio di OB1 e subito dopo ci metti un BEA, ed escludendo eventuali OB ad interrupt, cosa succede?
Oppure, se al posto di DB316.DBD88 ci metti una variabile temporanea, cosa succede?

O, ancora, se subito prima di DB316.DBD88 ci metti una riga con: L 900, cosa succede?
L'ipotesi più probabile (per non dire l'unica) è che dei bit appartenenti alla DB316.DBD88 siano usati da qualche altra parte nel programma.

Inserita:

@dina_supertramp e @batta

Grazie dei consigli; domani farò certamente altre prove per avere qualche dato in più su cui ragionare.

Inizialmente anche io escludevo un baco del PLC, ma non so se sono stato chiaro nella spiegazione.

Se possibile allegherò un filmato, ma tanto per capirci:

  • divido in 2 lo schermo per poter disporre le finestre in modo ottimale
  • a sinistra la DB in modalità "Controlla tutto" quindi sotto la colonna "valore di controllo" vedo in diretta il valore della variabile
  • a destra l'FC in modalità "Controllo" che mi fa vedere i registri mostrati nell'allegato del mio primo post
  • in queste condizioni ho il problema; ossia il conto dell'operazione è sbagliato e posso stare qui un'eternità e il valore è sempre quello.
    Sia in DB, sia nei registri dell'FC
  • con lo scroll del mouse o con la barra di scorrimento faccio scomparire il codice incriminato andando a visualizzare altro codice sotto l'FC
  • così il problema si risolve e nella DB il valore si aggiorna con il valore corretto dell'operazione.

Capite che fatico a credere sia un problema di codice?

Se lo fosse avrei il difetto sempre e comunque, indipendentemente dalla porzione di codice che sto visualizzando.

Grazie

dina_supertramp
Inserita:

Io penso come @drn5 e @batta che stai scrivendo parte della DB316.DBD88 da altre parti.

 

8 ore fa, MaChePLC ha scritto:
  • con lo scroll del mouse o con la barra di scorrimento faccio scomparire il codice incriminato andando a visualizzare altro codice sotto l'FC
  • così il problema si risolve e nella DB il valore si aggiorna con il valore corretto dell'operazione.

Mai sentita una cosa cosi fino ad ora, poi mai dire mai....

Puoi condividere il programma?

Inserita:

@dina_supertramp

Dato che oggi non ne ho cavato un ragno dal buco, lunedì verrò affiancato dal sig. Siemens 😉 con la speranza che ci capisca qualcosa.

Appena scopro qualcosa aggiornerò la community.

 

dina_supertramp
Inserita:
4 ore fa, MaChePLC ha scritto:

@dina_supertramp

Dato che oggi non ne ho cavato un ragno dal buco, lunedì verrò affiancato dal sig. Siemens 😉 con la speranza che ci capisca qualcosa.

Appena scopro qualcosa aggiornerò la community.

 


Facci sapere perché questa è bella, avevo tralasciato il discorso della visualizzazione…come anche il fatto che è un software controller la CPU 1505.

 

Non succede…ma se succede che è un baco del PLC…eheheh

Inserita:

Sig. Siemens incredulo!

Riporterà il tutto in Germania e ci farà sapere 🤞

dina_supertramp
Inserita:
23 ore fa, MaChePLC ha scritto:

Sig. Siemens incredulo!

Riporterà il tutto in Germania e ci farà sapere 🤞

Pensa te....questa è bella.
Il baco è diventato farfalla

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...