Vai al contenuto
PLC Forum


Oggetto tecnologico in ingresso ad un FB


bhef

Messaggi consigliati

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

Link al commento
Condividi su altri siti


 

 

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
Link al commento
Condividi su altri siti

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!

Link al commento
Condividi su altri siti

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.

 

 

 

Link al commento
Condividi su altri siti

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
Link al commento
Condividi su altri siti

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

Link al commento
Condividi su altri siti

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

 

 

 

Link al commento
Condividi su altri siti

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.
 

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