Vai al contenuto
PLC Forum


Puntatori e valore indirizzi


Micra_a

Messaggi consigliati

salve, 

sono nuovo e sto smanettando da circa un mese con simatic manager, sto provando a pilotare un motore (ovviamente a scopo didattico) e vorrei che con un pulsante cambiasse la velocità impostata, mi spiego meglio

In un FB ho inserito delle stat di tipo int con dei valori, essi sono i numeri di giri che vorrei compisse il motore, vado a puntare la prima con il puntatore ed ogni volte che si preme il pulsante vorrei che incrementasse il valore del puntatore e passasse alla stat successiva, passando così al numero di giri successivo

solo che appunto non riesco ad utilizzare il valore delle stat poiché il puntatore mi prende l'indirizzo e anche a caricarlo nell'accumulatore mi appare un numero (32) che non so da dove possa averlo preso 😖

se potete darmi una mano o qualche manuale da seguire un po' meno conciso di quelli siemens 

grazie mille😊

Link al commento
Condividi su altri siti


6 hours ago, Micra_a said:

In un FB ho inserito delle stat di tipo int

immagino che tu abbia inserito dei numeri INT in un DB

 

Quel numero a 32 bit è l'indirizzo della cella INT entro la memoria o meglio è l'indirizzo del suo primo bit. Se lo incrementi di 16 (2 byte)  con una addizione DINT ottieni l'indirizzo della cella successiva. E puoi usare quell'indirizzo per leggere il numero successivo.
 

Modificato: da rguaresc
Link al commento
Condividi su altri siti

il 14/12/2018 at 23:48 , coquinati scrisse:

da quel che ho capito hai inserito  varie  costanti di velocità e vuoi che un puntatore te le selezioni ? 

grazie mille per aveir risposto coquinati 

 

esattamente vorrei che ogni volta che si preme il pulsante il puntatore selezioni all'inizio il primo valore e ad ogni pigiata il valore successivo

solo che appunto mi riporta in uscita solo l'indirizzo della stat senza il valore che gli ho assegnato

(la parte dell'incremento del puntatore funziona, nel senso che mi legge l'indirizzo successivo, solo che appunto mi riporta solo quello e non il valore che ho assegnato a quell'indirizzo)

grazie mille

il 14/12/2018 at 21:29 , rguaresc scrisse:

Quel numero a 32 bit è l'indirizzo della cella INT entro la memoria

grazie per l'attenzione rguaresc

non so se ho capito bene ma stai dicendo che il numero 32 che mi appare nell accu1 quando carico l'indirizzo della stat con il puntatore è l'indirizzo del suo primo bit della cella di memoria?

proverò a fare come mi ha suggerito 

grazie ancora

Link al commento
Condividi su altri siti

Ciao

sarebbe bene vedere anche il pezzo di codice per capire, ad ogni modo, se non ho capito male tu vuoi che alla pressione di un tasto il tuo "puntatore" puntasse alla posizione successiva delle velocità scritte nel DB, per prima cosa farei incrementare una variabile intera (da 1 a N) dove N indica quante sono le tue velocità esempio 10, 

questa variabile poi la trasformo in puntatore e con un semplice L DI[Vel_puntata] T Giri_Motore.

 

Saluti 

Link al commento
Condividi su altri siti

12 hours ago, Micra_a said:

il numero 32 che mi appare nell accu1 quando carico l'indirizzo della stat con il puntatore è l'indirizzo del suo primo bit della cella di memoria?

esatto

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