Vai al contenuto
PLC Forum


Parametro Pointer In S7-300


Marco75

Messaggi consigliati

Salve a tutti,

il mio problema è il seguente:

ho una FC con un parametro di ingresso di tipo POINTER, all'interno della FC richiamo un'altra FC alla quale vorrei passare lo stesso parametro POINTER.

Purtroppo al parametro di ingresso POINTER non posso passare un altro parametro POINTER :o

C'è modo di passare una variabile in ingresso invece dell'espressione P#... ?

Link al commento
Condividi su altri siti


Purtroppo al parametro di ingresso POINTER non posso passare un altro parametro POINTER

Se utilizzi un POINTER come parametro formale, il parametro attuale dovrà essere, necessariamente, un indirizzo.

Ti suggerirei di "giocare" sul modo con cui STEP7 memorizza i parametri POINTER, ossia su 3 Words

- La prima indica il DB

- La seconda indica l'area di memoria

- La terza indica il Byte ed il bit

Magari riesci a risolvere....... :rolleyes:

Link al commento
Condividi su altri siti

Ciao Varlux,

conoscevo già il formato dei parametri POINTER ma non ho ancora trovato soluzioni.

Quello che non capisco è perchè il "giochino" che tento di fare è lecito con i POINTER ANY mentre con i POINTER normali no.

In fondo tra i due tipi di dato non c'è tanta differenza, mi pare.

Se ho un parametro di ingresso di tipo ANY, posso dichiarare una variabile temporanea dello stesso tipo e poi (conoscendone il formato) riempirla con i dati che mi servono, di volta in volta diversi, e quindi passarla al parametro di ingresso.

Purtroppo non si possono dichiarare variabili temporanee di tipo POINTER e comunque non verrebbero accettate dalla funzione quindi quello che si può fare con gli ANY non è possibile con i POINTER.

Oppure no?

Link al commento
Condividi su altri siti

  • 1 year later...

Il pointer è contenuto in 32 bits e lo puoi passare come vuoi del resto è un DINT

Stà tutto nel fatto di come lo interpreti e quindi lo usi.

Per gli ANY è un'altro paio di maniche. Sono si dei puntatori, ma occupando 10 bytes non possono essere contenuti nelle normali variabili native.

Li puoi passare tramite parametri e crearli nelle variabili temporanee.

I pointer comuni non contengono la tipologia dell'area sorgente o destinazione ma soltanto indirizzi.

Li puoi utilizzare comunque per qualsiasi area di memoria, basta che questa venga predisposta tramite i registri indirizzo oppure con un AUF DBxxx.

I puntatori ANY contengono invece la completa definizione dell'area a cui puntano e sono molto adatti al passaggio di parametri perchè l'editor di S7 ti precompila semplicemente il puntatore con una sintassi tipo dbxxx.dbd45 len = 80

in cui passi la db, la doubleword di partenza e la lunghezza.

Link al commento
Condividi su altri siti

Federico Milan

Il roblema pesno proprio che sia nel fatto che il poiter referenzia un indirizzo, e non esiste ome esempio in c un tipo di varibile puntatore, ossia il cui contenuto è un indirizzo. Il giochetto che vuoi fare non funziona, devi a mio avviso utilizzare gli ANY o ricercare altre soluzioni

Link al commento
Condividi su altri siti

  • 10 months later...
gabriele.winter

Ciao a tutti, volevo fare una semplice domanda, per voi tutti sicuramente ovvia ma per me un pò meno...

In un impianto con faretti alogeni 12V e relativo trasformatore 220/12, l'interruttore va messo a monte del trasformatore con interruzione della fase 220, o al contrario a valle, con interruzione delle line 12V magari il positivo???

Grazie a tutti, aspetto fiducioso un vostro consiglio

Link al commento
Condividi su altri siti

Benny Pascucci

Sul primario, diversamente il trafo, anche con lampade spente, essendo sempre alimentato al primario assorbirebbe la corrente a vuoto, la qual cosa, oltre a costituire uno spreco ecologico, lo farebbe durare non tanto a lungo.

Link al commento
Condividi su altri siti

Per essere eccessivamente pignoli, pochè sono già esaustive le consierazioni di Benny Pascucci inserendo l'interuttore sul secondario (a 12V) dovresti interrompere pure una corrente maggiore (a parità di potenza) e probabilmente allungheresti il percorso dei cavi a 12V sui quali la caduta di tensione in percentuale si fa sentire di più. Inoltre qualora dovessi sostituire il semplice interuttore con uno dimmerabile dovresti probabilmente ricablare una parte dell'impianto poichè i dimmer funzionano (praticamente tutti) a tensione di rete e non a 12V, anche se esistono trasformtori predisposti per l'utilizzo di un potenziometro esterno.

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