stefano_PLC Inserito: 28 ottobre 2019 Segnala Inserito: 28 ottobre 2019 Qualcuno conosce come calcolare in maniera automatica il multiplo di un numero? Esiste già questa funzione o qualcuno sa come crearle grazie.
Livio Orsini Inserita: 28 ottobre 2019 Segnala Inserita: 28 ottobre 2019 Spiegati meglio. Il multiplo di un numero lo si calcola con una moltiplicazione.
stefano_PLC Inserita: 28 ottobre 2019 Autore Segnala Inserita: 28 ottobre 2019 Allora gestisco un azionamento rotativo e ogni volta che mi muovo mi salvo la posizione reale dell azionamento in una variabile, quando rilevo una differenza di posizionamento tra la variabile e la posizione reale che dovevo raggiungere, devo muoverla per farle raggiungere il primo multiplo successivo di 168 più vicino in base al suo valore. esempio la variabile ha il valore 300 e doveva terminare il suo posizionamento al valore 336 come faccio a calcolare in maniera automatica il multiplo in base al valore della variabile?
pigroplc Inserita: 28 ottobre 2019 Segnala Inserita: 28 ottobre 2019 giuro che non ho capito una mazza. Mi viene in mente una moltiplicazione, ma evidentemente l'avresti già pensato te.
NoNickName Inserita: 28 ottobre 2019 Segnala Inserita: 28 ottobre 2019 Fai una divisione tra la posizione è 168. Arrotondi all'intero successivo, oppure tronchi il float all'integer più vicino e aggiungi 1, e poi moltiplichi per 168. Ad esempio 278/168=1,65 A questo punto a)tronchi i decimali e aggiungi 1 oppure b) arrotondi all'intero successivo se hai la libreria matematica che te lo fa Infine moltiplichi per 168
stefano_PLC Inserita: 28 ottobre 2019 Autore Segnala Inserita: 28 ottobre 2019 Come fare il multiplo di 168 avevo trovato un altra soluzione ogni volta che effettuo un moverelative per muovere il azionamento incremento di 1 un contatore, quindi 168 per quante volte ho mosso conosco il mio multiplo visto che un corretto funzionamento deve far coincidere variabile e multiplo, il problema maggiore è che il sensore dell' azionamento arriva massimo a contare a 4096° quindi il problema sorge da questo punto PERCHE' IL 24 MULTIPLO DI 168 E' 4032 quindi la 25 movimentazione avrà il reset del contatore dell' azionamento....ME NE STO ANDANDO NEL PANICO E NON RIESCO MANCO A SPIEGARE BENE IL PROBLEMA
Livio Orsini Inserita: 28 ottobre 2019 Segnala Inserita: 28 ottobre 2019 3 minuti fa, stefano_PLC ha scritto: o arriva massimo a contare a 4096° Devi gestire il trabocco del contatore. Per prima cosa non fare un conteggio ed una moltiplicazione ma, ad ogni incremento sommi 168 al valore precedente. Ad ogni lettura memorizzi il valore del contatore. Se la lettura seguente è maggiore della vecchia la memorizzi senza altra azione. Se invece è minore verifichi che la differenza sia > 256, se è maggiore hai traboccato; memorizzi la nuova quota e sottrai 4096 al tua somma. 9 minuti fa, stefano_PLC ha scritto: .ME NE STO ANDANDO NEL PANICO E NON RIESCO MANCO A SPIEGARE BENE IL PROBLEMA Calma e gesso, altrimenti si annega nel classico bicchiere d'acqua; inoltre non usare le maiuscole per enfatizzare; scrivere a tutte maiuscole equivale a strillare, e questo è poco cortese nei confronti degli altri. Usa invece il grassetto o il sottolineato, ci sono i tasti in alto nella finestra di editing.
STEU Inserita: 28 ottobre 2019 Segnala Inserita: 28 ottobre 2019 Stai usando interi o floating? Comunque se ho capito bene dovresti fare: Valore1=int (variabile / 168) valore 2 = valore1 + 1 valore3 = valore2 * 168 valorefinale= valore3 - valore1 Ti ripeto se ho capito bene, non sei stato molto chiaro
dperla Inserita: 28 ottobre 2019 Segnala Inserita: 28 ottobre 2019 (modificato) 3 ore fa, stefano_PLC ha scritto: Allora gestisco un azionamento rotativo e ogni volta che mi muovo mi salvo la posizione reale dell azionamento in una variabile, quando rilevo una differenza di posizionamento tra la variabile e la posizione reale che dovevo raggiungere, devo muoverla per farle raggiungere il primo multiplo successivo di 168 più vicino in base al suo valore. esempio la variabile ha il valore 300 e doveva terminare il suo posizionamento al valore 336 come faccio a calcolare in maniera automatica il multiplo in base al valore della variabile? Ciao Stefano, credo che, a parte la verifica dovuta (immagino a meno di un delta), io mi sarei fatta un'altra domanda... perchè non raggiunge la posizione di comando?!? Per rispondere, invece, al tuo quesito avrei proceduto più o meno così IF Pos_Obiettivo<Pos_Reale (a meno di un delta di posizionameno) { Temp=Round(Pos_Reale/168); Temp=Temp+1; Pos_Obiettivo=168*Temp; } Modificato: 28 ottobre 2019 da dperla
batta Inserita: 28 ottobre 2019 Segnala Inserita: 28 ottobre 2019 2 ore fa, stefano_PLC ha scritto: Come fare il multiplo di 168 avevo trovato un altra soluzione ogni volta che effettuo un moverelative per muovere il azionamento incremento di 1 un contatore, quindi 168 per quante volte ho mosso conosco il mio multiplo visto che un corretto funzionamento deve far coincidere variabile e multiplo, il problema maggiore è che il sensore dell' azionamento arriva massimo a contare a 4096° Mi pare che sia il seguito di un'altra discussione. Hai un asse rotante. Nell'oggetto tecnologico, devi attivare la funzione "modulo" e impostare il modulo a 360°. Non arriverai mai a 4096. Il conteggio riparte da zero quando supera 359,999°. Poi, con la funzione MC_MoveAbsolute imposti la quota di destinazione e decidi se la destinazione deve essere raggiunta andando avanti, indietro, o col percorso più breve. Con MC_MoveRelative imposti di quanto ti devi spostare dalla posizione attuale, e in che direzione. All'asse gli puoi dire di fare anche un milione di gradi, e li farà, fermandosi nella posizione corretta, senza bisogno di gestire overflow di conteggi. Fa tutto da solo.
stefano_PLC Inserita: 28 ottobre 2019 Autore Segnala Inserita: 28 ottobre 2019 (modificato) grazie a tutti per le varie soluzioni. Cercherò di studiarle e capire bene come comportarmi grazie mille Modificato: 28 ottobre 2019 da stefano_PLC
stefano_PLC Inserita: 29 ottobre 2019 Autore Segnala Inserita: 29 ottobre 2019 (modificato) 17 ore fa, batta ha scritto: Hai un asse rotante. Nell'oggetto tecnologico, devi attivare la funzione "modulo" e impostare il modulo a 360°. se imposto il modulo a 168° ogni movimentazione di valore 168° mi conterà come un giro? Quindi se effettuo una movimentazione di 168° verrà rapportata con il valore del modulo (168°) o realmente si muoverà sempre nella stessa maniera come se a modulo avessi impostato 360°? intendo quantitivamente si muoverà degli stessi gradi ? Modificato: 29 ottobre 2019 da stefano_PLC
stefano_PLC Inserita: 29 ottobre 2019 Autore Segnala Inserita: 29 ottobre 2019 17 ore fa, batta ha scritto: All'asse gli puoi dire di fare anche un milione di gradi, e li farà, fermandosi nella posizione corretta, senza bisogno di gestire overflow di conteggi. Fa tutto da solo. Voglio effettuare queste verifiche perchè in caso di emergenza il freno dell'azionamento si dasabilita e quindi un operatore distratto potrebbe urtarlo e quindi si rischierebbe che nel successivo ciclo si blocchi tutto, quindi effettuo un controllo che mi confronti la posizione dove si è fermato dopo ogni movimento con la posizione al rientro che nella normalità dovrebbero combaciare perfettamente se cosi non fosse in base hai gradi di distacco o alla presenza pallet effettuerò varie soluzioni.
stefano_PLC Inserita: 29 ottobre 2019 Autore Segnala Inserita: 29 ottobre 2019 18 ore fa, dperla ha scritto: IF Pos_Obiettivo<Pos_Reale (a meno di un delta di posizionameno) { Temp=Round(Pos_Reale/168); Temp=Temp+1; Pos_Obiettivo=168*Temp; } Grazie dell' aiuto ma non so neanche cosa stia scritto non conosco questa tipologia di linguaggio
batta Inserita: 29 ottobre 2019 Segnala Inserita: 29 ottobre 2019 2 ore fa, stefano_PLC ha scritto: se imposto il modulo a 168° ogni movimentazione di valore 168° mi conterà come un giro? Non ho capito cosa intendi. Il movimento reale dell'asse dipende da come hai configurato la meccanica, non da cosa imposti come modulo. Io ho ipotizzato un modulo di 360° perché, per un asse rotante, è la soluzione più frequente. Se il tuo ciclo è di 168°, puoi impostare un modulo di 168°. Non ho ancora capito bene cosa devi fare, quindi non ti so dire se questa è la soluzione migliore. Il modulo, tanto per chiarire, non è prerogativa degli assi rotanti, lo puoi applicare anche ad un asse lineare. Per esempio, un tappeto che deve fare passi sempre uguali, o un trasportatore a facchini: potresti impostare il modulo pari al passo.
stefano_PLC Inserita: 4 novembre 2019 Autore Segnala Inserita: 4 novembre 2019 scusa per il ritardo nella risposta ma volevo impostare il modulo a 168 in modo tale che ogni volta che l azionamento effettua una rotazione di 168 mi conti un giro cosi facendo se ogni volta sto a 168 imposto quel punto come home senno lo compenso e lo imposto come home, dato che se la macchina va in avaria l azionamento perde il freno e si puo ruotare a mano per evitare di farlo lavorare in condizioni errate. Solamente a questo mi serviva capire se e possibile vincolare un giro anzi che 360 a 168
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