gerardo lovato Inserito: 15 maggio Segnala Inserito: 15 maggio Buon giorno. Avrei bisogno di un chiarimento riguardo alla possibilità di azzerare o muovere un valore x sul contatore veloce HSC1 tramite il fronte di salita dell'ingresso Z dell'encoder A/B . Ho settato il contatore ed abilitato " utilizza ingresso Sync esterno " High attivato . Poi ho abilitato " Genera allarme per evento Sync " e scelto Hardware Interrupt . L'OB è il 40 dove io ho inserito la funzione CTRL_HSC dove ho HSC = 257 CV = true e NEW_CV = 500 ( per provare un valore qualsiasi ) . poi ho messo una funzione di incremento di un intero per controllare se effettivamente il canale z mi fa il salto nell'ob . Tutto OK il contatore aumenta ogni volta che la tacca di 0 encoder passa da 0 a 1 . Il problema è che non riesco a far prendere il nuovo valore al contatore , me lo prende random come se ci fosse qualcosa nel tempo ciclo , non so. Forse sbaglio a mettere la funzione CTRL_HSC dentro l'OB 40 ? Tenete presente che ho provato a duplicare la funzione CTRL_HSC anche sul Main mettendo però CV = false , così da resettare eventuali memorie rimaste ON all'uscita dell'OB Mi potete per cortesia dare lumi su dove sbaglio ? Grazie saluti
drugo66 Inserita: 16 maggio Segnala Inserita: 16 maggio Ciao, che io sappia, a meno di concomitanza di rilevamenti diversi sullo stesso ingresso (sempre se possibile...), la chiamata CTRL_HSC dev'essere una sola per ogni ingresso veloce; poi non la metterei nel OB dell'evento, ma nel OB1 (Main) o, comunque, in un blocco richiamato nel Main, in modo sia richiamata in modo ciclico; nell'OB di evento ci fai poi quello che devi, ma non la chiamata a CTRL_HSC; qui un'esempio ufficiale Siemens sull'utilizzo degli HSC. Tieni conto che è passato un pò di tempo da quando ho utilizzato gli HSC, quindi potrei anche sbagliarmi ...
gerardo lovato Inserita: 16 maggio Autore Segnala Inserita: 16 maggio Ciao , grazie per la sollecita risposta , la mia esigenza però sta proprio nel fatto che l'azzeramento o il set di una quota x nel contatore veloce non deve risentire del tempo di ciclo plc , deve essere immediato perchè la nuova quota deve essere settata con l'asse in corsa , come avviene con il ciclo di azzeramento assi in un cnc . Non riesco a trovare un video o una qualsiasi informazione che spieghi come utilizzare la tacca di zero di un encoder (nel mio caso lineare " riga ottica con tacca di zero ") per muovere un nuovo valore nel contatore .
drugo66 Inserita: 18 maggio Segnala Inserita: 18 maggio Ciao, se evidenzi la chiamata a CTRL_HSC con il mouse e poi premi F1, nell'aiuto in linea che si aprirà leggerai, fra le altre cose, anche quello che ti ho scritto: CTRL_HSC può essere richiamata una volta sola; se la chiami solo nell'OB di evento, mi sembra ovvio che la lettura avverrà solo quando legge la tacca Z: per questo scrivevo che la chiamata a CTRL_HSC deve essere nell'OB ciclico. Puoi provare a creare una FC con la sola chiamata a CTRL_HSC parametrizzata e poi richiamare più volte quel blocco, ma sarebbe da provare: non so se può funzionare. Facci sapere se hai trovato una soluzione. Buona domenica.
gerardo lovato Inserita: 19 maggio Autore Segnala Inserita: 19 maggio Ciao , è proprio quello che voglio e cioè che la funzione CTRL_HSC deve essere richiamata solo quando voglio azzerare il contatore , cioè muovere nel contatore un valore x quando all'accensione della macchina devo fare l'azzeramento assi come nei cnc . In pratica all'accensione della macchina muovo l'asse in una direzione fino al sensore di massima corsa per poi ritornare nel senso opposto ad una velocità minima fino al rilascio del sensore stesso (che mi setterà una merker es:M10.0 ) . l'asse proseguita la sua corsa in velocità lenta fino a trovare la tacca di zero della riga ottica . In quel momento avverrà il salto nell'OB di evento dove si troverà la funzione CTRL_HSC che si abiliterà solo con M10.0 = true , con CV=true e NEW_CV = 500 mi setterà il contatore ID1000 a 500 e poi alla fine dell'OB di evento metto M10.0 = false Il doppio comando CTRL_HSC che avevo messo sul Main l'ho messo solo per fare una prova ma avevo provato anche prima di aggiungerlo . Morale : se io metto CTRL_HSC in un OB ciclico dal momento della lettura della tacca di zero all'effettivo set del contatore potrebbero trascorrere anche 10 ms ? oppure il set del contatore è immediato ? 10 ms sembrano pochi , ma teniamo presente che la riga ottica ha una risoluzione di 5 micron/impulso quindi rischierei di perdere impulsi per strada . Ho cercato di essere il più chiaro possibile . Spero che la mia esigenza sia stata recepita . Grazie mille .
drugo66 Inserita: 20 maggio Segnala Inserita: 20 maggio 22 ore fa, gerardo lovato ha scritto: Il doppio comando CTRL_HSC che avevo messo sul Main l'ho messo solo per fare una prova ma avevo provato anche prima di aggiungerlo . Morale : se io metto CTRL_HSC in un OB ciclico dal momento della lettura della tacca di zero all'effettivo set del contatore potrebbero trascorrere anche 10 ms ? oppure il set del contatore è immediato ? 10 ms sembrano pochi , ma teniamo presente che la riga ottica ha una risoluzione di 5 micron/impulso quindi rischierei di perdere impulsi per strada . Se 10 mS è la scansione della CPU, direi di sì, potrebbero anche trascorrere 10 mS prima di impostare il valore; onestamente non credo possa essere immediato. Fossi in te, farei prima la prova che ti ho scritto: Il 18/05/2025 alle 10:24 , drugo66 ha scritto: Puoi provare a creare una FC con la sola chiamata a CTRL_HSC parametrizzata e poi richiamare più volte quel blocco, ma sarebbe da provare: non so se può funzionare. non credo ci voglia molto. Facci sapere.
max.bocca Inserita: 20 maggio Segnala Inserita: 20 maggio Mi ricordo sul 200 anche con un interrupt esterno su ingresso si riusciva a scrivere un nuovo valore di un contatore semplicemente con un move nella VD del HSC. Mi sembra che avevo provato anche con il 1200, ma non ho mai verificato dopo quanti mSec veniva aggiornato.
Messaggi consigliati
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 accountAccedi
Hai già un account? Accedi qui.
Accedi ora