Differenze
Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
Entrambe le parti precedenti la revisione Revisione precedente Prossima revisione | Revisione precedente | ||
software:devices:oopos3 [2017/01/19 16:30] – [3.12.1. Modo 0: caricamento preset con procedura di movimentazione] qem103 | software:devices:oopos3 [2025/06/27 11:29] (versione attuale) – qem221 | ||
---|---|---|---|
Linea 1: | Linea 1: | ||
+ | ====== DEVICE OOPOS3 ====== | ||
+ | |||
+ | |||
+ | ====== - Introduzione ====== | ||
+ | |||
+ | Il device OOPOS3 consente di controllare la posizione di un asse movimentato fondamentalmente | ||
+ | da comandi digitali di avanti, indietro e rallentamento; | ||
+ | tramite un trasduttore bidirezionale.\\ | ||
+ | I comandi di movimentazione possono essere inviati direttamente al motore in AC tramite | ||
+ | teleruttori, | ||
+ | Il device OOPOS3 include tutte le funzioni necessarie per l' | ||
+ | ON/OFF, oltre a funzioni particolari quali il ricalcolo automatico dell' | ||
+ | recupero dei giochi meccanici, la gestione del rallentamento proporzionale alla velocità e | ||
+ | una completa ricerca di preset per la sincronizzazione della posizione reale dell' | ||
+ | valore interno del device. | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | |||
+ | |||
+ | ===== - Installazione ===== | ||
+ | |||
+ | ==== - DICHIARAZIONE DEVICE NEL FILE DI CONFIGURAZIONE (.CNF) ==== | ||
+ | |||
+ | Nel file di configurazione (.CNF), la sezione BUS deve essere dichiarata in modo tale che | ||
+ | siano presenti le risorse hardware necessarie all' | ||
+ | Devono essere presenti almeno un contatore bidirezionale. Il device può utilizzare anche un | ||
+ | ingresso e una linea d' | ||
+ | Nella sezione INTDEVICE del file .CNF deve essere aggiunta la seguente definizione: | ||
+ | |||
+ | ^:info:^È necessario che tutte le voci di definizione siano presenti sulla stessa linea. Nel caso in cui non si desideri associare una risorsa, ad esempio OutFre, si deve in ogni caso inserire nel relativo campo la stringa X.X.^ | ||
+ | |||
+ | <code QCL> | ||
+ | ; | ||
+ | ; Dichiarazione devices interni | ||
+ | ; | ||
+ | INTDEVICE | ||
+ | <nome device> OOPOS3 TCamp IQCTL ILine IAZero OutAva OutInd OutDir OutMov OutRal OutFre | ||
+ | </ | ||
+ | dove: | ||
+ | |<nome device> | ||
+ | |OOPOS3|Parola chiave che identifica il device posizionatore on/off.| | ||
+ | |TCamp|Tempo campionamento device (1÷255 ms).| | ||
+ | |IQCTL|Indirizzo del contatore bidirezionale incrementale.| | ||
+ | |ILine|Linea di interrupt dedicata per l' | ||
+ | |IAZero|Ingresso per l' | ||
+ | |OutAva|Indirizzo dell' | ||
+ | |OutInd|Indirizzo dell' | ||
+ | |OutDir|Indirizzo dell' | ||
+ | |OutMov|Indirizzo dell' | ||
+ | |OutRal|Indirizzo dell' | ||
+ | |OutFre|Indirizzo dell' | ||
+ | |||
+ | === - Esempio === | ||
+ | <code QCL> | ||
+ | ; | ||
+ | ; Dichiarazione devices interni | ||
+ | ; | ||
+ | INTDEVICE | ||
+ | Asse OOPOS3 0004 2.CNT01 1 2.IN01 2.OUT01 2.OUT02 X.X X.X 2.OUT3 X.X | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== - Funzionamento ===== | ||
+ | |||
+ | ==== - NOZIONI PRELIMINARI SUL POSIZIONAMENTO ON/OFF ==== | ||
+ | |||
+ | Le uscite digitali per la gestione del posizionamento sono eccitate/ | ||
+ | della posizione dellasse (conteggio), | ||
+ | parametrizzazione.\\ | ||
+ | Il posizionamento ON/OFF può essere eseguito in entrambe le direzioni (avanti/ | ||
+ | la possibilità di introdurre il recupero giochi, per leliminazione d' | ||
+ | |||
+ | === - Recupero giochi === | ||
+ | La precisione con la qual è stata realizzata la meccanica è fondamentale per l' | ||
+ | È, infatti, impossibile ricercare, nei posizionamenti, | ||
+ | se gli organi di movimento hanno dei laschi dell' | ||
+ | di assi verticali molto pesanti (ed esempio una pressa o una fresa verticale), l' | ||
+ | nei movimenti verso l'alto è nettamente inferiore all' | ||
+ | In queste ed altre situazioni l' | ||
+ | sensibilmente la precisione. | ||
+ | |||
+ | ^:info:^Il posizionamento è sempre concluso nella stessa direzione. Ad esempio, considerando i posizionamenti con recupero giochi avanti (vedi Figura 1), sia per il posizionamento in avanti che indietro, il movimento dell' | ||
+ | |||
+ | |Figura 1: diagramma di posizionamento con recupero giochi.| | ||
+ | |{{: | ||
+ | |||
+ | ==== - POSIZIONAMENTO IN AVANTI SENZA RECUPERO GIOCHI ==== | ||
+ | |||
+ | Nel grafico di Figura 2 vengono illustrate le varie fasi di un posizionamento ON/OFF in | ||
+ | avanti senza limplementazione del recupero giochi.\\ | ||
+ | Leccitazione delle uscite di movimento (in questo caso luscita di avanti) movimenta lasse; | ||
+ | lincremento del conteggio acquisito e lopportuna impostazione dei parametri del device | ||
+ | comportano leccitazione d' | ||
+ | alla conclusione del posizionamento ed alleccitazione delluscita di tolleranza (segnalazione | ||
+ | di posizionamento concluso correttamente). | ||
+ | |||
+ | |Figura 2: posizionamento in avanti senza recupero giochi.| | ||
+ | |{{: | ||
+ | |||
+ | === - Condizioni iniziali === | ||
+ | * Lasse è fermo (//st_still = 1//). | ||
+ | * Il conteggio è azzerato (//posit = 0//). | ||
+ | * Tutte le uscite sono diseccitate (ad esclusione delluscita freno). | ||
+ | * Sono state impostate sia la quota di posizionamento (// | ||
+ | |||
+ | === - Fase 1 === | ||
+ | * Il device OOPOS3 riceve il comando di //START// posizionamento. | ||
+ | * Luscita freno si diseccita (//st_brake = 0//). | ||
+ | * Il timer di anticipo sblocco freno viene impostato al valore definito dal parametro //tbrake//. | ||
+ | |||
+ | === - Fase 2 === | ||
+ | * Termina il timer d' | ||
+ | * E' eccitata luscita di avanti (// | ||
+ | * Lasse inizia il movimento (vel) ed il conteggio (posit) s' | ||
+ | * Dopo una rampa d' | ||
+ | |||
+ | === - Fase 3 === | ||
+ | * Il posizionamento raggiunge la fascia di rallentamento (//setpos - slowpos//). | ||
+ | * Luscita di avanti si diseccita (// | ||
+ | * Il timer di rallentamento viene impostato al valore definito dal parametro // | ||
+ | * Quando il timer di rallentamento di trova a metà del valore impostato, viene attivata luscita di Rallentamento (// | ||
+ | |||
+ | === - Fase 4 === | ||
+ | * Termina il timer di rallentamento. | ||
+ | * E' eccitata luscita di avanti (// | ||
+ | * Lasse si è stato movimentato con velocità lenta. | ||
+ | |||
+ | === - Fase 5 === | ||
+ | * Luscita freno è eccitata (//st_brake = 1//). | ||
+ | * Il posizionamento raggiunto la fascia d' | ||
+ | * Le uscite di avanti (// | ||
+ | * Il timer di ritardo attivazione tolleranza è impostata al valore di //toldly// ed inizia a contare. | ||
+ | * Lasse continua a muoversi a causa della sua inerzia (variabile in funzione del suo peso, velocità, condizioni d' | ||
+ | |||
+ | === - Fase 6 === | ||
+ | * Lasse si ferma. | ||
+ | * È importante che lasse finisca il movimento prima del termine del timer di ritardo attivazione tolleranza. | ||
+ | |||
+ | === - Fase 7 === | ||
+ | * Termina il timer di ritardo attivazione tolleranza. | ||
+ | * Se abilitato, è eseguito il ricalcolo delle inerzie. | ||
+ | * Se il posizionamento si conclude in tolleranza, è eccitata luscita di tolleranza (//st_toll =1//). | ||
+ | |||
+ | ==== - POSIZIONAMENTO IN AVANTI CON RECUPERO GIOCHI INDIETRO ==== | ||
+ | |||
+ | Nel grafico di Figura 3 vengono illustrate le varie fasi di un posizionamento ON/OFF in | ||
+ | avanti con limplementazione del recupero giochi indietro.\\ | ||
+ | Leccitazione delle uscite di movimento (avanti / indietro) movimenta lasse; lincremento del | ||
+ | conteggio acquisito e lopportuna impostazione dei parametri del device comportano | ||
+ | leccitazione di altre uscite dedicate alla gestione del movimento, fino ad arrivare alla conclusione | ||
+ | del posizionamento ed alleccitazione delluscita di tolleranza (segnalazione di posizionamento | ||
+ | concluso correttamente). | ||
+ | |||
+ | |Figura 3: posizionamento in avanti con recupero giochi indietro.| | ||
+ | |{{: | ||
+ | |||
+ | === - Premessa === | ||
+ | Per la completa comprensione di questa descrizione è necessario avere letto il paragrafo precedente (posizionamento in avanti senza recupero giochi). | ||
+ | |||
+ | === - Condizioni iniziali === | ||
+ | * Lasse si muove alla velocità di posizionamento. | ||
+ | * Conteggio maggiore di zero. | ||
+ | * Tutte le uscite diseccitate ad esclusione delluscita di avanti. | ||
+ | |||
+ | === - Fase 1 === | ||
+ | * Il conteggio raggiunge la fascia di rallentamento per l' | ||
+ | * Luscita di avanti viene diseccitata (// | ||
+ | * Il timer di rallentamento è impostato al valore impostato con il parametro // | ||
+ | |||
+ | === - Fase 2 === | ||
+ | * Termina il timer di anticipo sblocco freno. | ||
+ | * E' eccitata luscita di avanti (// | ||
+ | |||
+ | === - Fase 3 === | ||
+ | * Termina il timer di rallentamento. | ||
+ | * E' eccitata luscita di avanti (// | ||
+ | * Lasse si muove alla velocità lenta. | ||
+ | |||
+ | === - Fase 4 === | ||
+ | * Il posizionamento raggiunge la fascia d' | ||
+ | * Le uscite da avanti (// | ||
+ | * Il timer d' | ||
+ | |||
+ | === - Fase 5 === | ||
+ | * Termina il timer d' | ||
+ | * Il posizionamento riprende nella direzione indietro. | ||
+ | |||
+ | === - Fase 6÷8 === | ||
+ | * Fasi di posizionamento normale come descritto in precedenza. | ||
+ | |||
+ | ==== - COLLEGAMENTO DELLHARDWARE ==== | ||
+ | |||
+ | Il device OOPOS3 necessita d' | ||
+ | |||
+ | ==== - VERIFICA DEL FUNZIONAMENTO DELLA RISORSA CONTATORE ==== | ||
+ | |||
+ | La seguente procedura serve per verificare il funzionamento dellingresso di conteggio. | ||
+ | * Inizializzare il device Asse con il comando di INIT. | ||
+ | <code QCL> | ||
+ | INIT Asse | ||
+ | </ | ||
+ | * Verificare lattivazione dello stato st_init. | ||
+ | <code QCL> | ||
+ | WAIT Asse: | ||
+ | </ | ||
+ | * Inserire la risoluzione del trasduttore a 1. | ||
+ | <code QCL> | ||
+ | Asse: | ||
+ | Asse:pulse = 4000 | ||
+ | </ | ||
+ | * Azzerare il valore del parametro posit. | ||
+ | <code QCL> | ||
+ | Asse:posit = 0 | ||
+ | </ | ||
+ | * Muovere lasse in avanti facendo muovere un giro completo allencoder: | ||
+ | * Se il valore di Asse:posit è negativo, scambiare le fasi dellencoder o dare un //CNTREV//. | ||
+ | * Se il valore di Asse:posit rimane a zero, controllare i collegamenti elettrici o il flag // | ||
+ | |||
+ | ==== - VERIFICA DEL FUNZIONAMENTO DELLE USCITE DIGITALI ==== | ||
+ | |||
+ | ^: | ||
+ | |||
+ | La seguente procedura serve per verificare il funzionamento delle uscite digitali di avanti, indietro | ||
+ | e rallentamento movimentando l'asse con i comandi manuali del device.\\ | ||
+ | Per proseguire, verificare che il device Asse sia inizializzato e con il valore di risoluzione encoder | ||
+ | corretto. | ||
+ | * Impostare al massimo valore i limiti software del device in modo da consentirne il movimento. Inserire il valore 999999 nel parametro //maxpos// ed il valore -999999 nel parametro //minpos//. | ||
+ | <code QCL> | ||
+ | Asse:maxpos = 999999 | ||
+ | Asse:minpos = -999999 | ||
+ | </ | ||
+ | * Dare il comando //MANFFW// per fare attivare la sola uscita di avanti. | ||
+ | <code QCL> | ||
+ | MANFFW Asse | ||
+ | </ | ||
+ | * Per verificare la corretta esecuzione del comando, controllare che lo stato // | ||
+ | <code QCL> | ||
+ | WAIT NOT Asse: | ||
+ | </ | ||
+ | * Verificare che l'asse si muova in avanti e che il conteggio visualizzato in // | ||
+ | <code QCL> | ||
+ | STOP Asse | ||
+ | </ | ||
+ | * Se l' | ||
+ | * Dare il comando //MANFBW// per eccitare la sola uscita d' | ||
+ | <code QCL> | ||
+ | MANFBW Asse | ||
+ | </ | ||
+ | * Per verificare la corretta esecuzione del comando, controllare che lo stato // | ||
+ | <code QCL> | ||
+ | WAIT NOT Asse: | ||
+ | </ | ||
+ | * Verificare che l'asse si muova in Indietro e che il conteggio visualizzato in // | ||
+ | <code QCL> | ||
+ | STOP Asse | ||
+ | </ | ||
+ | * Se l' | ||
+ | * Dare il comando MANSFW per fare eccitare le uscite di avanti e rallentamento. | ||
+ | <code QCL> | ||
+ | MANSFW Asse | ||
+ | </ | ||
+ | * Per verificare la corretta esecuzione del comando, controllare che lo stato // | ||
+ | <code QCL> | ||
+ | WAIT NOT Asse: | ||
+ | </ | ||
+ | * Verificare che l'asse si muova in avanti ad una velocità inferiore alla precedente e che il conteggio visualizzato in // | ||
+ | <code QCL> | ||
+ | STOP Asse | ||
+ | </ | ||
+ | * Se l' | ||
+ | |||
+ | ==== - IMPOSTAZIONE DEL PARAMETRO DI RISOLUZIONE DELLASSE ==== | ||
+ | |||
+ | Il device OOPOS3 acquisisce la posizione dellasse tramite i segnali di un trasduttore bidirezionale; | ||
+ | questi segnali sono utilizzati da un contatore interno. Il valore di questo contatore | ||
+ | non esprime, in genere, direttamente la posizione dellasse nellunità di misura necessaria | ||
+ | per lapplicazione. Il device non ha al suo interno il parametro // | ||
+ | allinstallatore la possibilità di lavorare con risoluzioni encoder non finite impostando i dati | ||
+ | come spazio percorso in un giro encoder (// | ||
+ | (// | ||
+ | compresi tra 1 e 0.000935. | ||
+ | |||
+ | === - Definizioni: | ||
+ | 1) Il parametro //measure// è inserito in unità di misura senza punti decimali (ad esempio 100.0 millimetri sono inseriti 1000 decimi di millimetro). | ||
+ | 2) Il parametro //pulse// è inserito in bit encoder per 4 (ad esempio se ho collegato un encoder da 1024 impulsi giro, è inserito 4096, se il parametro measure è calcolato su un giro d' | ||
+ | |||
+ | === - Esempio: === | ||
+ | Si deve controllare una tavola rotante che abbia la precisione di 0,1° avente un encoder da 1024 impulsi giro calettato direttamente; | ||
+ | Asse: | ||
+ | Asse:pulse = 4096\\ | ||
+ | Asse:decpt = 1 | ||
+ | |||
+ | Per eseguire un posizionamento a 14.6 gradi bisogna inserire\\ | ||
+ | Asse:setpos = 146 | ||
+ | |||
+ | ==== - PARAMETRIZZAZIONI BASE ==== | ||
+ | |||
+ | Per fare funzionare correttamente il device OOPOS3, è necessario inserire alcuni parametri base. | ||
+ | * Determinare i limiti software da introdurre nei parametri //maxpos// e //minpos//. | ||
+ | <code QCL> | ||
+ | Asse:minpos = xxx (xxx = valore minimo dellasse espresso in Um). | ||
+ | Asse:maxpos = yyy (yyy = valore massimo dellasse espresso in Um). | ||
+ | </ | ||
+ | * Se si utilizza un sistema a due velocità, impostare lo spazio necessario allasse per passare dalla velocità alta alla velocità lenta alleccitazione delluscita di rallentamento; | ||
+ | <code QCL> | ||
+ | Asse: | ||
+ | </ | ||
+ | * Impostare il tempo di disattivazione delluscita di movimento quando lasse entra nella fascia di rallentamento in modo che leccitazione delluscita di rallentamento non provochi scompensi elettrici; introdurre il dato nel parametro // | ||
+ | <code QCL> | ||
+ | Asse: | ||
+ | </ | ||
+ | * Impostare i limiti di tolleranza che si vuole ottenere durante il posizionamento nei parametri //tollp// e //tolln//. Come prima impostazione, | ||
+ | <code QCL> | ||
+ | Asse:tollp = tpx (tpx = valore di tolleranza positiva espresso in Um/10). | ||
+ | Asse:tolln = tnx (tpn = valore di tolleranza negativa espresso in Um/10). | ||
+ | </ | ||
+ | * Impostare il tempo d' | ||
+ | <code QCL> | ||
+ | Asse:tinv = tempo di inversione espresso in s/100 | ||
+ | </ | ||
+ | * Considerare ununica fascia di inerzia per tutto lasse; impostare quindi il parametro //ninert// ad 1. | ||
+ | <code QCL> | ||
+ | Asse:ninert = 1 | ||
+ | </ | ||
+ | * Abilitare il ricalcolo dellinerzia quando il posizionamento si conclude fuori tolleranza; impostare quindi il parametro inertmode ad 1. | ||
+ | <code QCL> | ||
+ | Asse: | ||
+ | </ | ||
+ | * Impostare il tempo di ritardo attivazione tolleranza, considerando il tempo che impiega lasse per decelerare fino a fermarsi; impostare quindi il parametro //toldly//. | ||
+ | <code QCL> | ||
+ | Asse:toldly = tdly (tdly = tempo di ritardo attivazione tolleranza espresso in ms). | ||
+ | </ | ||
+ | |||
+ | ==== - IL RALLENTAMENTO ==== | ||
+ | |||
+ | === - Introduzione === | ||
+ | Nei posizionamenti ON/OFF lo spazio di rallentamento deve essere sufficientemente lungo | ||
+ | per portare lasse alla velocità lenta (di fine posizionamento), | ||
+ | d' | ||
+ | momento dellingresso nella fascia d' | ||
+ | e siano quindi evitati continui ricalcoli che provocherebbero unimprecisione nel posizionamento. | ||
+ | |||
+ | Quota di rallentamento troppo lunga: questo permette allasse di concludere il posizionamento | ||
+ | muovendosi alla velocità lenta, però è mantenuta per uno spazio eccessivo, allungando | ||
+ | notevolmente i tempi del posizionamento. | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Quota di rallentamento troppo lunga: questo permette allasse di concludere il posizionamento | ||
+ | muovendosi alla velocità lenta, però è mantenuta per uno spazio eccessivo, allungando | ||
+ | notevolmente i tempi del posizionamento. | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Quota di rallentamento troppo corta: lasse si avvicina alla quota di posizionamento con una | ||
+ | velocità troppo alta per consentire alla meccanica un rapido arresto; la successione del sistema | ||
+ | compromette quindi il posizionamento, | ||
+ | impostata. | ||
+ | |||
+ | {{: | ||
+ | |||
+ | In alcuni casi il device OOPOS3 deve gestire degli assi in cui la velocità di posizionamento è | ||
+ | variabile. Per questo motivo il device OOPOS3 è dotato di un sistema di calcolo automatico | ||
+ | della quota di rallentamento, | ||
+ | dellinerzia siano ripetitivi, indipendentemente dalla velocità dellasse.\\ | ||
+ | Il device OOPOS3 dispone di due metodi (selezionati dal parametro // | ||
+ | del rallentamento: | ||
+ | * Con // | ||
+ | * Con // | ||
+ | |||
+ | === - Impostazione della variabile di velocità === | ||
+ | Per il calcolo del valore di rallentamento è necessario parametrizzare il device per | ||
+ | lacquisizione della velocità dellasse.\\ | ||
+ | Lunità di misura della velocità è in funzione delle seguenti variabili: | ||
+ | * unitvel | ||
+ | * decpt | ||
+ | |||
+ | === - Parametro unitvel === | ||
+ | Definisce se i valori di velocità sono espressi in Um al minuto (// | ||
+ | |||
+ | === - Parametro decpt === | ||
+ | Stabilisce se impostare i valori di velocità in multipli dellunità di misura fondamentale Um. Ad esempio, se lunità di misura fondamentale Um=mm, ed unitvel=1 si ottiene la visualizzazione della velocità nella variabile vel in: | ||
+ | * con //decpt// = 0 in mm/s | ||
+ | * con //decpt// = 1 in cm/s | ||
+ | * con //decpt// = 2 in dm/s | ||
+ | * con //decpt// = 3 in m/s | ||
+ | |||
+ | === - Calcolo velocità massima === | ||
+ | **Metodo teorico**\\ | ||
+ | Si deve applicare la formula:\\ | ||
+ | Velocità = Frequenza * ....\\ | ||
+ | **Il metodo pratico**\\ | ||
+ | Si basa sulla lettura della velocità rilevata dal device nel parametro //vel// fornendo allazionamento una tensione nota. Se lazionamento lo permette, fornire allasse la tensione massima di lavoro e quindi leggere il valore nel parametro //vel//; se è fornita una tensione inferiore, la velocità massima sarà in proporzionale alla tensione fornita. | ||
+ | |||
+ | Introdurre il valore della velocità massima rilevato nel parametro //maxvel//. | ||
+ | |||
+ | === - Rallentamento proporzionale alla velocità === | ||
+ | |||
+ | Il device calcola automaticamente il rallentamento basandosi sulla formula:\\ | ||
+ | Rallentamento = (Rallentamento massimo x Velocità)/ | ||
+ | |||
+ | ^:info:^Il calcolo del rallentamento, | ||
+ | |||
+ | {{: | ||
+ | |||
+ | **Dove:**\\ | ||
+ | Rallentamento massimo = corrisponde alla variabile // | ||
+ | Rallentamento minimo = corrisponde alla variabile // | ||
+ | Rallentamento calcolato = corrisponde alla variabile // | ||
+ | Velocità massima = corrisponde alla variabile // | ||
+ | Velocità istantanea = corrisponde alla variabile //vel//. | ||
+ | |||
+ | === - Rallentamento proporzionale al quadrato della velocità === | ||
+ | Il device calcola automaticamente il rallentamento basandosi sulla formula:\\ | ||
+ | Rallentamento = (Rallentamento massimo x Velocità2)/ | ||
+ | |||
+ | {{: | ||
+ | |||
+ | **Dove:**\\ | ||
+ | Rallentamento massimo = corrisponde alla variabile // | ||
+ | Rallentamento minimo = corrisponde alla variabile // | ||
+ | Rallentamento calcolato = corrisponde alla variabile // | ||
+ | Velocità massima = corrisponde alla variabile // | ||
+ | Velocità istantanea = corrisponde alla variabile //vel//. | ||
+ | |||
+ | ==== - RICALCOLO DELLINERZIA ==== | ||
+ | |||
+ | I valori d' | ||
+ | dal device; la modalità è scelta con limpostazione del parametro // | ||
+ | Il device gestisce la suddivisione della corsa dellasse (compresa tra //minpos// e //maxpos//) in | ||
+ | più fasce uguali tra loro; il numero delle fasce è definito dal parametro //ninert//. In questo modo | ||
+ | si possono avere inerzie in funzione della fascia entro la quale si conclude il posizionamento. | ||
+ | |||
+ | Impostando il parametro //dobiner// = 0, il device gestisce un unico valore d' | ||
+ | dalla direzione del movimento (avanti o indietro).\\ | ||
+ | Impostando il parametro //dobiner// = 1, il device gestisce due valori di inerzia per ogni fascia, | ||
+ | uno per la direzione avanti ed un altro per la direzione indietro. Questa modalità è applicabile, | ||
+ | per esempio, quando si movimentano assi verticali.\\ | ||
+ | Per la memorizzazione delle inerzie, sono utilizzati i parametri //iner01÷ iner08// (nel caso in cui | ||
+ | //dobiner// = 0) o i parametri //iner01÷ iner16// (se dobiner = 1): | ||
+ | |||
+ | ^ ^**dobiner = 0**^**dobiner = 1**^ | ||
+ | |iner01|Inerzia Fascia 1|Inerzia Avanti Fascia 1| | ||
+ | |iner02|Inerzia Fascia 2|Inerzia Indietro Fascia| | ||
+ | |iner03|Inerzia Fascia 3|Inerzia Avanti Fascia 2| | ||
+ | |iner04|Inerzia Fascia 4|Inerzia Indietro Fascia 2| | ||
+ | |iner05|Inerzia Fascia 5|Inerzia Avanti Fascia 3| | ||
+ | |iner06|Inerzia Fascia 6|Inerzia Indietro Fascia 3| | ||
+ | |iner07|Inerzia Fascia 7|Inerzia Avanti Fascia 4| | ||
+ | |iner08|Inerzia Fascia 8|Inerzia Indietro Fascia 4| | ||
+ | |iner09|n.u.|Inerzia Avanti Fascia 5| | ||
+ | |iner10|n.u.|Inerzia Indietro Fascia 5| | ||
+ | |iner11|n.u.|Inerzia Avanti Fascia 6| | ||
+ | |iner12|n.u.|Inerzia Indietro Fascia 6| | ||
+ | |iner13|n.u.|Inerzia Avanti Fascia 7| | ||
+ | |iner14|n.u.|Inerzia Indietro Fascia 7| | ||
+ | |iner15|n.u.|Inerzia Avanti Fascia 8| | ||
+ | |iner16|n.u.|Inerzia Indietro Fascia 8| | ||
+ | |||
+ | Per definizione, | ||
+ | |||
+ | {{: | ||
+ | |||
+ | ==== - GESTIONE RICALCOLO AUTOMATICO INERZIA ==== | ||
+ | |||
+ | Il calcolo delle inerzie relative alle varie fasce può essere fatto automaticamente dal device; | ||
+ | alla conclusione d'ogni posizionamento, | ||
+ | nei posizionamenti successivi che si concluderanno nella medesima fascia.\\ | ||
+ | È possibile definire una serie di personalizzazioni relative al ricalcolo automatico delle inerzie. | ||
+ | |||
+ | === - Inertmode === | ||
+ | Con limpostazione di questo parametro è possibile definire quando il device esegue il ricalcolo | ||
+ | dellinerzia; | ||
+ | * Il ricalcolo viene eseguito solamente se il posizionamento si conclude fuori dalla fascia di tolleranza. | ||
+ | * Il ricalcolo viene eseguito alla conclusione di ogni posizionamento, | ||
+ | |||
+ | === - Toldly === | ||
+ | Il ricalcolo automatico dellinerzia è eseguito dal device OOPOS3 quando termina il tempo di ritardo attivazione tolleranza (// | ||
+ | |||
+ | === - Maxiner === | ||
+ | Se il valore dellinerzia ricalcolata si discosta oltre un certo valore dallinerzia in uso, è possibile avere una segnalazione (stato //st_erin// = 1); questa segnalazione può in ogni caso essere disabilitata. | ||
+ | |||
+ | ==== - LA RICERCA DI PRESET ==== | ||
+ | |||
+ | La ricerca di preset é una procedura per sincronizzare il valore del parametro //posit// con la | ||
+ | reale posizione dell' | ||
+ | memorizzato) al momento dell' | ||
+ | modo possibile eseguire la ricerca di preset anche se si dispone di un trasduttore senza impulso | ||
+ | di zero, ma è in ogni modo necessario un ingresso (camma o sensore) di " | ||
+ | impulso di zero trasduttore" | ||
+ | |||
+ | Precedentemente alla ricerca di preset il conteggio acquisito può avere un qualsiasi valore e | ||
+ | l'asse può trovarsi in qualsiasi punto. Per eseguire il caricamento della quota di preset, | ||
+ | l'asse si deve dirigere verso l' | ||
+ | La direzione iniziale del movimento è definita dal parametro // | ||
+ | //prsdir// = 0 l'asse partirà sempre in avanti.\\ | ||
+ | //prsdir// = 1 l'asse partirà sempre indietro. | ||
+ | |||
+ | ^: | ||
+ | |||
+ | L' | ||
+ | Se durante la ricerca di preset è data nuovamente il comando //PRESET//, la direzione di movimento | ||
+ | dell' | ||
+ | preset impostato.\\ | ||
+ | È da rilevare che la quota di preset (// | ||
+ | e la quota massima e che, dopo il caricamento della quota di preset, l'asse si posiziona | ||
+ | automaticamente alla quota di preset. | ||
+ | |||
+ | === - Modo 0: caricamento preset con procedura di movimentazione === | ||
+ | |||
+ | ^: | ||
+ | |||
+ | ^:info:^La velocità dell' | ||
+ | |||
+ | L'asse si dirige verso il sensore collegato all' | ||
+ | normale velocità di posizionamento. Lo stato // | ||
+ | in corso. Quando, nella sua corsa, l'asse incontra l' | ||
+ | trasduttore, | ||
+ | Alla disattivazione dell' | ||
+ | conteggio (parametro // | ||
+ | L'asse si ferma, lo stato st_prson si disattiva e lo stato // | ||
+ | conclusione della ricerca. Questo stato rimane attivo fino all' | ||
+ | di preset. All' | ||
+ | |||
+ | |Figura 1: caricamento preset utilizzando la sola camma di abilitazione.| | ||
+ | |{{: | ||
+ | |||
+ | === - Modo 1: caricamento preset con procedura di movimentazione === | ||
+ | Lasse si dirige verso il sensore collegato allingresso d' | ||
+ | normale velocità di posizionamento. Lo stato // | ||
+ | in corso. Quando, nella sua corsa, lasse incontra lingresso d' | ||
+ | trasduttore, | ||
+ | Alla disattivazione dellingresso di abilitazione impulso di zero è abilitata la lettura del primo | ||
+ | impulso di zero fornito dal trasduttore e, al momento dellacquisizione di questo segnale, è | ||
+ | caricata la quota di preset nel conteggio (parametro // | ||
+ | Lasse si ferma, lo stato // | ||
+ | conclusione della ricerca. Questo stato rimane attivo fino allavviamento di una nuova procedura | ||
+ | di preset. Allaccensione del sistema questo stato é sempre a zero (Figura 2). | ||
+ | |||
+ | |Figura 2: caricamento preset utilizzando camma di abilitazione ed impulso di zero trasduttore.| | ||
+ | |{{: | ||
+ | |||
+ | === - Modo 2: caricamento con asse fermo === | ||
+ | Con questa procedura la ricerca di preset non è abilitata. Il comando di caricamento della | ||
+ | quota di preset è fornito dallattivazione dellingresso di abilitazione impulso di zero è attivato | ||
+ | lo stato // | ||
+ | * Se lingresso rimane attivo il caricamento é continuo. | ||
+ | * Se allaccensione lingresso é già attivo il primo caricamento è eseguito solo dopo una sua disattivazione. | ||
+ | |||
+ | ==== - DELTA CONTEGGIO ==== | ||
+ | |||
+ | Il device visualizza sempre la posizione assoluta dellasse; per eseguire posizionamenti incrementali | ||
+ | é necessario disporre di uno strumento per sottrarre o sommare un determinato | ||
+ | valore al conteggio (posit) senza introdurre errori. Il cambio di conteggio può essere eseguito | ||
+ | anche con una scrittura diretta nel nuovo valore nel parametro // | ||
+ | Volendo sottrarre 100 unità di misura al conteggio è possibile: | ||
+ | <code QCL> | ||
+ | Asse:posit = Asse:posit - 100 | ||
+ | </ | ||
+ | Questa operazione introduce un errore perché impone la posizione //posit// = -100, quando | ||
+ | lasse poteva avere una posizione intermedia tra una unità di misura e la successiva (es. | ||
+ | 100.3). Questa frazione (0.3) è persa ed il ripetersi di queste operazioni provoca | ||
+ | laccumularsi di un errore non trascurabile.\\ | ||
+ | Il comando //DELCNT// somma al conteggio una quantità pari al parametro //delta// senza perdere | ||
+ | la parte frazionaria della posizione: | ||
+ | <code QCL> | ||
+ | Asse:delta = -100 | ||
+ | DELCNT Asse | ||
+ | </ | ||
+ | Il comando di //DELCNT// può essere inviato solamente con asse fermo (// | ||
+ | |||
+ | === - Esempio === | ||
+ | |||
+ | La lettura della posizione dell' | ||
+ | sommare al conteggio posit tre unità di misura.\\ | ||
+ | Con le istruzioni: | ||
+ | <code QCL> | ||
+ | Asse:posit = Asse:posit + 2 | ||
+ | </ | ||
+ | l'asse assume la nuova posizione B.\\ | ||
+ | Con le istruzioni: | ||
+ | <code QCL> | ||
+ | Asse:delta = 2 | ||
+ | DELCNT Asse | ||
+ | </ | ||
+ | E' raggiunta la posizione C. | ||
+ | |||
+ | ^:info:^Il comando è inviabile solamente se l'asse è fermo, condizione di st_still = 1.^ | ||
+ | |||
+ | ^:info:^La modifica del valore di risoluzione (cntratio) o la scrittura della variabile posit, provoca l' | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Si noti che con le prime istruzioni l'asse ha compiuto un delta inferiore a 3 unità e quindi è | ||
+ | stato introdotto un errore.\\ | ||
+ | Se si devono inviare comandi //DELCNT// in successione, | ||
+ | da sommare ed inviare una sola volta il comando; in caso contrario prestare attenzione a | ||
+ | non inviare comandi successivi senza interporre una istruzione di lettura su parametro device. | ||
+ | |||
+ | Esempio: | ||
+ | <code QCL> | ||
+ | Asse:delta = 3 | ||
+ | DELCNT Asse | ||
+ | WAIT Asse: | ||
+ | Asse:delta = 40 | ||
+ | DELCNT Asse | ||
+ | </ | ||
+ | |||
+ | Una scrittura del tipo: | ||
+ | <code QCL> | ||
+ | Asse:posit = 1000 | ||
+ | Asse:delta = - 100 | ||
+ | DELCNT Asse | ||
+ | DELCNT Asse | ||
+ | ... | ||
+ | </ | ||
+ | |||
+ | Non assicura che il valore di posit sia di 800, come ci si aspetterebbe da due sottrazioni | ||
+ | consecutive, | ||
+ | scrittura diventa quindi: | ||
+ | <code QCL> | ||
+ | Asse:posit = 1000 | ||
+ | Asse:delta = - 100 | ||
+ | DELCNT Asse | ||
+ | WAIT Asse: | ||
+ | DELCNT Asse | ||
+ | WAIT Asse: | ||
+ | ... | ||
+ | </ | ||
+ | |||
+ | === - Comandi REGON e REGOFF === | ||
+ | |||
+ | Con l' | ||
+ | pertanto non possono essere utilizzate da altri device o dall' | ||
+ | Il comando di //REGOFF// permette di mettere a disposizione tali risorse, disabilitandone | ||
+ | l' | ||
+ | // | ||
+ | posizione dell' | ||
+ | Il comando di //REGON// ripristina le normali condizioni rassegnando al device l' | ||
+ | delle uscite.\\ | ||
+ | Nelle applicazioni, | ||
+ | dei comandi // | ||
+ | risparmiando risorse hardware. | ||
+ | |||
+ | ^:info:^Per evitare conflitti e malfunzionamenti, | ||
+ | |||
+ | ==== - MOVIMENTAZIONE ==== | ||
+ | |||
+ | Le procedure fin qui descritte hanno permesso di completare le fasi di definizione delle risorse | ||
+ | hardware necessarie al device, di verifica dei collegamenti elettrici, di impostazione dei | ||
+ | parametri fondamentali del device.\\ | ||
+ | Ora é possibile eseguire una semplice movimentazione dellasse.\\ | ||
+ | * Spostare lasse in una posizione tale per cui possa compiere un determinato spazio senza incontrare i finecorsa di quota massima. | ||
+ | * Azzerare il conteggio (parametro //posit// = 0). | ||
+ | * Impostare la quota di posizionamento (parametro // | ||
+ | <code QCL> | ||
+ | Asse:setpos = quota di posizionamento (in Um compresa tra minpos e maxpos). | ||
+ | </ | ||
+ | * Start posizionamento (comando di //START//). | ||
+ | <code QCL> | ||
+ | START Asse | ||
+ | </ | ||
+ | * Per interrompere il posizionamento utilizzare il comando di //STOP//. | ||
+ | |||
+ | |||
+ | ===== - Funzioni speciali ===== | ||
+ | |||
+ | ==== - SISTEMA DI POSIZIONAMENTO QPS (QEM POSITIONING SYSTEM) ==== | ||
+ | |||
+ | L' | ||
+ | ed allo spessore utensile (//tool//), è proposta con una cifra in più, in modo da poter introdurre il | ||
+ | dato con una precisione 10 volte maggiore.\\ | ||
+ | Per un buon funzionamento del sistema QPS, la risoluzione dell' | ||
+ | a 40000; se il coefficiente moltiplicativo è compreso tra 40001 e 399999 l' | ||
+ | dell' | ||
+ | è pari a 400000.\\ | ||
+ | Il sistema QPS è introdotto anche in fase di lettura dei dati sopra descritti. | ||
+ | |||
+ | ^: | ||
+ | |||
+ | === - Esempio === | ||
+ | |||
+ | * Se una quota di posizionamento pari a 10 millimetri è normalmente inserita con il numero 10, per introdurre lo stesso valore di tolleranza (quindi con il QPS), sarà necessario introdurre il valore 100. | ||
+ | * Una fascia di tolleranza pari a 10 millimetri sarà visualizzata con il numero 100. | ||
+ | |||
+ | ^:info:^Gli esempi sono riferiti ad un sistema di posizionamento con precisione del millimetro.^ | ||
+ | |||
+ | ==== - GESTIONE ERRORI DEVICE ==== | ||
+ | |||
+ | La presenza di un errore nel device è segnalato dallo stato // | ||
+ | Quando // | ||
+ | (vedi tabella) e nella variabile // | ||
+ | Se il device va in errore, per riprendere la lavorazione bisogna cancellare lo stato // | ||
+ | |||
+ | ==== - GESTIONI WARNING DEVICE ==== | ||
+ | |||
+ | La presenza di un warning nel sistema camming viene segnalato dallo stato // | ||
+ | Essendo causato da un evento non grave ed essendo garantita in questa situazione la gestione | ||
+ | dellasse slave, lasse slave continua il suo lavoro.\\ | ||
+ | Quando // | ||
+ | intervenuto (vedi tabella) e nella variabile // | ||
+ | il warning. | ||
+ | ^Codice^Priorità^Descrizione^ | ||
+ | |1|0|Comando non eseguito| | ||
+ | Per cancellare lo stato // | ||
+ | |||
+ | |||
+ | ===== - Comandi e parametri ===== | ||
+ | |||
+ | ==== - SIMBOLOGIA ADOTTATA ==== | ||
+ | |||
+ | Il **nome** del parametro, stato o comando viene riportato alla sinistra della tabella. | ||
+ | |||
+ | **R**\\ | ||
+ | Indica se il relativo parametro o stato è ritentivo (al momento dellinizializzazione del device | ||
+ | mantiene lo stato precedentemente definito), oppure lo stato che assume al momento | ||
+ | dellinizializzazione del device.\\ | ||
+ | Se il device non necessita d' | ||
+ | stato assume allaccensione della scheda.\\ | ||
+ | R = Ritentivo\\ | ||
+ | 0 = Al momento dellinizializzazione del device il valore è forzato a zero.\\ | ||
+ | 1 = Al momento dellinizializzazione del device il valore è forzato a uno.\\ | ||
+ | - = Al momento dellinizializzazione del device è presentato il valore significativo. | ||
+ | |||
+ | **D**\\ | ||
+ | Indica la **dimensione del parametro**.\\ | ||
+ | F = Flag\\ | ||
+ | B = Byte\\ | ||
+ | W = Word\\ | ||
+ | L = Long\\ | ||
+ | S = Single Float | ||
+ | |||
+ | === - Condizioni === | ||
+ | Sono descritte tutte le **condizioni necessarie affinché il parametro sia considerato corretto | ||
+ | o perché il comando venga accettato**.\\ | ||
+ | In alcuni casi sono specificati dei valori limite per laccettazione del parametro: se sono introdotti | ||
+ | dei valori esterni ai limiti impostati, il dato viene comunque accettato; pertanto devono | ||
+ | essere previsti opportuni controlli dellapplicativo tali da garantire il corretto funzionamento.\\ | ||
+ | Per lesecuzione di un comando, tutte le relative condizioni devono necessariamente essere | ||
+ | soddisfatte; | ||
+ | |||
+ | **A**\\ | ||
+ | Indica il **modo d' | ||
+ | R = Read (lettura).\\ | ||
+ | W = Write (scrittura).\\ | ||
+ | RW = Read / Write. | ||
+ | |||
+ | ==== - COMANDI ==== | ||
+ | |||
+ | I comandi a disposizione per gestire il device sono elencati sotto l' | ||
+ | Il device esegue tutti i comandi ricevuti entro lo stesso tempo di campionamento iniziando | ||
+ | da quello con la priorità maggiore. Per esempio se il device riceve nello stesso tempo | ||
+ | di campionamento i comandi CNTUNLOCK e CNTLOCK, per primo esegue il comando | ||
+ | CNTLOCK e poi quello di CNTUNLOCK lasciando perciò il contatore libero di contare. | ||
+ | |||
+ | ^Nome^Condizioni^Descrizione^ | ||
+ | |INIT|st_init = 0|**Initialization**\\ Comando d' | ||
+ | |STOP|st_init = 1|**Stop**\\ Eccita le uscite di movimento per comandare l'asse verso la quota impostata.| | ||
+ | |START|st_init = 1\\ st_still = 1\\ st_regoff = 0|**Start**\\ Eccita le uscite di movimento per comandare l'asse verso la quota impostata.| | ||
+ | |CNTLOCK|st_init = 1|**Counter lock**\\ Blocca l' | ||
+ | |CNTUNLOCK|st_init = 1|**Counter unlock**\\ Sblocca il conteggio dell' | ||
+ | |CNTREV|st_init = 1|**Counter reverse**\\ Consente di invertire le fasi del trasduttore all' | ||
+ | |CNTDIR|st_init = 1\\ st_regoff = 1|**Counter direct**\\ Il conteggio dell' | ||
+ | |PRESET|st_init = 1\\ st_regoff = 0|**Preset**\\ Start ricerca preset asse. Viene dato inizio alla procedura di ricerca di preset con le modalità impostate con i parametri //prsmode// e //prsdir//. Se la ricerca di preset è già in esecuzione, il comando esegue l' | ||
+ | |MANSFW|st_init = 1\\ st_regoff = 0\\ posit < maxpos|**Manual slow forward**\\ Posizionamento manuale avanti lento.\\ Vengono eccitate le uscite di avanti e di rallentamento.| | ||
+ | |MANSBW|st_init = 1\\ st_regoff = 0\\ posit > minpos|**Manual slow backward**\\ Posizionamento manuale indietro lento.\\ Vengono eccitate le uscite di indietro e di rallentamento.| | ||
+ | |MANFFW|st_init = 1\\ st_regoff = 0\\ posit < maxpos|**Manual forward**\\ Posizionamento manuale avanti.\\ Viene eccitata l' | ||
+ | |MANFBW|st_init = 1\\ st_regoff = 0\\ posit > minpos|**Manual backward**\\ Posizionamento manuale indietro.\\ Viene eccitata l' | ||
+ | |REGON|st_init = 1|**Regulation ON**\\ Abilita la regolazione e l' | ||
+ | |REGOFF|st_init = 1|**Regulation OFF**\\ Disabilita la regolazione e l' | ||
+ | |DELCNT|st_init = 1\\ st_still = 0|**Delta counter**\\ Questo comando è accettato solamente se l'asse è fermo; il conteggio (posizione dell' | ||
+ | |RSERR|-|**Reset error**\\ Azzera lo stato // | ||
+ | |RSWRN|-|**Reset warning**\\ Azzera lo stato // | ||
+ | |RSPRSOK|-|**Reset preset OK**\\ Azzera lo stato // | ||
+ | |||
+ | ==== - PARAMETRI ==== | ||
+ | |||
+ | ^Nome^D^R^A^Condizioni Descrizione^ | ||
+ | |measure|L|R|R-W|-|**Measure** (1 ÷ 999999)\\ Indica lo spazio, in unità di misura, percorso dall' | ||
+ | |pulse|L|R|R-W|-|**Pulse encoder** (1÷ 999999)\\ Indica gli impulsi moltiplicato 4 forniti dallencoder slave per ottenere lo spazio impostato nel parametro measure.\\ Questo parametro è utilizzato per il calcolo della risoluzione dellasse con la formula:\\ Risoluzione = measure* 4 / pulse,\\ La risoluzione deve avere un valore compreso tra 0.00374 e 4.00000\\ st_camex = 0,\\ st_prson = 0.| | ||
+ | |posit|L|R|R-W|-|**Actual position** (-999999 ÷ 999999)\\ È il valore della posizione istantanea dell' | ||
+ | |encoder|L|R|R|-|**Encoder**\\ É il valore della posizione istantanea dell' | ||
+ | |minpos|L|R|R-W|-|**Minimum position** (-999999 ÷ 999999)\\ Definisce la minima quota raggiungibile dall' | ||
+ | |maxpos|L|R|R-W|-|**Maximum position** (-999999 ÷ 999999)\\ Definisce la massima quota raggiungibile dall' | ||
+ | |slowpos|W|R|R-W|-|**Slow position** (0 ÷ 9999)\\ È la distanza dalla quota di posizionamento alla quale è eccitata l' | ||
+ | |tollp|W|R|R-W|-|**Positive tolerance** (0 ÷ 9999)\\ È il limite di tolleranza positivo consentito al posizionamento (massimo errore per eccesso).\\ Valore espresso in Um/10 (QPS).| | ||
+ | |tolln|W|R|R-W|-|**Negative tolerance** (0 ÷ 9999)\\ È il limite di tolleranza negativo consentito al posizionamento (massimo errore per difetto).\\ Valore espresso in Um/10 (QPS).| | ||
+ | |tinv|W|R|R-W|-|**Direction inversion delay** (0 ÷ 999)\\ E' utilizzato per evitare stress meccanici dovuti a troppo rapide inversioni del senso di movimento.\\ Valore introdotto è espresso in centesimi di secondo.| | ||
+ | |slowdly|W|R|R-W|-|**Slow delay** (0 ÷ 999)\\ Quando il posizionamento entra nella fascia di rallentamento, | ||
+ | |tbrake|W|R|R-W|-|**Brake time**\\ È il tempo che intercorre, allo start posizionamento, | ||
+ | |overpos|W|R|R-W|-|**Over position** (0 ÷ 9999)\\ Oltrequota per il recupero giochi e/o delta minimo di posizionamento. Se impostato a zero non è eseguito il recupero giochi.\\ Valore espresso in unità di misura (Um).| | ||
+ | |bklashmode|B|R|R-W|-|**Backslash mode**\\ Seleziona il tipo di recupero giochi:\\ **0** = posizionamento senza recupero giochi,\\ **1** = posizionamento con recupero giochi avanti,\\ **2** = posizionamento con recupero giochi indietro,\\ **3** = posizionamento con recupero giochi avanti senza rallentamento, | ||
+ | |ninert|B|R|R-W|-|**Inertia number** (1 ÷ 8)\\ È il numero di fasce d' | ||
+ | |maxiner|W|R|R-W|-|**Maximum inertia** (0 ÷ 9999)\\ È il massimo valore di variazione dell' | ||
+ | |toldly|W|R|R-W|-|**Tolerance delay** (0 ÷ 9999)\\ Definisce il tempo di ritardo attivazione tolleranza espresso in ms) allo scadere del quale lasse è considerato sicuramente fermo.| | ||
+ | |inertmode|B|R|R-W|-|**Inertia mode selection**\\ Indica il tipo di ricalcolo inerzia eseguito dal device al termine del posizionamento: | ||
+ | |tool|L|R|R-W|-|**Tool thickness** (-999999 ÷ 999999)\\ É il valore dello spessore utensile. Questo valore, espresso in Um/10 (QPS), è sommato alla quota di posizionamento setpos quando è comandato START. La quota finale dell' | ||
+ | |setpos|L|R|R-W|-|**Setted position** (-999999 ÷ 999999)\\ É la quota di posizionamento impostata. Essa è posta in esecuzione dal comando START. Se essa è cambiata durante il posizionamento, | ||
+ | |iner01 ÷ iner16|W|R|R-W|-|**Inertia 01 ÷ 16 value**\\ Sono le 16 memorie dei valori di inerzia. Se il parametro dobiner è 0, verranno utilizzate dal device solamente le prime otto (iner01 ÷ iner08).\\ Valore espresso in Um/10 (QPS).| | ||
+ | |dobiner|B|R|R-W|-|**Double inertia**\\ Con questo parametro è possibile scegliere di ricalcolare un' | ||
+ | |enstol|B|R|R-W|-|**Enable start in tolerance**\\ Abilitazione start con asse in tolleranza: | ||
+ | |prsmode|B|R|R-W|-|**Preset mode**\\ Definisce il tipo di ricerca di preset:\\ **0** = Per la ricerca dell' | ||
+ | |prspos|L|R|R-W|-|**Preset position** (minpos ÷ maxpos)\\ Definisce il valore che è caricato sul conteggio con la procedura di ricerca di preset. Valore espresso in unità di misura (Um).| | ||
+ | |prsdir|B|R|R-W|-|**Preset search direction**\\ Definisce la direzione del movimento asse per la ricerca della camma di abilitazione impulso di zero.\\ **0** = L'asse esegue la ricerca in avanti, prima in rapido, poi in lento.\\ **1** = L'asse esegue la ricerca indietro, prima in rapido, poi in lento.\\ **2** = L'asse esegue la ricerca in avanti sempre in lento.\\ **3** = L'asse esegue la ricerca indietro sempre in lento.| | ||
+ | |actiner|B|R|R|-|**Actual inertia** (0 ÷ 7)\\ Indica la fascia di inerzia in uso.| | ||
+ | |delta|L|R|R-W|-|**Delta counter** (-999999 ÷ 999999)\\ Variabile d'uso come operando dal comando DELCNT.\\ Valore espresso in unità di misura (Um).| | ||
+ | |decpt|B|R|R-W|-|**Decimal point** (0 ÷ 3)\\ Definisce la precisione con la quale si intendono impostare le preselezioni e visualizzare i conteggi relativamente all' | ||
+ | |unitvel|B|R|R-W|-|**Velocity unit**\\ Definisce se l' | ||
+ | |frq|L|-|R|-|**Actual frequency**\\ É il valore della frequenza istantanea dell' | ||
+ | |vel|L|-|R|-|**Actual velocity**\\ É il valore della velocità istantanea dell' | ||
+ | |breaktype|B|R|R-W|-|**Brake type**\\ É il tipo di logica d' | ||
+ | |slowtype|B|R|R-W|-|**Slow type** (0 ÷ 999999)\\ É il tipo di calcolo del rallentamento\\ **0** = fisso con parametro slowpos,\\ **1** = proporzionale alla velocità rilevata,\\ **2** = proporzionale al quadrato della velocità rilevata.| | ||
+ | |maxvel|L|R|R-W|-|**Maximum velocity**\\ Definisce la massima velocità dell' | ||
+ | |maxslow|W|R|R-W|-|**Maximum slowdown** (0 ÷ 9999)\\ É il valore di rallentamento calcolato alla massima velocità dell' | ||
+ | |minslow|W|R|R-W|-|**Minimum slowdown** (0 ÷ 9999)\\ É il minimo valore di rallentamento che può essere calcolato. Questo parametro viene utilizzato se slowtype ? 0. Valore espresso in unità di misura (Um).| | ||
+ | |exeslow|W|-|R|-|**Execution slowdown**\\ Se il parametro slowtype ? 0, indica il valore di rallentamento calcolato dal device in funzione della velocità dell' | ||
+ | |errcode|B|0|R|-|**Error code** (0 ÷ 100)\\ Indica il tipo d' | ||
+ | |errvalue|B|0|R|-|**Error value** (0 ÷ 100)\\ Indica la causa dell' | ||
+ | |wrncode|B|0|R|-|**Warning code** (0 ÷ 100)\\ Indica il tipo di warning intervenuto nel sistema.\\ Il codice è valido solo se st_warning = 1 (Vedi capitolo dedicato).| | ||
+ | |wrnvalue|B|0|R|-|**Warning value** (0 ÷ 100)\\ Indica la causa del warning intervenuto nel sistema. Il codice è valido solo se st_warning = 1 (Vedi capitolo dedicato).| | ||
+ | |st_init|F|-|R|-|**Initialization**\\ Segnalazione di device inizializzato.\\ **0** = Device non inizializzato, | ||
+ | |st_cntlock|F|R|R|-|**Counter locked**\\ Segnalazione di conteggio asse bloccato.\\ **0** = Conteggio asse sbloccato, | ||
+ | |st_cntrev|F|R|R|-|**Counter reversed**\\ Segnalazione di conteggio asse invertito\\ **0** = Conteggio asse non invertito, | ||
+ | |st_movfwd|F|-|R|-|**Forward movement**\\ Segnala l' | ||
+ | |st_movbwd|F|-|R|-|**Backward movement**\\ Segnala l' | ||
+ | |st_movslow|F|-|R|-|**Slowdown movement**\\ Segnala l' | ||
+ | |st_toll|F|-|R|-|**Tolerance**\\ Segnalazione di asse in tolleranza rispetto alla quota posta in esecuzione dal comando di START. La segnalazione di asse in tolleranza può essere ritardata tramite il parametro toldly.\\ **0** = Asse non in tolleranza, | ||
+ | |st_brake|F|-|R|-|**Brake**\\ Segnala l' | ||
+ | |st_movdir|F|-|R|-|**Backward direction**\\ Segnalazione della direzione del movimento.\\ **0** = Avanti,\\ **1** = Indietro.| | ||
+ | |st_still|F|1|R|-|**Still**\\ Segnalazione di asse fermo.\\ **0** = Asse in movimento, | ||
+ | |st_erin|F|-|R|-|**Inertia ricalculation error**\\ Segnala un errore di ricalcolo inerzia. L' | ||
+ | |st_sttoll|F|-|R|-|**Start in tolerance**\\ Attivo segnala, se il parametro enstol = 0, che é stato dato un comando di movimento e l'asse era già in tolleranza sulla quota di traguardo. Lo stato rimane invariato fino al prossimo comando di movimento (START, | ||
+ | |st_prsok|F|-|R|-|**Preset ok**\\ Segnalazione di ricerca di preset asse conclusa correttamente.\\ **0** = Ricerca di preset non ancora conclusa o non eseguita,\\ **1** = Ricerca di preset conclusa correttamente.| | ||
+ | |st_prson|F|-|R|-|**Preset**\\ Segnalazione di ricerca di preset asse in corso.\\ **0** = Ricerca di preset non in corso,\\ **1** = Ricerca di preset in corso.| | ||
+ | |st_regoff|F|1|R|-|**Regulation off**\\ Segnala lo stato di disabilitazione delle uscite e dei comandi di posizionamento.\\ **0** = Uscite di movimento abilitate, | ||
+ | |st_error|F|-|R|-|**Status of device error**\\ Indica lo stato d' | ||
+ | |st_warning|F|-|R|-|**Status of device warning**\\ Indica lo stato di warning nel device. Per la decodifica del warning si deve fare riferimento alla variabile wrncode e wrnvalue.\\ **0** = Warning non presente,\\ **1** = Warning presente,\\ All' | ||
+ | |st_int|F|-|R|-|**Status of interrupt line**\\ Indica lo stato della linea d' | ||
+ | |||
+ | |||
+ | ===== - Limitazioni ===== | ||
+ | |||
+ | Nessuna limitazione. | ||
+ | |||
+ | |||
+ | ===== - Esempio applicativo ===== | ||
+ | |||
+ | ==== - FILE DI CONFIGURAZIONE ==== | ||
+ | |||
+ | <code QCL> | ||
+ | ; | ||
+ | ; Nome Modulo: Ex_Oopos3.CNF Progetto: Ex_OOPOS3 | ||
+ | ; Autore: QEM srl Data: 01/05/99 | ||
+ | ; Sistema: QMove1 / QCL3 Libreria: 1LIB4001 | ||
+ | ; Funzionalità: | ||
+ | ; | ||
+ | ; [1] - Applicativo di esempio per utilizzo device OOPOS 3 | ||
+ | ; | ||
+ | ; | ||
+ | ; Definizione Costanti | ||
+ | ; | ||
+ | CONST | ||
+ | ; | ||
+ | ; Definizione Variabili SYSTEM | ||
+ | ; | ||
+ | SYSTEM | ||
+ | slQuotaPos L ; | ||
+ | ; | ||
+ | ; Definizione Variabili GLOBAL | ||
+ | ; | ||
+ | GLOBAL | ||
+ | gfMovMan F ;Flag segnalazione movimenti manuali in | ||
+ | ; | ||
+ | gfMovAuto F ;Flag segnalazione movimenti automatici | ||
+ | ;in corso | ||
+ | ; | ||
+ | ; Definizione Variabili TIMER | ||
+ | ; | ||
+ | TIMER | ||
+ | ; | ||
+ | ; Definizione DATAGROUP | ||
+ | ; | ||
+ | ;DATAGROUP | ||
+ | |||
+ | ; | ||
+ | ; Configurazione Bus | ||
+ | ; | ||
+ | BUS | ||
+ | 1 1CPUD 02 | ||
+ | 2 1MIXA 00 | ||
+ | 3 . | ||
+ | 4 . | ||
+ | ; | ||
+ | ; Definizione Variabili INPUT | ||
+ | ; | ||
+ | INPUT | ||
+ | ifAvMan | ||
+ | ifInMan | ||
+ | ifStart | ||
+ | ifStop | ||
+ | ; | ||
+ | ; Definizione Variabili OUTPUT | ||
+ | ; | ||
+ | OUTPUT | ||
+ | ofToll | ||
+ | ; | ||
+ | ; Dichiarazione device interni | ||
+ | ; | ||
+ | INTDEVICE | ||
+ | ;Nome Tipo TCamp Contatore | ||
+ | Asse | ||
+ | |||
+ | OutRal | ||
+ | 2.OUT03 X.X | ||
+ | END | ||
+ | </ | ||
+ | |||
+ | ==== - GESTIONE OOPOS3 ==== | ||
+ | |||
+ | <code QCL> | ||
+ | ; | ||
+ | ; Nome File: TASK_00.MOD | ||
+ | ; Progetto: EX_OOPOS3 | ||
+ | ; Descrizione: | ||
+ | ; | ||
+ | ; | ||
+ | ; Operazioni di Inizializzazione Asse | ||
+ | ; | ||
+ | Asse: | ||
+ | Asse:pulse = 4000 ; | ||
+ | Asse:maxpos = 999999 | ||
+ | Asse:minpos = -999999 | ||
+ | Asse: | ||
+ | Asse:tollp = 10 ; | ||
+ | Asse:tolln = 50 ; | ||
+ | Asse:tinv = 50 ;Tempo di inversione | ||
+ | Asse: | ||
+ | Asse:tbrake = 30 ;Tempo di intervento freno | ||
+ | Asse: | ||
+ | Asse: | ||
+ | Asse:ninert = 1 ; | ||
+ | Asse: | ||
+ | Asse:toldly = 50 ;Tempo ritardo segnalazione tolleranza | ||
+ | Asse: | ||
+ | Asse:tool = 0 ; | ||
+ | Asse: | ||
+ | ;(avanti e indietro) | ||
+ | Asse:enstol = 0 ; | ||
+ | Asse: | ||
+ | Asse:prspos = 0 ; | ||
+ | Asse:prsdir = 0 ; | ||
+ | Asse:decpt = 1 ;Cifre decimali | ||
+ | Asse: | ||
+ | Asse: | ||
+ | Asse: | ||
+ | Asse:maxvel = 1000 ;Velocità massima | ||
+ | Asse: | ||
+ | Asse: | ||
+ | INIT Asse ; | ||
+ | WAIT Asse: | ||
+ | CNTUNLOCK Asse ;Sblocca conteggio | ||
+ | WAIT NOT Asse: | ||
+ | CNTDIR Asse ; | ||
+ | WAIT NOT Asse: | ||
+ | ;conteggio | ||
+ | REGON Asse ;Abilita la regolazione | ||
+ | WAIT NOT Asse: | ||
+ | IF (slQuotaPos EQ 0) ;Nel caso in cui la quota di posizionamento | ||
+ | ; | ||
+ | slQuotaPos = 2000 ; | ||
+ | ENDIF | ||
+ | |||
+ | ; | ||
+ | ; Operazioni di Posizionamento | ||
+ | ; ------------------------------ variabili utilizzate ------------------------------- | ||
+ | ; slQuotaPos: Variabile impostabile che rappresenta la quota di posizionamento dell' | ||
+ | ; -------------------------------- flag utilizzati ---------------------------------- | ||
+ | ; gfMovMan: movimento manuale in corso | ||
+ | ; gfMovAuto: Movimento automatico in corso | ||
+ | ; | ||
+ | MAIN: | ||
+ | ; | ||
+ | ; Gestione uscite | ||
+ | ; | ||
+ | ofToll = Asse: | ||
+ | ;stato di tolleranza | ||
+ | ; | ||
+ | ; Gestione movimenti automatici | ||
+ | ; | ||
+ | IF ifStart | ||
+ | IF NOT gfMovMan | ||
+ | ;manuali | ||
+ | IF Asse: | ||
+ | Asse:setpos = slQuotaPos | ||
+ | START Asse ;Esegue lo start dell' | ||
+ | gfMovAuto = 1 ; | ||
+ | ENDIF | ||
+ | ENDIF | ||
+ | ENDIF | ||
+ | IF ifStop | ||
+ | IF NOT Asse: | ||
+ | STOP Asse ; | ||
+ | ENDIF | ||
+ | ENDIF | ||
+ | |||
+ | IF gfMovAuto | ||
+ | ;automatico in corso | ||
+ | IF Asse: | ||
+ | gfMovAuto = 0 ; | ||
+ | ENDIF | ||
+ | ENDIF | ||
+ | |||
+ | ; | ||
+ | ; Gestione movimenti manuali | ||
+ | ; | ||
+ | IF ifAvMan | ||
+ | IF NOT (gfMovAuto OR gfMovMan) | ||
+ | ;automatici o manuali | ||
+ | IF Asse: | ||
+ | MANFFW Asse ; | ||
+ | gfMovMan = 1 ;Segnala movimento manuale in corso | ||
+ | ENDIF | ||
+ | ENDIF | ||
+ | ENDIF | ||
+ | IF ifInMan | ||
+ | IF NOT (gfMovAuto OR gfMovMan) | ||
+ | ;autometici o manuali | ||
+ | IF Asse: | ||
+ | MANFBW Asse ; | ||
+ | gfMovMan = 1 ;Segnala movimento manuale in corso | ||
+ | ENDIF | ||
+ | ENDIF | ||
+ | ENDIF | ||
+ | IF gfMovMan | ||
+ | IF NOT (ifAvMan OR ifInMan) | ||
+ | ;manuale sono OFF | ||
+ | STOP Asse ;Ferma l'asse | ||
+ | | ||
+ | ;movimento manuale | ||
+ | ENDIF | ||
+ | ENDIF | ||
+ | ; | ||
+ | ; Operazioni finali | ||
+ | ; | ||
+ | WAIT 1 | ||
+ | JUMP MAIN | ||
+ | END | ||
+ | </ | ||
+ | |||