Vai al contenuto
PLC Forum

Partecipa anche tu alla Live su Youtube martedì 28/01/2025 per festeggiare i 24 anni di PLC Forum

Per ulteriori informazioni leggi questa discussione: https://www.plcforum.it/f/topic/326513-28012025




Puntare Alla Variabili Locali


Messaggi consigliati

Inserito:

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?


Inserita:

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?

Inserita:

In un blocco FC scrivo il seguente codice:

Dichiaro una variabile TEMP (L0.0) come #pippo

L P##pippo

LAR1

U [AR1, P#0.0] // un questo punto la CPU va in stop.

= M100.0

Inserita:

Io l'ho dicharata come BOOL ma se vienisse dichiarata come POINTER non cambierebbe nulla ed in ACC1 comparirebbe lo stesso valore.

Inserita:

non scrivi che variabile è:

è un E, un M, Un L cosa???

secondo me è li che si inchioda tutto, avrebbe più senso ad esempio

L P##pippo

LAR1

U E[AR1, P#0.0] // un questo punto la CPU va in stop.

= M100.0

se devi leggere un'ingresso

Inserita:

Ken, nel mio post precedente parlavo di variabile TEMP (locale).

Se scrivo

L P#L0.0

e nelle variabili TEMP (local) L0.0 è chiamata come simbolico pippo, il compilatore traduce automaticamente

L P##pippo

che 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 istruzione

LAR1

carica nel registro puntatore (AR1) quello che si trova in ACC1 cioè L0.0

l'istruzione sucessiva

U [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.0

LAR1

allora l'istruzione seguente doveva essere come dici tu

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

Inserita:

Questa mattina ho provato a scrivere come ha detto Ken

L P##pippo

LAR1

U L[AR1, P#0.0]

= M100.0

e la CPU non va in stop!!! (Grazie KEN!) :D

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

:)

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