Jump to content
PLC Forum


Sign in to follow this  
Linotix

Fc e dichiarazione puntatori

Recommended Posts

Linotix

Salve, provo a spiegare cosa voglio fare, spero di farmi capire. In un blocco fc devo introdurre su una variabile in tipo pointer l’indirizzo di un bit bool (tipo DB1.DBX0.2 ) parte di un array di 20 bool. Sulla variabile pointer out devo avere l’indirizzo della posizione corrispondente corrispondente di un array a 20 interi( in questo caso DB2.DBW4.0. Per farmi capire meglio ogni dato dell’array bool deve corrispondere al dato nella medesima posizione dell’array int. ovviamente il primo dato di entrambi gli array è 0.0. Quindi 0.0=0.0, 0.1=2.0, 0.2=4.0 e così via. Qualche idea? Grazie

Share this post


Link to post
Share on other sites

elettromirko85

Ciao Linotix ho un po’ di difficoltà a capire l’ultima parte dove dici 0.0 = 0.0 poi 0.1 = 2.0 ecc ecc penso ti riferisca all’indirizzo assoluto associato ai due array... bhe intanto la mia prima domanda su che macchina stai pensando di fare la cosa? La sostanza cambia di poco ma era una precisazione che ci sarebbe stata... seconda cosa non specifichi cosa devono fare gli elementi del primo elemento rispetto al secondo... comunque il concetto che dovrai seguire detto alla veloce è il seguente gli array sono delle matrici che posso essere a più dimensioni... nel tuo caso avrai due matrici ad un elemento, la prima un’array di 20 elementi bool è una secondo con 20 elementi int e qua ci siamo nella tuo programma avrai una variabile che chiamerò indice che dovrà essere di tipo intero che non è altro che la posizione che andrai a puntare nelle tue matrici. Avrai una condizione che scatenerà l’esecuzione del ciclo che sarà un loop che dovrà puntare ogni elemento del tuo array e leggere o scrivere le rispettive variabili. Le considerazioni importanti sono che la tua variabile indice dovrà SEMPRE essere compresa all’interno della dimensione del tuo array e una volta eseguito il loop dovrà essere rinizializzata al primo elemento del tuo array.

esempio ho la variabile  pippo[1...20] array of int e la variabile pluto [1...20] array of bool, nel tuo programma avrai la variabile “indice” che sarà il tuo puntatore bene. La posizione è data dal valore contenuto nella variabile indice, quindi dichiarando nella tuo programma gli array nel seguente modo pippo[indice] e pluto[indice] e gestendo l’incremento della variabile di puntamento ti sposti nei due array nella stessa posizione poi vai a leggere o scriverne i contenuti. 

Spero di averti reso l’idea.

buona serata

Share this post


Link to post
Share on other sites
selvax

Anche io ho capito poco , comunque devi generare due vettori come detto sopra 

6 ore fa, elettromirko85 scrisse:

pippo[1...20] array of int e la variabile pluto [1...20] array of bool

 

la tua variabile di ingresso sarà Indice

 

se devi associare i due valori a due variabili avrài in fc una sola riga di programma (es scl )

VariabileuscitaINT:=pippo[indice];

VariabileuscitaBOOL:=pluto[indice];

 

 

Share this post


Link to post
Share on other sites
Linotix

Ok grazie. Comunque intendevo che la prima variabile di un array bool debba puntare alla prima variabile dell’array int , la seconda alla seconda e così via. Quello che mi serve è che se il bit 0.0 dell’array bool è alto mi faccia caricare l’intero 0.0 dell’array int in una mw, il 0.1 mi faccia caricare il 2.0  visto l’int è di 2 byte. e così via. 

Share this post


Link to post
Share on other sites
selvax

 istruzione IF, se bit "true" fai assegnazione

 

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...