en:appnote:an008

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
en:appnote:an008 [2017/05/02 15:09] – [Dichiarazione del device nella unit di configurazione] qem103en:appnote:an008 [2019/08/29 17:01] (current) – external edit 127.0.0.1
Line 36: Line 36:
 This is very convenient in the early stages of planning When you just want to make some runs or debugged phase. This is very convenient in the early stages of planning When you just want to make some runs or debugged phase.
  
-==== Corretta parametrizzazione del device ====+==== Correct device parameterization ====
  
-<WRAP center round info 60%>Nota:\\ In questo documento i vari parametri e comandi sono riferiti ad un generico asseperciò bisogna ricordare di utilizzare parametri e comandi relativi all'asse che si intende comandare</WRAP>+^:info:^Note:\\ In this document the various parameters and commands refer to a generic axisso you have to remember to use parameters and commands related to the axis that you want to control^
  
-Una volta dichiarate correttamente le risorse hardware da utilizzare è necessario impostare alcuni parametri in base alle componenti che sono collegate al prodotto Qmove per configurare correttamente ciascun asseLe operazioni andranno quindi ripetute per i tre assiI parametri ricavati dal device EANPOS hanno lo stesso nome con posposta una lettera che indica l'asse che si sta configurando.+Once declared hardware resources properly to use you need to set some parameters depending on the components that are attached to the Qmove product to properly configure each axisThe operations will be repeated for the three axesThe parameters taken from the EANPOS device have the same name with postponed a letter indicating the axis you are configuring.
  
-=== Introduzione di measure e pulse === +=== Measure and pulse introduction === 
-Prendiamo in considerazione il caso (piuttosto diffuso) in cui il trasduttore bidirezionale sia un encoder digitaleSupponiamo che l'encoder sia direttamente calettato su un motore che debba movimentare un asseSarà necessario impostare correttamente i parametri //measure// //pulse// in modo che quest'ultimo possa interpretare gli impulsi encoder che arriveranno al QMove, lo strumento quindi potrà calcolare la posizione dell'asseL'introduzione di //measure// //pulse// consente di stabilire una corrispondenza tra uno spazio in una unità di misura prescelta ed un determinato numero di impulsiNel caso in cui l'utilizzatore conosca già lo spazio percorso in un giro encoder allora potrà procedere direttamente all'inserimento dei valori.\\ + 
-Chiariamo questo concetto con un esempiose l'encoder genera 1000 impulsi giro e si è a conoscenza che l'asse si muove di 5 cm quando l'encoder compie precisamente un giro allora si potranno inserire i seguenti valori:+Let us consider the case the bi-directional transducer is a digital encoder. Suppose that the encoder is directly keyed on an engine that is to move an axisYou will need to set the correctly the //measure// and //pulse// parameters so that the latter can interpret the pulses arriving at QMove, the tool will then calculate the position of the axisThe //measure// and //pulse// introduction establishes a correspondence between a space in a unit of your choice and a certain number of pulsesIn the event that the user already knows the space covered in a round encoder then you'll proceed directly to projecting values.\\ 
 +Let's clarify this concept with an exampleIf the encoder emits 1000 pulses/Rev and you know that the axis moves about 5 cm when the encoder execute exactly one round then you can insert the following values:
 <code QCL> <code QCL>
-Asse:measurex = 50; +Axis:measurex = 50; 
-Asse:pulsex = 4000+Axis:pulsex = 4000
 </code> </code>
  
-il valore di //measure// introdotto inoltre implica la scelta di un'unità di misura del millimetro per misurare le posizioninel parametro //pulse// sì è introdotto un valore pari al numero di impulsi encoder moltiplicato per 4 (cioè il numero di fronti generati dall'encoder). Si ricorda che il rapporto //measure/pulse// deve avere un valore compreso tra 0.00935 (per rispetto dei limiti di precisione del device e del prodotto QMove)È importante sottolineare che i valori appena descritti sono presi come riferimentonon è necessario introdurre i parametri prendendo come riferimento un giro encoder come si andrà descrivere di seguito.+The //measure// value introduced it also involves choosing a unit of measure of mm for measuring positionsin the //pulse// parameter introduces a value equal to the number of encoder impulses multiplied by 4 (the number of fronts generated by the encoder). It is remember that the //measure/pulse// relationship must be have a value between 0.00935 and 1. It is important to emphasize that the values described above are taken as referenceIt is not necessary to introduce the parameters taking as reference a encoder turn as we will describe below. 
 + 
 +When the user does not know in advance the measurement parameters, will still be able to make the correct calibration by following these steps:  
 + 
 +  * give the command to //INIT// at device, verify that the //st_init// status switch to 1 
 +  * through the "monitor device" of QView see on the pc the value of //posit// parameter 
 +  * sets //measure// and //pulse// both to 1 value 
 +  * move the axis manually having him make move a position easily measurable 
 +  * read the //posit// value 
 +  * now insert the desired measurement unit the measured value in the //measure// parameter and the value of the //posit// parameter in the //pulse// parameter 
 + 
 +The encoder resolution is now correctly set. 
 + 
 +A further important operation is set the //maxpos// and //minpos// parameters that define respectively the maximum and the minimum position accessible from an axis.
  
-Quando l'utilizzatore non conosce preventivamente i parametri di misura, potrà comunque effettuare la corretta calibrazione seguendo questi passi: +=== Choice of speed unit measure ===
  
-  * dare il comando di //INIT// al device, verificare che lo stato //st_init// commuti a 1 +The instantaneous speed unit measure of the axis is choice by //unitvel// and //decpt// parameters. You can select the unit of time of speed with the //unitvel// parameter: If this is equal to 0 then the speed is measured in Um/min, if it is equal to 1 then is measured in Um/s. The //decpt// parameter instead determines whether multiple speed-measuring of the basic measure unit Um. For example, if hte basic measure unit Um=mm, and unitvel=you get the speed indicator in the //vel// variable in:\\ 
-  * tramite il "device monitor" di QView visualizzare sul pc il valore del parametro //posit// +mm/s (with decpt = 0),\\ 
-  * impostare //measure// //pulse// entrambi al valore 1 +cm/s (with decpt = 1),\\ 
-  * movimentare l'asse manualmente facendogli compiere uno spostamento di una posizione facilmente misurabile +dm/s (with decpt = 2),\\ 
-  * leggere il valore di //posit// +m/s (with decpt = 3).\\ 
-  * a questo punto inserire con la unità di misura desiderata il valore misurato nel parametro //measure// ed il valore del parametro //posit// nel parametro //pulse//+Then you need to set the proper display on the terminal operator to adjust the correct decimal point position. 
  
-La risoluzione dell'encoder è ora correttamente impostata.+=== Analogue output calibration ===
  
-Un'ulteriore operazione importante da compiere è impostare i parametri //maxpos// e //minpos// che definiscono rispettivamente la massima e la minima posizione raggiungibile da un asse.+^:important:^Attention:\\ Before executing actual placements verify the connections and mechanic parts.
  
-=== Scelta dell'unità di misura della velocità === +We review the case that your device uses an analogue output implemented with DAC systemthis will assume 16 bit resolution input discrete values (so between -32768 and 32767to give analog voltage output range ±10VWith the calibration function this analog output can be controlled with a constant value in order to test links and functionality.
-L'unità di misura della velocità istantanea dell'asse viene scelta tramite i parametri //unitvel// e //decpt//. È possibile scegliere l'unità di tempo della velocità con il parametro //unitvel//: se questo è pari 0 allora la velocità è misurata in Um/min, se è pari a 1 allora è misurata in Um/s. Il parametro //decpt// invece stabilisce se misurare i valori di velocità in multipli dell'unità di misura fondamentale Um. Ad esempio, se l'unità di misura fondamentale Um=mm, ed unitvel=1 si ottiene la visualizzazione della velocità nella variabile //vel// in:\\ +
-mm/s (con decpt = 0),\\ +
-cm/s (con decpt = 1),\\ +
-dm/s (con decpt = 2),\\ +
-m/s (con decpt = 3).\\ +
-In seguito, se necessario, bisognerà configurare correttamente la visualizzazione sul terminale operatore per aggiustare la corretta posizione del punto decimale+
  
-=== Calibrazione uscita analogica === +==== Preliminary motion ====
-<WRAP center round important 60%>Attenzione:\\ Prima di effettuare dei posizionamenti veri e propri è necessario verificare che collegamenti ed organi meccanici non siano causa di malfunzionamenti.</WRAP> +
  
-Esaminiamo il caso in cui il device utilizzi un'uscita analogica implementata con un dispositivo DAC: questo assumerà in ingresso valori discreti con risoluzione 16 bit (perciò compresi fra -32768 e 32767) per dare in uscita una tensione analogica con range ±10V. Con la funzione di calibrazione questa uscita analogica può essere pilotata con un valore costante con lo scopo di verificare collegamenti e funzionalità.+This section describes the operations to be execute to verify the accuracy of the connections and the functionality of the system.
  
-==== Movimentazione preliminare ====+  * give the //INIT// command to device, verify that the //st_init// status switch to 1 
 +  * give the //RESUME// command to remove a possible emergency condition (//st_emrg// 1) 
 +  * enable axis calibration status give the //CALON// command, the //st_cal// status switch to 1 
 +  * in these conditions you can set the analog voltage through the //vout// parameter: the value is expressed in tenths of a Volt (therefore the range of values entered is ±100). It is recommended to introduce low values (5, 10, 15 ...) 
 +  * because now the device is used as "voltage generators" the axis should start moving. If this is not the case you should verify the connections. When the axis is moving the //frq// parameter indicates the frequency of one of the input signals to the bi-directional meter, vel indicates the speed of the axis as //posit// the position according to the selected unit of measure. If giving positive voltage the position decreases You must reverse the phases of transducer (or moving the cables, or with the //CNTREV// command) or reverse the direction of the drive 
 +  * if output voltage 0 V you notice that the axis is moving due to offset voltages, these can be compensate using the //offset// parameter. For an optimal result of the calibration, the operation must be performed with the system in temperature 
 +  * Now you can disable calibration status with the command //CALOFF// (the //st_cal// state switch to 0). 
  
-In questa sezione vengono descritte le operazioni da effettuare per verificare la correttezza dei collegamenti e la funzionalità del sistema che è stato costruito.+==== Analog output parameterization (setting maxvel parameter) ====
  
-  * dare il comando di //INIT// al device, verificare che lo stato //st_init// commuti +The device generates the voltage value of the analog output based on proportion between maximum axis speed and maximum output voltage. To do this you need to set the //maxvel// parameterthat is the speed at which it moves the axis when maximum voltage is given to the drive. Obviously the axis must have symmetrical behavior compared to the zero value of analog voltage, so the speed must be the same (in moduleTo the maximum voltage both positive and negative.\\ 
-  * dare il comando //RESUME// per togliere un'eventuale condizione di emergenza (//st_emrg// = 1) +To know the maximum speed there are two ways: the "theoretical methodyou should know the maximum speed of the motor (declared maximum lapsfrom which you can easily obtain the linear speed. 
-  * abilitare lo stato di calibrazione asse dando il comando //CALON//, lo stato //st_cal// commuta +If you do not know the maximum declared speed of the motor you must proceed in this way:
-  * in queste condizioni è possibile impostare la tensione analogica tramite il parametro //vout//: il valore è espresso in decimi di Volt (perciò il range di valori introducibili è ±100). Si consiglia di introdurre valori bassi (5, 10, 15 ...) +
-  * poiché ora il device è utilizzato come "generatore di tensionel'asse dovrebbe iniziare a muoversi. Se ciò non accade è opportuno verificare la correttezza dei collegamenti. Quando l'asse è in movimento il parametro //frq// indica il valore della frequenza di uno dei segnali in ingresso al contatore bidirezionale, vel indica la velocità dell'asse mentre //posit// la posizione secondo l'unità di misura scelta. Se dando tensione positiva la posizione decrementa è necessario invertire le fasi del trasduttore (o fisicamente spostando i cavi, oppure tramite il comando //CNTREV//o invertire la direzione dell'azionamento +
-  * se con tensione di uscita pari a 0 V si nota comunque che l'asse è in movimento a causa di tensioni di offset, queste si possono controbilanciare agendo sul parametro //offset//. Per un ottimale esito della taratura, l'operazione deve essere eseguita con il sistema in regime di temperatura +
-  * ora è possibile disabilitare lo stato di calibrazione con il comando //CALOFF// (lo stato //st_cal// commuta a 0). +
  
-==== Parametrizzazione uscita analogica (impostazione parametro maxvel) ====+  * enter in the calibration mode (as described above) 
 +  * if possible, provide maximum voltage to the drive and read the value of //vel// parameter 
 +  * you can also provide a lower voltage and calculate the maximum speed with the proportion //vout// : 10 V //vel// : //maxvel//
  
-Il device genera il valore di tensione dell'uscita analogica sulla base di una proporzione tra la velocità massima dell'asse e la massima tensione di uscita. Per fare ciò è necessario impostare il parametro //maxvel//, ovvero la velocità con cui si muove l'asse quando viene data tensione massima all'azionamentoOvviamente l'asse deve avere un comportamento simmetrico rispetto al valore zero di tensione analogica, quindi la velocità deve essere la stessa (in modulo) alla tensione massima sia positiva che negativa.\\ +Now you can then enter the value of the maximum speed in the //maxvel// parameter.
-Per conoscere la velocità massima esistono due vie: il "metodo teorico" presuppone di conosce la velocità massima del motore (giri massimi dichiarati) da cui si può ricavare facilmente la velocità lineare. +
-Se non si è a conoscenza della velocità massima dichiarata del motore si deve procedere in questo modo:+
  
-  * entrare nella modalità di calibrazione (come descritto precedentemente) +=== First movement ===
-  * se il sistema lo permette fornire all'azionamento tensione massima e leggere il valore del parametro //vel// +
-  * è possibile anche fornire una tensione minore e calcolare la velocità massima con la proporzione //vout// : 10 V //vel// : //maxvel//+
  
-Ora è quindi possibile introdurre il valore della velocità massima nel parametro //maxvel//.+^:important:^Attention:\\ Before moving the axis, check the correct operation of the emergency devices and protection.^
  
-=== Prima movimentazione === +The procedures described here have allowed to complete the first phase of the device parameterizationNow it is possible to execute a simple movement of the axis. For example, follow these steps:
-<WRAP center round important 60%>Attenzione:\\ Prima di movimentare l'asse, verificare il corretto funzionamento dei dispositivi d'emergenza e protezione.</WRAP>+
  
-Le procedure fin qui descritte hanno permesso di completare la prima fase di parametrizzazione del device. Ora è possibile eseguire una semplice movimentazione dell'asse. Seguire ad esempio i seguenti passi:+  * give the //INIT// command to device, verify that the //st_init// status switch to 1 
 +  * move the axis to a position for execute a space without bump the limit switches 
 +  * set the parameter that defines the time used by the axis takes to reach the maximum speed from 0 (and vice versa) //taccdec//=50 
 +  * set the positioning speed with the //setvel// parameter 
 +  * set the position quota with the //setpos// parameter 
 +  * set the //feedfw// parameter to 1000 (100%) 
 +  * reset any emergency status with the //RESUME// command 
 +  * start positioning with the //START// command, to stop the movement give the //STOP// command (or //EMRG//)
  
-  * dare il comando di //INIT// al deviceverificare che lo stato //st_init// commuti a 1 +This first movement was performed without activating the ring of space reactionso any error introduced by offset voltage values or from external agents is not corrected
-  * spostare l'asse in una posizione tale per cui si possa compiere un determinato spazio senza incontrare finecorsa +
-  * impostare il parametro che definisce il tempo impiegato dall'asse a raggiungere la velocità massima da 0 (e viceversa) //taccdec//=50 +
-  * impostare la velocità di posizionamento con il parametro //setvel// +
-  * impostare la quota di posizionamento con il parametro //setpos// +
-  * impostare il parametro //feedfw// a 1000 (100%) +
-  * resettare l'eventuale stato di emergenza con il comando //RESUME// +
-  * avviare il posizionamento con il comando //START//, per arrestare il movimento dare il comando //STOP// (oppure //EMRG//)+
  
-Questa prima movimentazione è stata eseguita senza attivare l'anello di reazione di spazio, quindi qualsiasi errore introdotto da valori di tensione di offset o da agenti esterni non viene corretto. +=== Using the RECDATA device to calibrate the PID controller ===
  
-=== Utilizzo del device RECDATA per calibrare correttamente il controllore PID === +When the programmer intends to fine tune the parameters of the PID controllerhe can use an internal device that allows you to record data of the typeposition in primary pulsesAxis Virtual Positionsanalog outputsfollowing errorinputs and outputs statesThis tool is called RECDATA and use the RAM of the QMove CPU, thereforewhen it is usedThe use of the data memory must not exceed the 50% of the total.
-Quando il programmatore intende regolare finemente i parametri del regolatore PID, egli può servirsi di un device interno (residente sul QMove) che permette di registrare dati del tipoposizione in impulsi primariposizioni virtuali asseuscite analogicheerrori di inseguimentostati di ingressi e usciteQuesto tool si chiama RECDATA e sfrutta la RAM della CPU del prodotto QMoveperciòquando viene impiegatol'utilizzo della memoria dei dati non deve superare il 50% di quella totale.+
  
-Poiché gli effetti della regolazione PID producono manifestazioni molto difficili da apprezzare ad occhio nudoil device RECDATA diventa molto utile quando si vogliono tarare parametri quali //pgain//, //integt// //derivt//Infatti fenomeni come l'overshoot o un rallentamento dovuto ad un valore eccessivo del tempo integrale devono essere tenuti in considerazione nella fase di parametrizzazione.+The effects of the PID Regulation produce very difficult events to appreciate with the naked eyethe RECDATA device It becomes very useful when you want to calibrate parameters such as //pgain//, //integt// or //derivt//The events such as overshoot or a slowdown due to excessive value of the integral time must be keep in consideration in the parameterization phase.
  
-L'utilizzo di un device RECDATA risulta molto sempliceè sufficiente infatti che esso sia dichiarato correttamente nella unit di configurazione con una riga del tipo+Because the RECDATA device use is simpleit's sufficient to declare it in the configuration unit with a line of the type
 <code QCL> <code QCL>
 ;---------------------------------  ;--------------------------------- 
-Dichiarazione device interni +Internal device declaration
 ;---------------------------------  ;--------------------------------- 
 INTDEVICE  INTDEVICE 
Line 132: Line 137:
 </code> </code>
  
-il device è particolarmente indicato a monitorare i parametri del device infatti consente di visualizzarei valori di posizione in impulsi primari (prendendo direttamente i dati provenienti dal trasduttore bidirezionale), i valori di posizione teorica che il generatore di profilo di velocità sta generandoi valori di una uscita analogicaL'utente può quindi comodamente accorgersi se i parametri che ha inserito sono corretti per le sue esigenze.+The device is particularly suitable to monitor the device parameters in fact it allows you to viewThe position values in primary pulses (directly taking data from the bidirectional transducer), the theoretical position values that the speed profile generator is producingthe values of an analog outputThe user can then notice if the parameters he has entered are correct for his needs.
  
-Una descrizione più approfondita del device RECDATA si può trovare nella sezione appositaqui ci limitiamo ad elencare i passi da seguire per utilizzarlo+A more detailed description of the RECDATA device you can find it in the appropriate sectionHere we limit ourselves to list the steps to follow to use it
  
-  * dichiarazione del device nella unit di configurazione inserendo come parametri ingressi ed uscite utilizzati anche dal device JOINT +  * device declaration in the configuration unit entering as inputs and outputs parameters also used by the JOINT device 
-  * dare il comando STARTR nel momento in cui si vuole iniziare la registrazioneSTOPR quando la si vuole arrestare +  * give the STARTR command in the moment that you want to start recordingand STOPR When you want to stop 
-  * ad operazioni completate dal menu "Monitor" di QView selezionare "Device Panels", e da lì il valore relativo al device RECDATA +  * to completed operations from the QView "Monitor" select "Device Panels", and from there the value for the RECDATA device 
-  * nella finestra che si aprirà sono disponibili diverse opzionil'operazione più importante da compiere è dare il comando "Start data acquiring" tramite l'apposito icona +  * in the windos that will open are available several optionsThe most important task to do is give the "Start data acquiring" command 
-  * sugli assi cartesiania fine caricamentocompariranno i valori dei parametri che sono stati monitorati+  * on cartesian axesat the end of loadingwill compare the value of the monitored parameters
  
-<WRAP center round info 60%>Nota:\\ Il device RECDATA registra una notevole quantità di dati all'interno della RAM del prodotto QMove, al momento dell'acquisizione da parte del pc il trasferimento avviene via serialeQuesta operazione potrebbe risultare molto lunga a causa della bassa velocità intrinseca del protocollo di comunicazione serialeL'utente quindi può adottare alcuni accorgimenti come: +^:info:^Note:\\ The RECDATA device records a significant amount of data inside the RAM of the QMove, at the time of acquisition by the PC the transfer takes place via serialThis operation may be very long due to the low speed of the serial comunication protocolThe user can then take some precautions such as:\\  - Record only those variables that actually need to be monitored\\  - Lower the sampling time of the RECDATA device.^
-  * prestare attenzione a registrare solo le variabili che necessitano effettivamente di essere monitorate +
-  * abbassare il tempo di campionamento del device RECDATA. +
-</WRAP>+
  
-==== Sviluppo di un applicativo per effettuare un posizionamento in interpolazione ====+==== Development of an application to execute an interpolation position ====
  
-Nella sezione precedente è stato spiegato quali sono i primi passi da seguireTale esempio impiega solo un ristretto spettro dei parametri impostabili del device, in questa sezione inseriamo un codice di esempiodettagliatamente commentatoda cui l'utilizzatore può prendere spunto per sviluppare un applicativo.\\ +In the previous section was explained what are the first steps to followThis example uses only a narrow spectrum of the settable parameters of the device, in this section we insert a sample codecommentedfrom which the user can take a cue to develop an application.\\ 
-Il modo in cui il device va dichiarato è spiegato precedentementee perciò in questa sezione è omessa la unit di configurazione. [[#Dichiarazione del device nella unit di configurazione|Vedi qui.]]+The way the device should be declared is explained previouslyAnd so this section omits the configuration unit. [[#Device declaration in the configuration unit|See here.]]
  
-Supponiamo di dovere effettuare dei posizionamenti con interpolazione di tre assi secondo il percorso indicato in figuraanalizziamo quale potrebbe essere il codice del programma+Suppose you have to make placements with interpolation of three axes as to the path shown in the picturewe analyze what the program code could be
  
 {{:software:devices:joint:an008:an_joint_01.png?nolink550|}} {{:software:devices:joint:an008:an_joint_01.png?nolink550|}}
Line 158: Line 160:
 <code QCL> <code QCL>
 ;************************************************************************************* ;*************************************************************************************
-Unit di configurazione (sono riportate solo le dichiarazioni di variabili e  +Configuration unit (are shown only the declarations of variables and  
-sono omesse le dichiarazioni del bus e del device)+are omitted statements of the bus and the device)
 ;************************************************************************************* ;*************************************************************************************
 ;--------------------------------------------- ;---------------------------------------------
-;  Definizione Array GLOBAL+;  Array GLOBAL definition
 ;--------------------------------------------- ;---------------------------------------------
 ARRGBL ARRGBL
-awPosX    W                   ;quote di posizionamento asseX +awPosX    W                   ;positioning quotas of axisX 
-awPosY    W                   ;quote di posizionamento asseY +awPosY    W                   ;positioning quotas of axisY 
-awPosZ    W                   ;quote di posizionamento asseZ +awPosZ    W                   ;positioning quotas of axisZ 
-awCodeSt  W                   ;codici passo in interpolazione+awCodeSt  W                   ;interpolation Step Codes
 ;------------------------------------------------------------------------------------- ;-------------------------------------------------------------------------------------
-Definizione Variabili SYSTEM+; SYSTEM Variables definition
 ;------------------------------------------------------------------------------------- ;-------------------------------------------------------------------------------------
 SYSTEM SYSTEM
  
 ;------------------------------------------------------------------------------------- ;-------------------------------------------------------------------------------------
-Definizione Variabili GLOBAL+; GLOBAL Variables definition
 ;------------------------------------------------------------------------------------- ;-------------------------------------------------------------------------------------
 GLOBAL GLOBAL
Line 181: Line 183:
  
 ;------------------------------------------------------------------------------------- ;-------------------------------------------------------------------------------------
-Definizione Variabili INPUT+; INPUT Variables definition
 ;------------------------------------------------------------------------------------- ;-------------------------------------------------------------------------------------
 INPUT INPUT
Line 187: Line 189:
  
 ;------------------------------------------------------------------------------------- ;-------------------------------------------------------------------------------------
-Definizione Variabili OUTPUT+; OUTPUT Variables definition
 ;------------------------------------------------------------------------------------- ;-------------------------------------------------------------------------------------
 OUTPUT OUTPUT
Line 197: Line 199:
  
 ;************************ ;************************
-parametrizzazione assi+axis parameterization
 ;************************ ;************************
-;****AsseX**** +;****AxisX**** 
-Asse:measurex = 10000         +Axis:measurex = 10000         
-Asse:pulsex = 40000            ;come calcolare measure pulse è spiegato nel paragrafo apposito.* +Axis:pulsex = 40000            ;how to calculate measure and pulse is explained in specific paragraph.* 
-Asse:maxvelx = 100000          ;come calcolare maxvel è spiegato nel paragrafo apposito.* +Axis:maxvelx = 100000          ;how to calculate maxvel is explained in specific paragraph.* 
-Asse:mxrlvelx = 15000          ;velocità massima raggiungibile in interpolazione +Axis:mxrlvelx = 15000          ;maximum achievable speed in interpolation 
-Asse:maxposx = 1000            ;Quota massima +Axis:maxposx = 1000            ;maximum quota 
-Asse:minposx = -100            ;Quota minima +Axis:minposx = -100            ;minimum quota 
-Asse:maxfollerrx = 10000       ;Errore di inseguimento massimo +Axis:maxfollerrx = 10000       ;maximum following error 
-Asse:unitvelx = 0              ;Unità di tempo della velocità (velocità in Um/min) +Axis:unitvelx = 0              ;speed time unit (speed in Um/min) 
-Asse:decptx = 0                ;Cifre decimali nel calcolo della velocità +Axis:decptx = 0                ;decimal digits in speed calculation 
-Asse:rampmodex = 0             ;Tipo di rampe utilizzate (in questo caso stesso tempo di accelerazione  +Axis:rampmodex = 0             ;ramps type (in this case the same acceleration time  
-                               ;decelerazione da velocità zero a velocità massima+                               ;deceleration from zero speed to maximum speed
-Asse:taccdecx = 100            ;Tempo di accelerazione e di decelerazione (durante movimenti non interpolati+Axis:taccdecx = 100            ;acceleration and deceleration time (During non-interpolated motions
-Asse:tinvx = 0                 ;Tempo di inversione asse +Axis:tinvx = 0                 ;axis inversion Time 
-Asse:tollx = 5                 ;Tolleranza (impostata in Um) +Axis:tollx = 5                 ;tolerance (set in Um) 
-Asse:toldlyx = 10              ;Tempo di ritardo attivazione stato di tolleranza +Axis:toldlyx = 10              ;delay time activation of tolerance state 
-Asse:offsetx = 0               ;Tensione di offset +Axis:offsetx = 0               ;offset voltage 
-Asse:pgainx = 10               ;Guadagno proporzionale +Axis:pgainx = 10               ;proportional gain 
-Asse:feedfwx = 1000            ;Feedforward +Axis:feedfwx = 1000            ;feedforward 
-Asse:integtx = 0               ;Tempo integrale +Axis:integtx = 0               ;integral time 
-Asse:derivtx = 0               ;Tempo derivativo+Axis:derivtx = 0               ;derivative time
  
-;****AsseY**** +;****AxisY**** 
-Asse:measurey = 10000         +Axis:measurey = 10000         
-Asse:pulsey = 40000            ;come calcolare measure pulse è spiegato nel paragrafo apposito.* +Axis:pulsey = 40000            ;how to calculate measure and pulse is explained in specific paragraph.* 
-Asse:maxvely = 100000          ;come calcolare maxvel è spiegato nel paragrafo apposito.* +Axis:maxvely = 100000          ;how to calculate maxvel is explained in specific paragraph.* 
-Asse:mxrlvely = 15000          ;velocità massima raggiungibile in interpolazione +Axis:mxrlvely = 15000          ;maximum achievable speed in interpolation 
-Asse:maxposy = 1000            ;Quota massima +Axis:maxposy = 1000            ;maximum quota 
-Asse:minposy = -100            ;Quota minima +Axis:minposy = -100            ;minimum quota 
-Asse:maxfollerry = 10000       ;Errore di inseguimento massimo +Axis:maxfollerry = 10000       ;maximum following error 
-Asse:unitvely = 0              ;Unità di tempo della velocità (velocità in Um/min) +Axis:unitvely = 0              ;speed time unit (speed in Um/min) 
-Asse:decpty = 0                ;Cifre decimali nel calcolo della velocità +Axis:decpty = 0                ;decimal digits in speed calculation 
-Asse:rampmodey = 0             ;Tipo di rampe utilizzate (in questo caso stesso tempo di accelerazione  +Axis:rampmodey = 0             ;ramps type (in this case the same acceleration time 
-                               ;decelerazione da velocità zero a velocità massima+                               ;deceleration from zero speed to maximum speed
-Asse:taccdecy = 100            ;Tempo di accelerazione e di decelerazione (durante movimenti non interpolati+Axis:taccdecy = 100            ;acceleration and deceleration time (During non-interpolated motions
-Asse:tinvy = 0                 ;Tempo di inversione asse +Axis:tinvy = 0                 ;axis inversion Time 
-Asse:tolly = 5                 ;Tolleranza (impostata in Um) +Axis:tolly = 5                 ;tolerance (set in Um) 
-Asse:toldlyy = 10               ;Tempo di ritardo attivazione stato di tolleranza +Axis:toldlyy = 10              ;delay time activation of tolerance state 
-Asse:offsety = 0               ;Tensione di offset +Axis:offsety = 0               ;offset voltage 
-Asse:pgainy = 10               ;Guadagno proporzionale +Axis:pgainy = 10               ;proportional gain 
-Asse:feedfwy = 1000            ;Feedforward +Axis:feedfwy = 1000            ;feedforward 
-Asse:integty = 0               ;Tempo integrale +Axis:integty = 0               ;integral time 
-Asse:derivty = 0               ;Tempo derivativo+Axis:derivty = 0               ;derivative time
  
-;****AsseZ**** +;****AxisZ**** 
-Asse:measurez = 10000         +Axis:measurez = 10000         
-Asse:pulsez = 40000            ;come calcolare measure pulse è spiegato nel paragrafo apposito.* +Axis:pulsez = 40000            ;how to calculate measure and pulse is explained in specific paragraph.* 
-Asse:maxvelz = 100000          ;come calcolare maxvel è spiegato nel paragrafo apposito.* +Axis:maxvelz = 100000          ;how to calculate maxvel is explained in specific paragraph.* 
-Asse:mxrlvelz = 15000          ;velocità massima raggiungibile in interpolazione +Axis:mxrlvelz = 15000          ;maximum achievable speed in interpolation 
-Asse:maxposz = 1000            ;Quota massima +Axis:maxposz = 1000            ;maximum quota 
-Asse:minposz = -100            ;Quota minima +Axis:minposz = -100            ;minimum quota 
-Asse:maxfollerrz = 10000       ;Errore di inseguimento massimo +Axis:maxfollerrz = 10000       ;maximum following error 
-Asse:unitvelz = 0              ;Unità di tempo della velocità (velocità in Um/min) +Axis:unitvelz = 0              ;speed time unit (speed in Um/min) 
-Asse:decptz = 0                ;Cifre decimali nel calcolo della velocità +Axis:decptz = 0                ;decimal digits in speed calculation 
-Asse:rampmodez = 0             ;Tipo di rampe utilizzate (in questo caso stesso tempo di accelerazione  +Axis:rampmodez = 0             ;ramps type (in this case the same acceleration time  
-                               ;decelerazione da velocità zero a velocità massima+                               ;deceleration from zero speed to maximum speed
-Asse:taccdecz = 100            ;Tempo di accelerazione e di decelerazione (durante movimenti non interpolati+Axis:taccdecz = 100            ;acceleration and deceleration time (During non-interpolated motions
-Asse:tinvz = 0                 ;Tempo di inversione asse +Axis:tinvz = 0                 ;axis inversion Time 
-Asse:tollz = 5                 ;Tolleranza (impostata in Um) +Axis:tollz = 5                 ;tolerance (set in Um) 
-Asse:toldlyz = 10              ;Tempo di ritardo attivazione stato di tolleranza +Axis:toldlyz = 10              ;delay time activation of tolerance state 
-Asse:offsetz = 0               ;Tensione di offset +Axis:offsetz = 0               ;offset voltage 
-Asse:pgainz = 10               ;Guadagno proporzionale +Axis:pgainz = 10               ;proportional gain 
-Asse:feedfwz = 1000            ;Feedforward +Axis:feedfwz = 1000            ;feedforward 
-Asse:integtz = 0               ;Tempo integrale +Axis:integtz = 0               ;integral time 
-Asse:derivtz = 0               ;Tempo derivativo+Axis:derivtz = 0               ;derivative time
  
-;****Parametri device**** +;****Device parameters**** 
-Asse:setveli = 10000           ;Velocità in interpolazione +Axis:setveli = 10000           ;Interpolation speed 
-Asse:maxveli = 15000           ;Velocità massima in interpolazione +Axis:maxveli = 15000           ;Maximum interpolation speed 
-Asse:tacci = 100               ;Tempo di accelerazione di interpolazione +Axis:tacci = 100               ;Interpolation acceleration Time 
-Asse:prgmode = 0               ;impostazione delle quote come assolute+Axis:prgmode = 0               ;Setting quotas as Absolutes
  
  
-;****Inizializzazione del device**** +;****Device initializing**** 
-INIT Asse                     ;Inizializza il device +INIT Axis                     ;Initializes the device 
-WAIT Asse:st_init             ;Attendi che il device sia inizializzato +WAIT Axis:st_init             ;Wait for the device to be initialized 
-CNTUNLOCKX Asse               ;Sblocca acquisizione posizione asse +CNTUNLOCKX Axis               ;Unlock axis position capture 
-WAIT NOT Asse:st_cntlockx     ;Attendi che l'acquisizione della posizione sia sbloccato +WAIT NOT Axis:st_cntlockx     ;Wait for the capture of the position to be unlocked 
-CNTUNLOCKY Asse               ;Sblocca acquisizione posizione asse +CNTUNLOCKY Axis               ;Unlock axis position capture 
-WAIT NOT Asse:st_cntlocky     ;Attendi che l'acquisizione della posizione sia sbloccato +WAIT NOT Axis:st_cntlocky     ;Wait for the capture of the position to be unlocked 
-CNTUNLOCKZ Asse               ;Sblocca acquisizione posizione asse +CNTUNLOCKZ Axis               ;Unlock axis position capture 
-WAIT NOT Asse:st_cntlockz     ;Attendi che l'acquisizione della posizione sia sbloccato +WAIT NOT Axis:st_cntlockz     ;Wait for the capture of the position to be unlocked 
-CNTDIRX Asse                  ;Imposta il senso dell'acquisizione di posizione asse +CNTDIRX Axis                  ;Sets the sense of position acquisition of axis 
-WAIT NOT Asse:st_cntrevx      ;Attendi che sia impostato il senso dell'acquisizione di posizione +WAIT NOT Axis:st_cntrevx      ;Wait for the sense of position acquisition to be set 
-CNTDIRY Asse                  ;Imposta il senso dell'acquisizione di posizione asse +CNTDIRY Axis                  ;Sets the sense of position acquisition of axis 
-WAIT NOT Asse:st_cntrevy      ;Attendi che sia impostato il senso dell'acquisizione di posizione +WAIT NOT Axis:st_cntrevy      ;Wait for the sense of position acquisition to be set 
-CNTDIRZ Asse                  ;Imposta il senso dell'acquisizione di posizione asse +CNTDIRZ Axis                  ;Sets the sense of position acquisition of axis 
-WAIT NOT Asse:st_cntrevz      ;Attendi che sia impostato il senso dell'acquisizione di posizione +WAIT NOT Axis:st_cntrevz      ;Wait for the sense of position acquisition to be set 
-REGONX Asse                   ;Abilita la regolazione asse +REGONX Axis                   ;Enable axis adjustment 
-WAIT NOT Asse:st_regoffx      ;Attendi l'abilitazione alla regolazione +WAIT NOT Axis:st_regoffx      ;Wait for enabling regulation 
-REGONY Asse                   ;Abilita la regolazione asse +REGONY Axis                   ;Enable axis adjustment 
-WAIT NOT Asse:st_regoffx      ;Attendi l'abilitazione alla regolazione +WAIT NOT Axis:st_regoffx      ;Wait for enabling regulation 
-REGONZ Asse                   ;Abilita la regolazione asse +REGONZ Axis                   ;Enable axis adjustment 
-WAIT NOT Asse:st_regoffx      ;Attendi l'abilitazione alla regolazione +WAIT NOT Axis:st_regoffx      ;Wait for enabling regulation 
-RESUMEX Asse                  ;Togli l'asse da eventuale stato di emergenza +RESUMEX Axis                  ;Remove the x-axis from any emergency status 
-WAIT NOT Asse:st_emrgx        ;Attendi che l'asse non sia in emergenza +WAIT NOT Axis:st_emrgx        ;Wait for the axis not to be in emergency 
-RESUMEY Asse                  ;Togli l'asse da eventuale stato di emergenza +RESUMEY Axis                  ;Remove the y-axis from any emergency status 
-WAIT NOT Asse:st_emrgx        ;Attendi che l'asse non sia in emergenza +WAIT NOT Axis:st_emrgx        ;Wait for the axis not to be in emergency 
-RESUMEZ Asse                  ;Togli l'asse da eventuale stato di emergenza +RESUMEZ Axis                  ;Remove the z-axis from any emergency status 
-WAIT NOT Asse:st_emrgx        ;Attendi che l'asse non sia in emergenza +WAIT NOT Axis:st_emrgx        ;Wait for the axis not to be in emergency 
-LOOPONX Asse                  ;Aggancia loop di reazione dell'asse +LOOPONX Axis                  ;Hook axis reaction Loops 
-WAIT Asse:st_looponx          ;Attendi che sia agganciato il loop di reazione dell'asse +WAIT Axis:st_looponx          ;Wait for the Axis reaction loop to be engaged 
-LOOPONY Asse                  ;Aggancia loop di reazione dell'asse +LOOPONY Axis                  ;Hook axis reaction Loops 
-WAIT Asse:st_looponx          ;Attendi che sia agganciato il loop di reazione dell'asse +WAIT Axis:st_looponx          ;Wait for the Axis reaction loop to be engaged 
-LOOPONZ Asse                  ;Aggancia loop di reazione dell'asse +LOOPONZ Axis                  ;Hook axis reaction Loops 
-WAIT Asse:st_looponx          ;Attendi che sia agganciato il loop di reazione dell'asse+WAIT Axis:st_looponx          ;Wait for the Axis reaction loop to be engaged
  
 ;*********************************************** ;***********************************************
-impostazione del programma di posizionamenti+Setting up the Placement Program
 ;*********************************************** ;***********************************************
-;coordinate asse X+;X axis coordinates
 awPosX[1] = 0 awPosX[1] = 0
 awPosX[2] = 100 awPosX[2] = 100
Line 316: Line 318:
 awPosX[5] = 300 awPosX[5] = 300
  
-;coordinate asse Y+;Y axis coordinates
 awPosY[1] = 0 awPosY[1] = 0
 awPosY[2] = 200 awPosY[2] = 200
Line 323: Line 325:
 awPosY[5] = 100 awPosY[5] = 100
  
-;coordinate asse Z+;Z axis coordinates
 awPosZ[1] = 0 awPosZ[1] = 0
 awPosZ[2] = 0 awPosZ[2] = 0
Line 330: Line 332:
 awPosZ[5] = 600 awPosZ[5] = 600
  
-;codici passo in intepolazione+;Step codes in Intepolation
 awCodeSt[1] = 0 awCodeSt[1] = 0
 awCodeSt[1] = 0  awCodeSt[1] = 0 
 awCodeSt[1] = 0 awCodeSt[1] = 0
-awCodeSt[1] = 3000        ;attesa di secondo dopo il 4 posizionamento +awCodeSt[1] = 3000        ;Wait second after 4° placement 
-awCodeSt[1] = 10001       ;accensione dell'uscita al termine dell'ultimo posizionamento+awCodeSt[1] = 10001       ;Switching on output at the end of the last position
  
 ;************************************* ;*************************************
-scrittura dei passi nel programma+Writing steps in the program
 ;************************************* ;*************************************
-Asse:stepnum = 1          ;memorizzo una coordinata alla volta+Axis:stepnum = 1          ;Store one coordinate at a time
 FOR (gbi=1, gbi LE 5, 1)  FOR (gbi=1, gbi LE 5, 1) 
-  Asse:stepin = gbi +  Axis:stepin = gbi 
-  Asse:codex1 = awPosX[gbi]     ;coordinata asse +  Axis:codex1 = awPosX[gbi]     ;axis coordinate 
-  Asse:codey1 = awPosY[gbi]     ;coordinata asse +  Axis:codey1 = awPosY[gbi]     ;axis coordinate 
-  Asse:codez1 = awPosZ[gbi]     ;coordinata asse +  Axis:codez1 = awPosZ[gbi]     ;axis coordinate 
-  Asse:codestp1 = awCodeSt[gbi] ;codice passo in interpolazione +  Axis:codestp1 = awCodeSt[gbi] ;Interpolation Step Code 
-  Asse:stepout = 0 +  Axis:stepout = 0 
-  WRITESTEP Asse +  WRITESTEP Axis 
-  WAIT Asse:stepout EQ Asse:stepin+  WAIT Axis:stepout EQ Axis:stepin
 NEXT NEXT
  
-;ora è completa la tabella del programma dei posizionamenti+;The Placements program table is now complete
  
-Asse:stepbeg = 1      ;passo di inizio programma +Axis:stepbeg = 1      ;program Start step 
-Asse:stepend = 5      ;passo di fine programma +Axis:stepend = 5      ;program End step 
-Asse:setveli = 8000   ;velocità di interpolazione+Axis:setveli = 8000   ;interpolation speed
  
 MAIN: MAIN:
-IF ifStart        ;se do il comando di start da ingresso digitale +IF ifStart        ;if I give the command to start from digital input 
-  STARTPRG Asse  +  STARTPRG Axis  
 ENDIF ENDIF
 </code> </code>
  
-[[#Introduzione di measure e pulse|Come calcolare measure pulse è spiegato nel paragrafo apposito.]]+[[#Measure and pulse introduction|How to calculate measure and pulse is explained in the appropriate section.]]
  
-Per effettuare dei posizionamenti semplici le operazioni da svolgere sono le stesse che sono state analizzate nella descrizione del device EANPOS.+To make simple placements the operations to be carried out are the same ones that have been analyzed in the description of the EANPOS device.
  • Last modified: 2019/08/29 17:18