Vai al contenuto
PLC Forum


Motion parametrico


Messaggi consigliati

Inserito:

Ciao a tutti,

 

per un progetto devo utilizzare degli assi elettrici in modalità di sincronizzazione. Ho creato una Function block che si chiama motion contenente i seguenti fb:

  • MC_Power
  • MC_Reset
  • MC_MoveJog
  • MC_Movrerelative
  • MC_Moveabsolute
  • MC_Halt
  • MC_Home
  • MC_MoveVelocity
  • MC_Stop
  • MC_GearIn

 

Per ogni fb precedentemente elencato ho creato una DB di istanza. Questo però risulta scomodo quando devo richiamare quel blocchetto per N volte. E' possibile creare una DB di istanza nelle statiche della FB principale (ossia quella che richiama le viare MC)? Se si come?

 

Grazie

Luca

 


dina_supertramp
Inserita: (modificato)

Modo "manuale"
Vai nell'area static dell'FB dichiara un nuovo dato e come tipo di dato dichiara MC_.......
Per vederlo disponibile nei tipi di dati devi aver richiamato almeno una volta l'istruzione all'interno dell'FB.

Modo "automatico"
Ogni volta che trascini un istruzione di motion dalla biblioteca, quando ti viene chiesta la creazione del DB d'istanza dichiara multi-istanza.


 

Esempio.png

Modificato: da dina_supertramp
dina_supertramp
Inserita:

Quello che stai chiedendo, in ambiente Siemens è chiamato: DB a multi-istanza.
Cioè sta istanziando un DB (in questo caso quello dell'oggetto motion) all'interno di un DB che è già d'istanza (quello dell'FB).
 

esempio 2.png

Inserita:

Ciao,

 

grazie per la info. L'axis come lo dichiaro? Ho provato sia in input che in InOut di tipo ANY_DB ma non funziona. Funziona solo se trascino l'oggetto tecnologico.

 

Ciao

Luca

Mattia Spoldi
Inserita:

TO_PositioningAxis se asse di posizionamento

TO_SpeedAxis se asse di velocità

TO_SynchronousAxis se asse sincrono

Inserita:

Ciao,

 

Grazie per le info. Che tu sappia ne esiste uno generico che raggruppa tutti e tre? Altrimenti dovrei fare tre librerire cambiando il tipo di oggetto tecnologico.

 

Grazie ancora

Luca

Mattia Spoldi
Inserita: (modificato)

 

ti allego un sorgente che avevo iniziato a fare per fare la stessa cosa, l'ho abbandonato perchè avere un blocco di motion che fa tutto non mi piace, però fino a dove ero arrivato funzionava

 

nel caso volessi usarlo, è da completare con le funzioni mc che mancano, ma in ogni caso, toglierei la parte degli assi sincroni e la gestirei a parte

 

 

 

 

Modificato: da Mattia Spoldi
  • 3 weeks later...
Inserita:

Ciao a tutti,

 

scusate il ritardo... sto sviluppando la libreria e sto provando i blocchetti mc jog e velocity. In jog mi funziona correttamente ma quando richiamo il blocchetto mc_velocity il motore rimane fermo. Rimane fermo anche se do lo stesso riferimento di velocità e il comando di velocità. Il blocchetto restituisce in esecuzione e in velocità ma il motore rimane fermo.

 

Qualcuno sa aiutarmi?

 

Grazie mille

dina_supertramp
Inserita:

Verifica che al drive arrivi il riferimento di velocità, il comando di start e le abilitazioni, andando online sul drive.

Non so cosa stai usando ma se è un drive Siemens puoi vedere facile i singoli bit delle parole di scambio col plc.

Il blocco move velocity ti dà errori quando lo attivi? #Error ed #ErrorId

 

 

 

 

 

 

Inserita:

No, non da alcun errore... mi restituisce il bit "InVelocity", il bit error rimane a zero e il bit error id resta a zero. Non ho controllato che il drive riceva il bit corretto, ma ho controllato che al drive venisse scritto il setpoint. Il setpoint non viene scritto pur avendo messo una costante in ingresso al drive. Domani verifico e vi faccio sapere.

 

Nel frattempo grazie mille

Inserita:

facile che ci sia l'override a zero.

 

Mattia Spoldi
Inserita:

ma per curiosità, sei partito a lavorare dal mio esempio o ne hai inventato uno tu?

 

Inserita: (modificato)

Per chi non vuole farsi tutta la gestione da zero si possono utilizzare la librerie della Siemens "LAxisBasics" e "LAxisCtrl"   

https://support.industry.siemens.com/cs/document/109749348/simatic-s7-1500-s7-1500t-standard-application-axis-control?dti=0&lc=en-IT

 

occhio che il blocco MC_MoveVelocity lavora sul fronte di salita del comando a differenza del blocco MC_MoveJog che lavora sul comando alto

Modificato: da beppeconti

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