Vai al contenuto
PLC Forum


Oggetto tecnologico in ingresso ad un FB


Messaggi consigliati

Inserito:

Buongiorno a tutti colleghi,

Stavo cercando di sviluppare un FB in cui all'interno ho i classici blocchetti di motion by Siemens (MC_Power, MC_Home ecc...) quando ho scoperto che il tipo di dati "TO_Axis" degli oggetti tecnologici non è selezionabile come ingresso all'FB.

E' vero che si può risolvere inserendo come ingresso un DB ANY il problema è che così facendo non ho accesso ai tipi di dati all'interno se voglio usarli all'interno dell'FB.

Qualcuno può darmi una mano?

 

Vi ringrazio


Inserita: (modificato)

 

 

Non è che non ci sia, è solo che lo devi scrivere per intero, col nome esatto dell'oggetto tecnologico.

Esempio:

immagine.png.9077c8ab2cb79d7e71e2addd30c260b6.png

 

Ovviamente, visto che i dati dell'asse li devi leggere ed anche scrivere, non lo devi mettere come parametri di ingresso, ma come IN/OUT.
Tra l'altro, in questo modo risparmi anche, perché viene creato un puntatore, e non tutta la struttura dell'oggetto tecnologico.
E, a detta di Siemens, c'è anche un accesso più veloce.

 

Modificato: da batta
Inserita:

Come sempre Batta numero 1.

Comunque ho dovuto scrivere il nome dell'oggetto per intero, non vedendo il suggerimento pensavo non si potesse fare.

 

Grazie!

Inserita:
Il 11/4/2022 alle 11:20 , batta ha scritto:

Ovviamente, visto che i dati dell'asse li devi leggere ed anche scrivere, non lo devi mettere come parametri di ingresso, ma come IN/OUT.

Io avevo fatto una applicazione un annetto fa e mi ero fatto il mio blocco FB con dentro tutte le funzioni MC_xxx e il parametro dell'asse l'avevo messo come Input.

Avevo optato per questa modalità perché avevo visto che tutte le funzioni MC_xxx lo richiedevano come parametro di input.

 

 

 

Inserita: (modificato)
3 ore fa, beppeconti ha scritto:

Avevo optato per questa modalità perché avevo visto che tutte le funzioni MC_xxx lo richiedevano come parametro di input.

All'asse vengono anche inviati comandi, quini la soluzione corretta è IN/OUT. Se funziona anche dichiarandoli solo come Input, non lo so, dovrei provare. Ma, anche se funziona, rimane concettualmente sbagliato. E poi, dichiarandolo come Input, viene replicata l'intera struttura del DB dell'oggetto tecnologico, con inutile dispendio di memoria e di tempo, perché, dichiarato come Input, vengono copiati tutti i dati, anche quelli (e sono la maggior parte) che non servono per le funzioni utilizzate. Dichiarando invece come IN/OUT, viene creato un puntatore (un po' come passare i parametri "byRef" anziché "byVal") e solo i dati veramente usati vengono letti e/o scritti.

Modificato: da batta
Inserita:

Funzionare funziona, il prototipo su cui ho fatto l'applicazione ha funzionato per alcuni mesi.
I comandi all'asse, almeno nel mio caso, non li inviavo io direttamente ma le funzioni MC_xx chiamate nel mio FB.
Le funzioni MC_xx prendono tutte il parametro Axis come Input e da li ho pensato fosse corretto usare anche nel mio FB il parametro Axis come Input.
Tieni presente che è la prima e unica applicazione che ho fatto utilizzando il Motion integrato nelle CPU del 1500 e quindi è sicuramente migliorabile

Inserita:

Nel caso degli oggetti tecnologici vengono sempre passati come puntatori anche se dichiarati come input.

Non riesco ad allegare la pagina del manuale, comunque è tutto indicato nel manuale del motion "Motion Control Overview" al paragrafo 6.2.3

 

 

 

Inserita:

Hai perfettamente ragione: nel caso degli oggetti tecnologici, anche passando l'oggetto come Input non viene generata tutta la struttura.
Quindi è corretto anche dichiararlo come Input.
 

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