fopea123 Inserito: 14 settembre 2005 Segnala Inserito: 14 settembre 2005 Con i PLC serie 300 con flash, se "punto" ad una variabile locale la CPU va in stop mentre con un 400 o una 300 vessione "C" no, come mai?
Eddyn°1 Inserita: 14 settembre 2005 Segnala Inserita: 14 settembre 2005 Ciao. Se vuoi che qualcuno ti aiuti dai più informazioni, che tipo di puntamento usi. Su che variabili?Sei sicuro che la variabile che stai puntando esiste?
fopea123 Inserita: 14 settembre 2005 Autore Segnala Inserita: 14 settembre 2005 In un blocco FC scrivo il seguente codice:Dichiaro una variabile TEMP (L0.0) come #pippoL P##pippoLAR1U [AR1, P#0.0] // un questo punto la CPU va in stop.= M100.0
STEU Inserita: 14 settembre 2005 Segnala Inserita: 14 settembre 2005 Dichiari la variabile come bool o come puntatore?
fopea123 Inserita: 14 settembre 2005 Autore Segnala Inserita: 14 settembre 2005 Io l'ho dicharata come BOOL ma se vienisse dichiarata come POINTER non cambierebbe nulla ed in ACC1 comparirebbe lo stesso valore.
ken Inserita: 14 settembre 2005 Segnala Inserita: 14 settembre 2005 non scrivi che variabile è:è un E, un M, Un L cosa???secondo me è li che si inchioda tutto, avrebbe più senso ad esempioL P##pippoLAR1U E[AR1, P#0.0] // un questo punto la CPU va in stop.= M100.0se devi leggere un'ingresso
JumpMan Inserita: 14 settembre 2005 Segnala Inserita: 14 settembre 2005 Hai guardato la causa di stop ? :ph34r:
fopea123 Inserita: 14 settembre 2005 Autore Segnala Inserita: 14 settembre 2005 Ken, nel mio post precedente parlavo di variabile TEMP (locale).Se scrivoL P#L0.0e nelle variabili TEMP (local) L0.0 è chiamata come simbolico pippo, il compilatore traduce automaticamenteL P##pippoche equivale a caricare in ACC1 il valore a 32 bit corrispondente all'indirizzo L0.0 cioè 86000000 (non mi ricordo bene il volore esatto)la sucessiva istruzioneLAR1carica nel registro puntatore (AR1) quello che si trova in ACC1 cioè L0.0l'istruzione sucessivaU [AR1, P#0.0]interroga l'indirizzo presente in AR1 (L0.0) con offset P#0.0 (cioè 0) quindi scrivere U [AR1, P#0.0]se scrivevo il seguente codice:L P#0.0LAR1allora l'istruzione seguente doveva essere come dici tuU L[AR1, P#0.0]Come ho già scritto nel primo post la cosa strana è che se provo a scrivere la stessa cosa in un PLC 315C 2DP o in un 400 la CPU non va in stop...Ho l'impressione che nella versione 300 con la MMC sia cambiato qualche cosa riferito a puntatori rispetto le CPU con la Flash.
fopea123 Inserita: 15 settembre 2005 Autore Segnala Inserita: 15 settembre 2005 Questa mattina ho provato a scrivere come ha detto KenL P##pippoLAR1U L[AR1, P#0.0]= M100.0e la CPU non va in stop!!! (Grazie KEN!) anche se penso che il mio ragionamento precedente era corretto ed è dimostrato dal fatto che su una 31* 2DP o un 400 funziona anche nell'altro modo.Forse è un baco presente nelle CPU vecchie che è stato risolto...Ora con una piccola modifica posso copiare tutti i blocchi che avevo scritto per una 315 2DP nelle CPU vecchie!!!
Messaggi consigliati
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 accountAccedi
Hai già un account? Accedi qui.
Accedi ora