luca31989 Posted March 6 Report Posted March 6 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 Posted March 6 Report Posted March 6 (edited) 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. Edited March 6 by dina_supertramp
dina_supertramp Posted March 6 Report Posted March 6 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).
luca31989 Posted March 8 Author Report Posted March 8 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 Posted March 8 Report Posted March 8 TO_PositioningAxis se asse di posizionamento TO_SpeedAxis se asse di velocità TO_SynchronousAxis se asse sincrono
luca31989 Posted March 8 Author Report Posted March 8 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 Posted March 9 Report Posted March 9 (edited) prova a guardare qui https://support.industry.siemens.com/cs/document/109822593/simatic-s7-1500t-using-ref_to-and-db_any-with-technology-objects?dti=0&lc=en-IT Edited March 9 by Mattia Spoldi
Mattia Spoldi Posted March 9 Report Posted March 9 (edited) 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 Edited March 9 by Mattia Spoldi
luca31989 Posted March 24 Author Report Posted March 24 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 Posted March 24 Report Posted March 24 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
luca31989 Posted March 24 Author Report Posted March 24 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
Mattia Spoldi Posted March 26 Report Posted March 26 ma per curiosità, sei partito a lavorare dal mio esempio o ne hai inventato uno tu?
beppeconti Posted March 26 Report Posted March 26 (edited) 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 Edited March 26 by beppeconti
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now