Jump to content
PLC Forum


Valori anomali dei registri durante debug


MaChePLC
 Share

Recommended Posts

MaChePLC

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

Link to comment
Share on other sites


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

Edited by drn5
Link to comment
Share on other sites

MaChePLC

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.

 

Link to comment
Share on other sites

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

Edited by drn5
Link to comment
Share on other sites

MaChePLC

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

Link to comment
Share on other sites

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

 

Edited by dina_supertramp
Link to comment
Share on other sites

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.

Link to comment
Share on other sites

MaChePLC

@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

Link to comment
Share on other sites

dina_supertramp

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?

Link to comment
Share on other sites

MaChePLC

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

 

Link to comment
Share on other sites

dina_supertramp
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

Link to comment
Share on other sites

MaChePLC

Sig. Siemens incredulo!

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

Link to comment
Share on other sites

dina_supertramp
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

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...