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




Calcolo Velocità Tappeto


Messaggi consigliati

Inserito:

Salve a tutti ragazzi, sono nuovo del forum ma seguo le vostre discussioni ormai da tempo e voglio complimentarmi con tutti voi per l'aiuto che date a chi ha voglia di imparare!

Innanzitutto mi presento, sono colui che la ragioneria definisce "ragioniere-programmatore" :) praticamente a scuola ho imparato come fare le moltiplicazioni con visual basic hehehe.

Per passione mi piace fare piccoli impiantini di automazione con della roba che riesco a procurarmi in ditta, magari roba in disuso o obsoleta.

PREMETTO

non sono un programmatore, lungi da me volermi definire tale, ma fino a fare arresti/marcia finecorsa robe semplici CI SONO :) Ho deciso di provare a cimentarmi in qualcosa di più complesso; ho 2 tappeti che camminano in velocità proporzionale tra di loro, ovvero fungono da polmone per delle bobine di carta.

All'apparenza sembra che io abbia tutto, ho 2 encoder 2500 impulsi/giro con tacca di 0, 2 inverter, e ho la fortuna di avere a disposizione una cpu che (leggendo tra i vostri commenti) è di buona qualità, una s7-314c-PtP

Ho la Scheda per il conteggio veloce, ed ho utilizzato (con non poca difficoltà) come contatore l' SFB47. il mio problema sta in 3 questioni.

1)Non riuscendo a creare un "cronometro" ho creato un contatore con un clock di 50 ms tramite dei temporizzatori. e lo converto in secondi, probabilmente perdo ms durante il calcolo e siccome mi servirebbe precisione vorrei utilizzare l'OB35 ma non capisco davvero come impostarlo.

2) La cpu non riesce a Leggere la tacca di 0 quando aumento la velocità del tappeto, per creare un contagiri ho fatto in questo modo:

Quando ho i motori spenti memorizzo il valore dell'encoder in un mw, poi effettuo il confronto tra la lettura dell'encoder e il valore memorizzato,

siccome so per certo che l'encoder ha un range di 2500 impulsi, se al momento che arresto i motori memorizzo il valore 1000, ogni volta che l'encoder leggerà un valore inferiore a 1000 vorrà dire che avrà effettuato un giro completo, e incremento il contatore. Il problema è ancora la precisione. a volte ad un giro e 1/4 mi ha contato già 2 impulsi. e mi sfalsa il calcolo della velocità.

Come faccio a fargli leggere la tacca di 0, sembra davvero che non ne voglia sapere.

3) non riesco a farmi venire in mente un metodo per calcolare la velocità costante, sto calcolando la velocità utilizzando 2 contatori, 2 impulsi misuro la velocità, 2 impulsi resetto il contatore della velocità, e poi ricalcolo la velocità.

Vi prego di perdonarmi se sono stato confusionario, ma mi è davvero spiegarmi, non me ne vogliate, se avete bisogno di ulteriori spiegazioni proverò a fornirvele.

P.S. NON SO SCRIVERE IN AWL NEMMENO "CIAO COME TI CHIAMI" HEHEHEHE SCRIVO SOLO IN KOP E' PIU' SEMPLICE PER ME


Inserita:
  1. Se vuoi leggere la tacca di zero devi usare un ingresso veloce legato ad interrupt di processo.
  2. Se colleghi la tacca di zero alla scheda di conteggio veloce puoi usarla per azzerare il contatore (che scheda stai usando?)
  3. Per fare un temporizzatore preciso devi usare il timer di sistema e legare la scadenza del timer ad un OB, ad esempio allo OB35
  4. Per calcolare la velocità dei due motori hai un sistema semplice; ad ogni scadenza del timer di sistema leggi il valore dei 2 contatori, e lo memomorizzi. poi sottrai il valore della lettura precedente. La differenza ti da il numero di impulsi per intervallo di tempo. Se hai fissato il valore del timer a, per esempio, 100 ms hai la velocità ad ogni decimo di secondo.

Poi ci sono tutti i preblemi accessori come, gestione del trabocco, etc.

Nella mi a firma c'è il link alla sezione didattica. In questa sezione trovi diversi tuttorial/corsi sul PLC S7-300, compresi anche i videocorsi di GianMario Pedrani.

Nella sottosezione eelttrotecnica, sempre in didattica, c'è il mio tutorial sulle regolazioni ed è anche spiegato come fare per calcolare una velcoità.

Inserita:

L'OB35 lo configuri nella sezione "configurazione hardware" andando nelle proprietà della CPU. Dopo di che nella sezione blocchi di step7 tasto destro, inserisci nuovo oggetto, blocco organizzativo e lo chiami OB35.

Il calcolo della velocità ti consiglio di eseguirlo nell'OB35 (come suggerisce anche Livio).

Esistono vari modi per farlo: il metodo di Livio è molto semplice, ma devi fare attenzione nel caso sia passata la tacca di zero tra la lettura attuale e quella precedente. Un altro metodo è quello di usare i seni degli angoli basandosi sul fatto che per angoli piccoli sin(delta) circa uguale delta.

Inserita: (modificato)
ma devi fare attenzione nel caso sia passata la tacca di zero tra la lettura attuale e quella precedente.

No.

Solo se il contatore è traboccato ovvero è andato in overflow, ma questo comporta che la lettura attuale è minore della precedente.

Bisogna verificare a priori che nell'intervallo di tempo prescelto il contatore non vada comunque in overflow. Chiarisco con un esempio. se fisso l'intervallo a 100 ms ed in questo tempo si contano 70.000 impulsi, un contatore su 16 bits andrà in overflow. Però significa una frequenza 700.000 Hz, corrispondente ad una velocità, con gli encoders da 2500 impulsi, pari a 16800 rpm!

Altra verifica preliminare.

2500 impulsi giro, con motore da 3000 rpm equivalgono a 125 kHz di frequenza. Attenzione perchè le schede di conteggio difficilmente accettano queste frequnze.

Modificato: da Livio Orsini
Inserita:

Esatto Livio, a meno che non usi la tacca di zero per resettare il contatore (a questo punto si ha il problema da me descritto)

Inserita:

Ragazzi innanzitutto vi ringrazio infintamente per le risposte, probabilmente allora ho cablato il segnale di 0 dell'encoder in maniera errata sulla scheda allora? sto già usando un contatore veloce l'sfb47 e nel valore STS_Zero_Mark ho inserito il contatto aperto del segnale di 0 dell'encoder, attraverso quello dovrei poter fare il reset del contatore giusto?

inoltre ho inserito questo bit anche nel gate hardware per avere la posizione del tappeto "una sorta di azzeramento"

finchè il tappeto gira ad una velocità ridotta tutto funziona come deve, nel momento in cui alzo la velocità del tappeto, il segnale non viene più rilevato e il conteggio non si resetta.

Ora non ho modo di verificare che scheda sto usando vi posso far sapere lunedì mattina.

Credo comunque che sto settando male l'sfb47, ora inizio a guardare il materiale che mi ha suggerito il Sig. Livio, magari troverò li qualche risposta :)

Ricapitolando, per utilizzare l'ob35 ho eseguito le istruzioni che che mi ha suggerito elettrix, adesso devo inserire il contatore veloce nell'ob? dove leggo il valore di ogni ciclo dell'ob35?

Inserita:

L'OB35 viene richiamato secondo il tempo che hai impostato neela configurazione Hw.

Ad ogni richiamo vai a leggere la periferia con l'istruzi0ne EWxxx.yy dove xxx.yy è l'indirizzo assegnato al registro della scheda di conteggio. memorizzi il valore e ripeti l'operazione per l'atro contatore.

Poi sottrai al valore dell'ultima lettura il valore della lettura precedente, il risultato è la velocità misurata. Ripèeti anche per il secondo valore.

Poi sostituisci i valori della lettura precedente con i valori della nuova letturae e sei pronto per la prossima misura.

Inserita:

Sig. Livio proverò quanto mi scrive, a leggere voi sembra tutto così semplice hehe. Proverò magari domani in mattinata :)

Grazie per l'aiuto vi farò sapere.

Inserita:

Buongiorno a tutti, ho effettuato delle prove con quanto mi avete scritto ma non riesco a capire ancora come impostare l'ob35. Sarebbe così gentile qualcuno da farmi un esempio in kop per impostare un ob35? Sto impostando qualcosa male io nella configurazione? non capisco davvero dove trovare i valori EWxx.yy detti dal Sig.Livio e come fare per leggere l'ob35.

Forse sto sbagliando qualcosa qui

29vkqko.jpg

Oggi posso rispondere alla domanda del Sig. Livio, non sto usando schede per il conteggio veloce ma la cpu stessa ha già gli ingressi veloci. Non è quindi una scheda esterna, non legge ancora la tacca di 0 perchè probabilmente sto sbagliando ingresso. per capirci

2irsynr.jpg

ho collegato i segnali dell'encoder nel seguente ordine :

E124.0 >> A dell'encoder

E124.1 >> B dell'encoder

E124.2 >> 0 dell'encoder

Mi sembrava di aver letto nelle istruzioni che andavano collegati in questo modo, anche perchè facendo diversamente non conta gli impulsi dell'ancoder.

Se riuscite ad aiutarmi sono davvero impantanato non riesco ad uscirne.

Inserita:

Io, purtroppo per te, son molti anni che non uso più PLC Siemens e ste7, quindi non dico niente perchè vorrei evitare di dare informazioni non corrette o superate.

Inserita:

OB35 viene eseguito ogni x ms.

per impostare questo valore (di default solitamente è 100ms) devi cliccare su chedulazione orologio. nella foto allegata da te lo vedi in alto a sinistra.

non conosco la cpu e questo tipo di conteggio ma se ricordo bene ci sono dei blocchi funzione da usare.

non ha la funzione calcolo della velocità integrato?

i contatore per ET200S hanno questa funzione.

Inserita:

Ciao,

qui puoi trovare i dati tecnici della tua CPU;

qui, invece, puoi trovare i "Primi passi" per le funzioni tecnologiche (tra cui il conteggio che, credo, interessa a te);

qui, infine, trovi un esempio per la funzione di conteggio.

Mi è capitato, a volte, che i link di SIemens riportati qui non funzionino: quindi, cerca "Siemens Support" con google e trovi il sito del supporto online Siemens: al suo interno clicca sulla lingua che desideri e poi su "Product Support"; sull'albero a sinistra clicca poi su "Automation Tecnology", su "Sistemi di Automazione Industriale", su "Controllore Programmabile", su "Modular Controller Simatic S7", su "S7-300" ed infine su "Unità Centrali": qui potrai trovare un elenco di documenti, tra cui, i più interessanti, dovrebbero essere, secondo me, i manuali e gli esempi (ovviamente cerca quelli per la tua CPU), tra cui quelli che ti ho riportato: la funzione dovrebbe essere quella di conteggio.

Inserita:

non so nemmeno di cosa tu stia parlando :smile: comunque è impostato a 100 ms :) da come posso leggere ( anche perchè non mi fa editare i parametri dicendomi che sono parametri di sola lettura) sai dirmi di più su quei blocchi funzione della velocità di cui accenni?


ti ringrazio ho appena scaricato il pdf, adesso lo leggo

Inserita:

L'unica volta che ho usato un encoder collegato ad una CPU 300 è stato parecchi anni fa: questa settimana sono un po' preso e ho paura di non avere il tempo di andare a cercare il vecchio progetto per spiegarti come funziona; sono sicuro, però, che io c'ero arrivato con le informazioni scaricate dal Siemens Support e un po' di prove e, ovviamente, un po' di errori, poi corretti :P

Appena ho tempo e se vedo che hai ancora bisogno, cerco il progetto e ti posto la parte di codice che interessa, ma devi avere mooolta pazienza ...

Inserita:

ti ringrazio sei stato davvero gentilissimo

Inserita:

Se guardi un po' in questa sezione, ed in quella dei software d'esempio, trovi parecchi interventi di Batta sull'uso del timer di sistema e di come vanno usati i contatori sia quelli della 314 che quelli delle FM35x.

Inserita:

Ci sei riuscito ?

Vuoi che cerchi il mio vecchio progetto ?

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