fiorezzz Inserito: 16 febbraio 2015 Segnala Share Inserito: 16 febbraio 2015 Salve a tutti Siccome sono poco poco pratico nella gestione dei puntatori ho un paio di domande : 1) La notazione L P#E 600.1 come si "trasforma" se 600.1 deve essere "parametrizzata" ovvero se devo sosttuirla con il contenuto di una variabile tipo ...L 600.1 Var1 L P#Var1 2)Come faccio a passare un "puntatore" ad una zona di memoria di una DB (Tipo DB300.DBW10) ad un FC in modo tale da lavorare all'interno dell'FC senza aver bisogno di sapere a quale DB si fa riferimento (non vorrei neanche passare il numero della DB... e poi determinare il relativo puntatore ) Link al commento Condividi su altri siti More sharing options...
batta Inserita: 16 febbraio 2015 Segnala Share Inserita: 16 febbraio 2015 Se ho capito bene tu vorresti avere acceso all'ingresso E 600.1 dove però l'indirizzo 600.1 è contenuto in una variabile. Se è così, puoi scrivere: U E[VarIndice] dove la variabile VarIndice è una DINT e deve contenere il valore 600 * 8 + 1 = 4801 in decimale (0000 12C1 Hex) Per essere più corretti si dovrebbe impostare anche l'area di memoria (ma non è obbligatorio visto che nell'istruzione si specifica già l'area di memoria E). Un modo per creare un indirizzo completo di area di memoria è il seguente: L P#E0.0 L DW#16#000012C1 OD T VarIndice Come già detto però, se indichi l'area di memoria nell'istruzione questa operazione non è indispensabile. Potrebbe diventare utile nel caso tu volessi indicizzare il numero del bit a partire da un offset. Per esempio, se vuoi puntare al bit E600.1 creando un indice a partire da E600.0, potresti scrivere così: L P#E600.0 L NumeroBit + D T VarIndice In questo modo se NumeroBit = 0 punti a E600.0, se NumeroBit = 1 punti a E600.1, se NumeroBit = 10 punti a E601.2 Un altro metodo consiste invece nel lavorare con il registro degli indirizzi AR1. Potresti per esempio scrivere: LAR1 P#E600.0 L NumeroBit +AR1 U E[AR1,P#0.0] In questo caso, potresti anche omettere nell'istruzione l'area di memoria e scrivere: U [AR1,P#0.0] Questo può tornare utile se l'area di memoria può variare. Nel caso l'area di memoria sia definita, inserirla nell'istruzione rende il codice più chiaro. Per la seconda domanda, ti consiglio come prima cosa di cercare nella guida in linea come è fatta la variabile di tipo POINTER (6 byte), e poi di dare un'occhiata a questa discussione: Link al commento Condividi su altri siti More sharing options...
STEU Inserita: 16 febbraio 2015 Segnala Share Inserita: 16 febbraio 2015 Per la prima parte potresti scrivere questo codice LAR1 P#600.0 U L [AR1,P#0.0] Link al commento Condividi su altri siti More sharing options...
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