Vai al contenuto
PLC Forum


Scl - Pointers - Variant - Any


salrandazzo

Messaggi consigliati

Dato che nell'S7-1200 non è possibile usare l'AWL, e l'opzione KOP / FUP non mi entusiasma, ho deciso di provare ad utilizzare l'SCL.

E subito mi trovo davanti un ostacolo che ancora non ho saputo superare.

Il blocco di sistema MB_MASTER richiede all'ingresso Data_ptr (in realtà un parametro IN/OUT) una variabile Variant. In pratica è l'indirizzo del DB dove ci sono i dati del colloquio modbus.

SCL_01.jpgIl problema è che non so proprio come dargli l'indirizzo della DB27 - Master_DB.

Se metto Master_DB direttamente all'ingresso (come si fa in KOP), mi da errore "Il tipo dati Block DB non può essere convertito implicitamente nel tipo Variant".

Ho provato a definire una variabile temporanea V_pointer come Variant, ma se cerco di assegnare a questa variabile la Master_DB, stesso errore: Assegnazione non valida.

Ho cercato un operatore di conversione esplicita, ma non lo trovo.

Ovviamente in KOP tutto funziona a dovere:
SCL_02.jpg

Qualche idea per saltarne fuori?
Molte grazie.

Salvatore

Link al commento
Condividi su altri siti


Novità. Provando e riprovando, ho provato a "trascinare" la DB27 (Master_DB) dalla parte sinistra della finestra, dove ci sono tutti gli elementi del progetto all'istruzione SCL. Il TIA portal me l'ha automaticamente inserito e senza segnalare errore.

Non so ancora se funziona, ma per lo meno non mi da errore.

Purtroppo il TIA Portal non emula il 1200, quindi devo aspettare di avere l'oggetto disponibile alimentato sul banco.

Per inciso, la stessa operazione non funziona nella assegnazione di "Master_DB" alla variabile di tipo variant.

SCL_03.jpg

Link al commento
Condividi su altri siti

Rettifica. Non funziona. Sono ancora in cerca di un modo per passare il puntamento alla db Master_DB al parametro DATA_PTR del blocco MB_MASTER.

Penso che, più in generale, il problema sia: come si passano i puntatori ad una DB?

Tanto per evitare dubbi, ci ho provato in tutti i modi.

  • puntamento assoluto: DB27 o %DB27
  • puntamento assoluto al primo elemento della db: DB27.DBX0.0
  • puntamento simbolico: Master_DB
  • puntamento simbolico al primo elemento della db: Master_DB.MB_holding_regs.HR_01

Ho anche provato ad utilizzare una variabile variant come passaggio, ma fallisce anche l'assegnamento alla variabile variant.....

Ovviamente la DB è stata generata in modalità 300/400, ossia non ottimizzata, con la possibilità di indirizzamento assoluto.

Grazie per l'attenzione.

Salvatore

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