Vai al contenuto
PLC Forum


Parametri Fc E Puntatori A Tipi Di Dato


Messaggi consigliati

Inserito:

Ho definito un tipo di dato UDT_1 di 18 byte.

Nella DB1 ho 4 elementi di tipo UDT_1: obj1, obj2, obj3, obj4.

FC1 è una funzione che come argomento in ingresso IN prende un oggetto di tipo UDT_1.

In OB1 posso richiamare FC1 in questo modo:

call FC1

i := DB1.obj1

Nella chiamata a FC1 posso sostituire DB1.obj1 con una notazione a puntatore? Di fianco l'editor scrive automaticamente P#DB1.DBX0.0, ma se provo a scriverlo direttamente nell'argomento mi esce l'errore "Il formato della costante del tipo di dati POINTER non è compatibile con il tipo formale UDT_1 del paramentro.formale"

Lo scopo della domanda è che vorrei richiamare la funzione in un loop per tutti e 4 gli elementi della db e nella scrittura di FC1 mi interessa che in ingresso prenda un UDT_1 in modo da poter accedere comodamente e in maniera leggibile ai suoi campi in maniera simbolica.

Grazie in anticipo.

Saluti


Inserita: (modificato)

Ciao,

infatti usando il puntatore il tipo della variabile che tenti di passare non è uguale a quella che hai definito per l'ingresso (uno e un pointer e l'altro UDT_1).

Ti consiglio di usare una variabile di appoggio di tipo UDT_1 per passare il parametro di input a FC1.

In OB1 (o comunque prima di richiamare FC1) puoi usare il puntatore od altri strumenti per caricare nella variabile di appoggio il dato relativo all'indice corrente.

Ciao

Loris

Modificato: da antoniaz
Inserita:

Grazie Loris,

quindi se ho ben capito, quello che tu suggerisci è di definire una variabile di tipo UDT_1 in OB1 e all'interno del loop copiare ogni volta, ad esempio tramite una BLKMOVE, l'intero contenuto di obj_x nella variabile d'appoggio?

Grazie ancora

Saluti

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