Vai al contenuto
PLC Forum


Istruzioni Per Puntatori


vittorio1982

Messaggi consigliati

Salve a tutti, sto iniziando a programmare plc utilizzando S7-400 e ho utilizzato il manuale di simatic per le istruzioni in AWL ma non sono riuscito a capire come utilizzare un puntatore in una funzione .

in particolare ho una funzione di esempio dove in ingresso ho un numero reale e nella funzione viene definito il puntatore a tale variabile, faccio delle operazioni sul puntatore ma quando lo scarico nel plc e vado on-line vedo che la funzione anche avendo tutte le condizioni abilitate non mi viene eseguita. Qualcuna sa dirmi il perche???? e ancora c'è qualcuno che possiede qualche manuale che mi potrebbe chiarire le idee

Link al commento
Condividi su altri siti


l'. di step7 spiega tutto e quello ce l'hai già.

Riguardo al tuo problema specifico come credi che ti possiamo aiutare se non dici niente di questa "funzione"?

Magari postala oppure spiega cosa deve fare.

Ad ogni modo io so perchè la tua "funzione" non viene eseguita: secondo me devi aver sbagliato qualcosa

Link al commento
Condividi su altri siti

Penso che sia un po difficile spiegare cosa faccia la funzione.

Visto che però sono alle prime armi con i puntatori c'è qualcuno che possa elencarmi le istruzioni per creare un semplice programmino che faccia la somma di due puntatori ed inserisca il risultato in una variabile di uscita della funzione????????

Logicamente in AWL.

Inoltre trovo molte difficoltà a capire delle istruzioni come ad esempio B#16#85 oppure #84

sul manuale mi dice solo che vengono caricati dei blocchi di dati di istanza ma che sono questi blocchi e dove si trovano.

Scusate la mia ignoranza e vi ringrazio per l'attenzione

Link al commento
Condividi su altri siti

Quando dichiaro un tipo di dato puntatore, si crea sempre un blocco di istanza della funzione?

che cosa fa l'istruzione:

L B#16#85??

ma quando carico un puntatore in realtà esso contiene l'indirizzo di quella variabile??

Link al commento
Condividi su altri siti

Preferisco rispondere qui alle domande che mi hai posto in privato.

che cosa fa l'istruzione:

L B#16#85??

"L" è semplicemente l'istruzione di caricamento.

Dal manuale in linea di Step7:

Descrizione dell'operazione

L < operando> carica nell'accumulatore 1 il byte, la parola o la doppia parola indirizzati, dopo che il contenuto di ACCU 1 è stato memorizzato in ACCU 2, ed ACCU 1 è stato resettato a 0.

"B#16#85" è semplicemente un valore in formato BYTE espresso in esadecimale

L B#16#85 significa: carica nell'accumulatore in formato BYTE il valore esadecimale 85.

L DW#16#FFFFFFF0 significa: carica nell'accumulatore in formato DWORD il valore esadecimale FFFFFFF0

Per quanto riguarda il formato POINTER, riporto semplicemente quanto descritto nel manuale in linea di Step7:

Dimensione 6 byte
Byte 0-1: contengono in formato INT il numero del DB (0 = non è un DB)
Byte 2: area di memoria, codificata come segue:
    B#16#81 = area E (ingressi)
    B#16#82 = area A (uscite)
    B#16#83 = area M (merker)
    B#16#84 = area DB (blocco dati)
    B#16#85 = area DI (blocco dati di istanza)
    B#16#86 = area L (dati locali)
    B#16#87 = area V (dati locali precedenti)
Byte 3-4-5: indirizzo della variabile (punta al bit)

Se apri il manuale in linea di Step7 e cerchi POINTER trovi subito la pagina con descritto quanto sopra. C'è anche una figura che rende tutto più chiaro e ci sono pure esempi di applicazione.

Per quanto riguarda l'apertura del progetto che ti ho indicato nell'altra discussione, e nel quale trovi indicazioni sull'uso dei puntatori, devi semplicemente scaricare il file e usare la funzione "Disarchivia" di Step7 (nel menù File).

Per capire meglio devi anche studiare l'utilizzo del registro indirizzi AR1.

Per ora di più non posso fare.

Parlare in modo esaustivo di puntatori e registri indirizzi richiederebbe parecchie ore.

Utilizza la funzione "cerca" del manuale in linea di Step7 e poi fai esperimenti.

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