a.rezzan Inserito: 21 dicembre 2016 Segnala Inserito: 21 dicembre 2016 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.....
a.rezzan Inserita: 21 dicembre 2016 Autore Segnala Inserita: 21 dicembre 2016 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?
kizmeth Inserita: 27 dicembre 2016 Segnala Inserita: 27 dicembre 2016 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
a.rezzan Inserita: 28 dicembre 2016 Autore Segnala Inserita: 28 dicembre 2016 Risolto! Se conoscete altri modi fatemi sapere.
Messaggi consigliati
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 accountAccedi
Hai già un account? Accedi qui.
Accedi ora