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




Scl - Pointers - Variant - Any


Messaggi consigliati

Inserito:

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


Inserita:

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

Inserita:

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

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