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




Calcolo Puntatori


Messaggi consigliati

Inserito:

Buon giorno a tutti, sono nuovo nel forum. studiandomi un po l's7 200 ho incontrato una difficoltà, adesso spiego tutto.

io riesco a usare più o meno i puntatori e a puntare in modo sequenziale, ma se io volessi puntare per esempio ad un elemento qualsiasi dell'array senza ogni volta fare l'incremento. come si può fare? vi ringrazio già da adesso


Inserita:

Se conosci l'indirizzo del primo elemento del vettore, basta aggiungere a questo lo spiazzamento dell'elemento interssato.

Ad esempio immagina un vettore di 200 bytes che inizi dalla locazione 540. Se vuoi puntare all'elemto 75 basta somamre 74 a 540 ==> 614

Inserita:

ah quindi se io ho un vettore che inizia dalla vb100 e voglio puntare per esempio alla vb130 basta che faccio vb100+vb130? se è cosi, il risultato in uscita dove lo trasferisco?

Inserita: (modificato)

mi è partito questo messaggio scusate non riuscivo a toglierlo

Modificato: da cliche1995
Inserita:

Scusa se sai già che l'elemento interessato è alla VB130 hai gia l'indirizzo da mettere nel puntatore.

Inserita:

ah e se invece non sai cosa c'è nell'elemento che vuoi puntare, lo punti alla "ceca"? scusa signor Livio ma essendo autodidatta faccio un po fatica

Inserita:

ah quindi se io ho un vettore che inizia dalla vb100 e voglio puntare per esempio alla vb130 basta che faccio vb100+vb130?

diciamo che in VB10 hai il tuo puntatore alla VB100

VB10 = &VB100

se vuoi andare alla VB130

VB10 = VB10 + 30

Facciamo un esempio:

Immagina di avere un'area di memoria dalla VB100 alla VB999 dove risiedono tutti i parametri utente, divisi per formato, di 100 in 100 (dalla VB100 alla VB199 = formato 1 e così via); dalla VB1000 alla VB1099 invece c'è l'area di memoria dei parametri che usi nel ladder (i parametri, per capirci, sono i valori dei timer, contatori, velocità, collaudi e ... non mi viene nient'altro :whistling: ); quando l'utente cambia formato, il ladder deve preoccuparsi di caricare da VB1000 a VB1099 con i parametri del formato corretto.

Come lo fai ?

Se non vuoi impazzire a scrivere un ladder lungo, lo fai in pochi segmenti con i puntatori ...

Inserita:

ti ringrazio, molto gentili. questo forum è perfetto per un principiante

Inserita:

se punti alla cieca devi fare un ciclo for e cercare quello che ti interessa.

Se predispone bene l'area V puoi implementare tabelle , per esempio una colonna prende da VB100 a VB180 , un'altra da VB200 a VB280 e cosi via

In questo caso devi avere un puntatore per ogni "colonna" della tabella virtuale .Dico virtuale perche le strutture dati con S7-200 non erano esplicite .

Per cui quando incrementi il puntatore della prima colonna incrementi anche tutti gli altri delle altre colonne .

Tra l'altro in microwin l'uso dei puntatore usava identificatori come il C ....' &' e ' * ' per caricare un indirizzo e per deindirizzare

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