puntatori e tabelle

PLC, servomotori, inverter...robot

Moderatori: Foto Utentedimaios, Foto Utentecarlomariamanenti

Avatar utente
Foto Utentesanbon
0 2
Messaggi: 1
Iscritto il: 22 set 2008, 20:26
0
voti

[1] puntatori e tabelle

Messaggioda Foto Utentesanbon » 22 set 2008, 20:31

Buonasera a tutti, sono nuovo nel forum e spero possiate aiutarmi: Ho necessità di capire il funzionamento dei puntatori in quanto devo apportare delle modifiche a un softw esistente... il softw è stato creato con pl7pro, qualcuno puo aiutarmi?

Avatar utente
Foto Utentem_dalpra
37,5k 6 10 12
-EY Legend-
-EY Legend-
Messaggi: 1155
Iscritto il: 30 ago 2004, 11:04
Località: Mestre (Venezia)
Contatta:
2
voti

[2] Re: puntatori e tabelle

Messaggioda Foto Utentem_dalpra » 27 set 2008, 19:15

Non conosco il software che hai indicato, ma visto che nessuno per ora ti ha dato qualche "dritta" provo ad aiutarti
parlando in generale.

Un puntatore e' un numero, e' una variabile, ad esempio nel classico dei cicli che si fanno quando si studia informatica
FOR I:= 1 TO 10
PRINT I
NEXT

In questo caso I e' una coumunissima variabile del programma, ma se il programma usa una ARRAY o MATRICE,
allora I si dice che e' il suo puntatore; ad esempio, lo stesso programma di prima :

FOR I:=1 TO 10
PRINT Array[I]
NEXT

L'array o matrice e' come un albergo con tante camere numerate; in ogni camera c'e' un dato.
Se la matrice e' di interi, c'e' un numero; se la matrice e' di stringhe, c'e' un testo.
Il puntatore non e' altro che il numero che indica in quale camera dell'albergo stai leggendo o scrivendo un dato.
L'esempio vale per i PC ma anche per i PLC.

Spero di essere quantomeno riuscito a chiarire i concetti basilari.
Ciao
Marco

Quel che ci dà la vera forza per affrontare con piacere la vita è il sentirsi utile agli altri. z.m.

Avatar utente
Foto Utentephylum
6.191 5 7 12
G.Master EY
G.Master EY
Messaggi: 3217
Iscritto il: 9 ott 2007, 12:40
0
voti

[3] Re: puntatori e tabelle

Messaggioda Foto Utentephylum » 27 set 2008, 19:21

detto piu' volgarmente il puntatore e' si' un "contenitore" ... ma il suo contenuto e' l'indirizzo di un altro "contenitore" ;P
cioe' un riferimento

e' come se ti dico:
Pi = 3.14 (salvato nell'indirizzo 0x0000001) :P
rif = &Pi
rif = 0x0000001
\int_{}tella
Immagine

Avatar utente
Foto UtenteIvan_Iamoni
5.336 6 10 12
Utente disattivato per decisione dell'amministrazione proprietaria del sito
Messaggi: 2330
Iscritto il: 22 ott 2006, 18:45
0
voti

[4] Re: puntatori e tabelle

Messaggioda Foto UtenteIvan_Iamoni » 28 set 2008, 14:42

L'esempio di Marco è molto contorto, e si chiarisce solo nell'ultima parte , vale a dire:
Il puntatore non e' altro che il numero che indica in quale camera dell'albergo stai leggendo o scrivendo un dato.
L'esempio vale per i PC ma anche per i PLC.

Quello che ha scritto Pylum è più chiaro , salvo il fatto che un puntatore può contenere un valore che sia l'indirizzo del dato a cui puntare , ma anche il contenuto del dato puntato , dipende dalla sua sintassi.
Questo chiaramente per i PLC .

pointar.GIF
Manuale S7-200
pointar.GIF (3.6 KiB) Visto 2199 volte

Effettivamente il formato "pointer" e l'indirizzamento indiretto è una cosa molto lunga da spiegare in un post.
Ciao
Ivan

Avatar utente
Foto Utentephylum
6.191 5 7 12
G.Master EY
G.Master EY
Messaggi: 3217
Iscritto il: 9 ott 2007, 12:40
0
voti

[5] Re: puntatori e tabelle

Messaggioda Foto Utentephylum » 28 set 2008, 14:47

PHYLUM!

pls stop coi Philum/Pylum/Phykum

pero' attenzione : un puntatore NON contiene ;) come dici tu - cambiando la sintassi (in C col * - in PLC nn ne ho idea ;) ) ottieni l'accesso al dato puntato! la trovo una differenza importante perche' una variabile o un array da 1 giga lo vedo... un puntatore che nn sia tra 8 e 128 bit e' difficile trovarlo.
\int_{}tella
Immagine

Avatar utente
Foto UtenteIvan_Iamoni
5.336 6 10 12
Utente disattivato per decisione dell'amministrazione proprietaria del sito
Messaggi: 2330
Iscritto il: 22 ott 2006, 18:45
0
voti

[6] Re: puntatori e tabelle

Messaggioda Foto UtenteIvan_Iamoni » 28 set 2008, 15:25

Scusami , Stella.
Invece io non so in C , ma nel PLC dell'esempio che ti riportavo è proprio quello classico.
Essendo stata la richiesta di chiarimenti sul puntatore in PL7 (linguaggio di programmazione dei TXS premium) se non sbaglio.
Sintassi &...registro ,scrive nel registro il valore di indirizzo dato dal tipo di area (V) in questo caso e suo numero di identificazione.
MOVD &VB1000, AC2
Scrive nel registro AC1 l'indirizzo VB1000.
E' un intero a 32 bit.
Nei PLC il dato è "finito" in formato Pointer è una D.word
Questo dato di tipo pointer, lo si può sommare o moltiplicare per un'altra costante , a proprio piacimento andando a modificare l'indirizzo dinamicamente.

Sintassi *...registro , scrive nella destinazione assegnata il valore del contenuto del dato il cui indirizzo è specificato nel registro stesso.
MOVD *AC1, AC2
Scrive nel registro AC2 l'indirizzo VB1000 contenuto nell'accumulatore AC1.
Oppure
MOVw *AC1, vw10
Scrive solo il dato contenuto nella prima word (VB1000+VB1001) nella word VW100.

Intendo dire che il dato puntatore o il registro ACx associato ad esso è un dato bi-direzionale.
Con la corretta sintassi può fornire l'informazione dell'indirizzo o il contenuto dell'indirizzo stesso.

Codice: Seleziona tutto

MOVW   *AC1, LW8


Nel caso di dati "complessi come può essere una stringa , una matrice o array , il registro contiene solo le prime due word del dato stesso.
Per utilizzarle si usano i comandi di raggruppamento che sono BLOCKMOVE...X dove x è la lunghezza dell'area di memoria.

Codice: Seleziona tutto

BMD    *AC1, VD616, 6
Scrive il contenuto a partire da VD1000 per 6 Dword , a partire da VD616 per 6 Dword a seguire.
Questa sintassi si usa nel caso le dimensioni del dato siano superiori ai 32 bit.
Spero di essere stato più chiaro.

Ciao
Ivan

Avatar utente
Foto Utentephylum
6.191 5 7 12
G.Master EY
G.Master EY
Messaggi: 3217
Iscritto il: 9 ott 2007, 12:40
0
voti

[7] Re: puntatori e tabelle

Messaggioda Foto Utentephylum » 28 set 2008, 15:31

ok e' un accezione un po diversa ;) in sostanza e' come se nn faceste alcuna diff. fra variabile e puntatore :P

usate "variabili" multi-uso, multi-significato

vabe' poco importa ;)
\int_{}tella
Immagine


Torna a “Automazione industriale ed azionamenti”