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




Come passare un puntatore ad una FC???


Messaggi consigliati

Inserito:

Salve sapete come passare con TIA 13 un puntatore ad una FC?

Vorrei creare una funzione che passando come parametro la dimensione dell'array e l'indirizzo dell'array (in simbolico magari) mi calcoli la somma e mi restituisca il salore di questa.

Non so come dichiarare le variabili di ingresso della funzione, sapete come si fa?

Ho visto che esistono i tipi POINTER e VARIANT, presumo siano i Pointer quelli che fanno al caso mio.....


Inserita:

Mi sto avvicinando, ho creato una funzione alla quale gli passo l'array (D) come InOut di tipo Variant.

L'array che parrerò sara di tipo Bool.

Ho poi dichiarato:

x : Int

N : UDInt

p :Bool

 

Poi ho scritto il seguente codice:

IF IS_ARRAY(#Arr) AND NOT(IS_NULL(#Arr)) THEN
    #N := CountOfElements(#Arr);
    IF TypeOf(#Arr) = Bool THEN
        FOR #x := 0 TO UDINT_TO_INT(#N) -1  DO
            VariantPut(SRC := #Arr[#x],
                       DST := #p);
        END_FOR;
    END_IF;
END_IF

 

che non ha molto senso ma mi serve per capire come estrapolare i dati dall'array. In pratica p dovrebbe assumere il valore di #Arr[#x].

Ora ho il problema su "VariantPut(SRC := #Arr[#x], DST := #p);", non gli piace "#Arr", potete aiutarmi?

 

Inserita:

Prima di entrare nel loop passa #arr in un array locale grande quanto il massimo array che prevedi di usare.

usa variantGet per passare il variant alla variabile temporanea. Non credo che tu possa utilizzare la sintassi #Arr[#x], in quanto #Arr non è un array.

 

ad esempio:

tArr: array[0..100] of bool;

 

IF IS_ARRAY(#Arr) AND NOT(IS_NULL(#Arr)) THEN

   VariantGet(SRC := #Arr,
                       DST := #tArr);

ELSE

    RETURN;

END_IF;

 

e nel tuo codice usa #tArr[#x].

 

Spero di esserti stato utile!

M

 

 

Inserita:

Risolto!

 

Immagine.png

 

Se conoscete altri modi fatemi sapere.

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