Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
en:software:devices:anpos [2016/10/05 16:33] – [4.4. Delta conteggio] qem103 | en:software:devices:anpos [2020/07/13 14:50] (current) – qem103 | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== DEVICE ANPOS ====== | ||
+ | |||
+ | |||
+ | ====== - Introduction ====== | ||
+ | |||
+ | * The internal ANPOS device is a tool that allows to manage the movement of a mechanical axis with a trapezoidal ramps to analog command. | ||
+ | * The main function of the device is to generate a trajectory or 'speed profile' | ||
+ | * The device includes a feed-back process on the measurement taken from the position transducer. This measure compared to generate feedback. | ||
+ | * The control voltage for operation is generated by a hardware DAC (Digital to Analogic Converter) of the BUS QMOVE. | ||
+ | * To sync the device with the actual axis position returned by the axis, there is a special procedure for moving called ' | ||
+ | * The feed-back is the PID+FF type (proportional, | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | |||
+ | ===== - Installation ===== | ||
+ | |||
+ | ==== - Device declaration in the configuration unit ==== | ||
+ | |||
+ | In the configuration unit, the BUS section must be declared so that so that you have the hardware resources required for the implementation of the device ANPOS. | ||
+ | There must be at least a bi-directional counter and a 16-bit resolution analog output. The device can also used an input and an interrupt line for preset search functions.\\ | ||
+ | In the INTDEVICE section of the configuration unit must be add the following definition: | ||
+ | <code QCL> | ||
+ | ; | ||
+ | ; Device declarations | ||
+ | ; | ||
+ | INTDEVICE | ||
+ | .. | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | ^:info:^It is necessary that each definition are present on the same line. In case you don't want to assign a resource,\\ for example IAZero, you must enter in the appropriate field the X.X or X string.^ | ||
+ | |||
+ | where: | ||
+ | ^<device name> | ||
+ | |ANPOS|Keyword that identifies the devices analog positioner.| | ||
+ | |TCamp|Sample time device 1÷255 ms)| | ||
+ | |ICont|Bidirectional counter input| | ||
+ | |IntL|Number of the interrupt line dedicated to the encoder zero pulse during the research phase of presets.\\ Allowed values: 1÷8 (to prevent the device uses this resource, put the X character)| | ||
+ | |IAZero|Input of __enabled__ to acquire the transducer' | ||
+ | |IOutA|Hardware address of the DAC from analog output| | ||
+ | |||
+ | <code QCL> | ||
+ | ; | ||
+ | ; Device declarations | ||
+ | ; | ||
+ | INTDEVICE | ||
+ | Asse_X | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== - Operation ===== | ||
+ | |||
+ | ==== - Position detection ==== | ||
+ | |||
+ | The ANPOS device acquires the position of axis via bi-directional transmitter signals; | ||
+ | these signals are used by an internal counter. This counter does not show directly the position of the axis in the unit of measure required by your application. | ||
+ | The // | ||
+ | transducer and the corresponding application units. The permitted values for this parameter are 0,00374 ÷ 4 with five precision digits. The report must be introduced in | ||
+ | parameter as an integer, and then multiplied by 100000.\\ | ||
+ | // | ||
+ | |||
+ | === - Decimal point === | ||
+ | |||
+ | If for the selected measure unit is also provided for the presence of a decimal point, the positions | ||
+ | must be represented always as an integer value and represent space on the measure | ||
+ | unit without the decimal point. The resolution must be calculated with the same formula | ||
+ | and the numerator the measure without decimal point. The decimal point will be entered in the | ||
+ | value representing the time viewers (example as properties in the terminal operator). | ||
+ | |||
+ | === - Speed === | ||
+ | |||
+ | The speeds are always expressed in whole units of measure in the unit of time choice. From this | ||
+ | it emerges that the device must know the location of the decimal point of the unit of measure and this is done with the //decpt// parameter. This parameter can take 0÷3 values. | ||
+ | |||
+ | === - Example === | ||
+ | |||
+ | ^:info:^To activate this device send the INIT command.^ | ||
+ | |||
+ | * You want to represent the positions in centimeters with a decimal point. | ||
+ | * In 18.2cm of the space the transducer generates 500 pulses. | ||
+ | |||
+ | To calculate the resolution you have to consider the space runs represented in terms of the measuring mm unit. For this the resolution is:\\ | ||
+ | **cntratio = (18.2 x 10< | ||
+ | |||
+ | The settings must be:\\ | ||
+ | // | ||
+ | // | ||
+ | |||
+ | To run a placement at 146 cm, put\\ | ||
+ | // | ||
+ | |||
+ | For setting the 10 centimeters per second must put:\\ | ||
+ | // | ||
+ | // | ||
+ | |||
+ | ==== - Analogue output calibration ==== | ||
+ | |||
+ | ^: | ||
+ | |||
+ | For axis management, thee ANPOS device using an analogue output with 16-bit resolution with 10 V range ± and sign; with the calibration function this analog output can be driven with a constant value in order to test links and functionality. | ||
+ | |||
+ | === - Preliminary motion === | ||
+ | |||
+ | * Remove the emergency condition with the RESUME command. | ||
+ | * The //st_emrg// state = 0 | ||
+ | * Enable calibration axis status with the //CALON// command; the //st_cal// state must therefore take the value 1. | ||
+ | * Now you can set the analog with voltage vout paramenter; the value is expressed in tenths of a volt (-100 ÷ 100 = -10 ÷ 10 V). It is recommended to introduce low values (5, 10, 15 ... like 0.5, 1, 1,5 V). | ||
+ | * When the axis is moving the //frq// parameter indicates the frequency in Hz of the transducer phases. | ||
+ | * The parameter posit displaying the location, varies the space indicating axis. If setting a positive voltage the counter decreases, it is necessary to invert the phases of the transducer or reverse the drive directions. | ||
+ | * You can reverse the direction of the count using the //CNTREV// command. | ||
+ | * If output voltage equal to zero the axis is not stationary, adjust the //offset// parameter to correct the voltage until movement stops. The input value (each bit corresponds to approximately 0.3 mV), will be added algebraically to the value of the analogue output; This operation allows to compensate for any drift in the electronic component, and output from QMOVE that entering the drive. The value is expressed in bits with sign.\\ For an optimal result of calibration this operation must be performed with the system to temperature capacity.. | ||
+ | * To disable calibration status send the //CALOFF// command. | ||
+ | *The state //st_cal// = 0 | ||
+ | |||
+ | === - Output settings === | ||
+ | |||
+ | The ANPOS device raises the voltage value of the analogue output on the basis between the maximum speed of the axis and the maximum output voltage proportion. La proporzionalità è ottenuta with the //maxvel// parameter, maximum axis speed representative on the analog voltage (10 V). The axis must behave symmetrical analog voltage to zero, therefore the speed must be the same on both the positive and negative voltage at maximum.\\ | ||
+ | Before you determine the value of the maximum speed, must establish the unit of time to use for the representation of the speed in the device; the //unitvel// parameter defines the unit of time of speed (Um/min or Um/s). | ||
+ | |||
+ | === - Theoretical method for maximum speed determination === | ||
+ | |||
+ | The theoretical method is a calculation that was performed on the basis of the maximum speed of the motor. Set the maximum revolutions per minute engine declared, we get the maximum speed.\\ Setting in the //maxvel// parameter the maximum speed value calculated. | ||
+ | |||
+ | === - Convenient way to determine the maximum speed === | ||
+ | |||
+ | The practical way is based on the reading of the speed detected by the device in the //vel// variable, giving the drive a voltage. To provide the voltage to drive the device should be placed in a position of calibration as described in the previous paragraph. If the system permits, supply voltage operation of 10 V and read the speed value in the //vel// parameter. If, on the backwards, is an excerpt of the output voltage (1, 2, ... 5 V), calculate the maximum speed with the proportion: //vout// : 10 [V] = //vel : maxvel// | ||
+ | |||
+ | Enter the maximum speed value found in //maxvel// parameter. | ||
+ | |||
+ | ==== - Handling ==== | ||
+ | |||
+ | ^: | ||
+ | |||
+ | The procedures were allowed to complete the first phase of device settings. Now you can run smooth movement of the axis.\\ | ||
+ | * Move the axis in a position whereby it can fulfill a certain area without touching the maximum quota limit. | ||
+ | * Set the current position of the axis to zero, by setting the //posit// parameter = 0. | ||
+ | * Set up the parameters that define the position of the limit switches software: //minpos// = 0 and //maxpos// to the value of the maximum stroke of the axis. | ||
+ | * Set the parameter that defines the time from the axis to reach the maximum speed //taccdec// = 100. This parameter is expressed in hundredths of a second (100 = 1 sec.) | ||
+ | * Set the speed of positioning with the //setvel// parameter. | ||
+ | * Set the target altitude with the //setpos// parameter. | ||
+ | * Set the // | ||
+ | * If the device is in Emergency State of (st_emrg = 1) give the //RESUME// command. | ||
+ | * Start positioning with the //START// command. To stop the movement give the //EMRG// command. | ||
+ | |||
+ | This first movement was done without speed feedback space. The placement may have been executed with some error introduced by the non-linearity of the components or imperfection in the maximum velocity calibration. Then if you enable feedback of space this error goes away. | ||
+ | |||
+ | ==== - PID+FF adjustment ==== | ||
+ | |||
+ | The placement made in the preceding paragraph has been made without considering any position errors.\\ To check the correct position of the axis continuously and automatically, | ||
+ | have a feed-back on the position; for this reason introduces the control PID + FF algorithm including proportional, | ||
+ | |||
+ | {{: | ||
+ | |||
+ | === - Feed forward action === | ||
+ | |||
+ | The feed-forward helps make the system more ready on positioning, | ||
+ | |||
+ | {{: | ||
+ | |||
+ | === - Proportional action === | ||
+ | |||
+ | This action provides an proportional output to the instantaneous axis position error. The size of the proportional action is defined by the //pgain// parameter that defines the sensitivity of the system.\\ The //pgain// parameter is introduced in thousandths; | ||
+ | |||
+ | {{: | ||
+ | |||
+ | === - Integral action === | ||
+ | |||
+ | Integrates the position error of the system over time set in //integt// parameter updating the output until the error is reset.\\ More decreases the integration time of the error, more faster the recovery system error, | ||
+ | but the system may become unstable and swung. | ||
+ | |||
+ | {{: | ||
+ | |||
+ | === - Derivative action === | ||
+ | |||
+ | Anticipates the change of the motion of the system tends to eliminate the overshoot the positioning. | ||
+ | The size of change is calculated over time set in //derivt// parameter.\\ More higher the time of derivation of error and more faster is the transient error recovery system, But if you enter a value that is too high the system becomes unstable, tending to fluctuate. | ||
+ | |||
+ | ==== - Search Preset ==== | ||
+ | |||
+ | Searching for presets is a procedure to synchronize the counter (//posit// parameter) with the real position of the axis. Can be performed in 3 different ways according to the //prsmode// parameter. | ||
+ | |||
+ | === - Preliminary considerations === | ||
+ | |||
+ | * In order to execute a search preset input is needed (acquired via the QMOVE BUS) we call ' | ||
+ | * The preset search procedure is started with the //PRESET// command; early counting from QMOVE can have any value and can be located anywhere. | ||
+ | * The axis must direct towards the cam allows the upload of preset. Not knowing which way to direct the axis to meet the enable input, search for preset lets you choose two solutions with the //prsdir// parameter: | ||
+ | * If during the preset search is given a //PRESET// command, the direction of motion of the axis is reversed. | ||
+ | * Note that the share of presets contained in the //prspos// parameter must be always between the minimum and the maximum quota and after the preset quota load, the axis is automatically positioned to the preset quota. | ||
+ | * When searching preset the software limits //maxpos// and //minpos// are disabled. | ||
+ | * When you set the search speed zero pulse - //sprsvel// - we must consider that in the 0 Mode the input has a hardware filter that delays the acquisition and therefore influence the precision of the loading. In the 1 Mode, the acquisition is made on interrupt input, so the speed is not determinative. We must ensure that the operating time of the zero-pulse is sufficient to be acquired from the card. In order to know the acquisition time of the entrance and the minimum time of zero pulse signal refer to the technical documentation of the used cards. | ||
+ | |||
+ | If enable the preset search with the //PRESET// command, the axis towards the position where you active the enable zero-pulse input of transducer with speed //define by prsvel//. The // | ||
+ | |||
+ | === - Preset search - Mode 0 === | ||
+ | |||
+ | ^: | ||
+ | |||
+ | The deactivation of the enable input zero-pulse transducer, the preset quota is loaded on the counter (parameter // | ||
+ | Next, you disable the // | ||
+ | |||
+ | |Picture 1: Loading presets using the only enabling cam.| | ||
+ | |{{ : | ||
+ | |||
+ | === - Preset search - Mode 1 === | ||
+ | |||
+ | ^: | ||
+ | |||
+ | At the deactivation of the enable input zero-pulse transducer, enables reading of the first zero-pulse provided by the transducer and on this signal, loads the preset quota in counting (parameter // | ||
+ | To load the share presets with 'Mode 1', the card which is attached to the zero-pulse trasducer must transmit this signal on one of the 8 hardware interrupt lines. The device must have been defined to use the same hardware interrupt line (see the definition in the .CNF file).\\ | ||
+ | Subsequently, | ||
+ | |||
+ | |Picture 2: Loading presets using the enable cam and the zero pulse of transducer.| | ||
+ | |{{ : | ||
+ | |||
+ | === - Preset search - Mode 2 === | ||
+ | |||
+ | ^: | ||
+ | |||
+ | With this procedure, the search for preset does not perform any positioning. The load command of the preset quota is provided by the activation of the enable zero encoder input and the // | ||
+ | If the input is active, the load is continuously, | ||
+ | |||
+ | |||
+ | ===== - Special functions ===== | ||
+ | |||
+ | ==== - Multi-axis management ==== | ||
+ | |||
+ | In some applications are required to place a large number of axes by moving a single axis at a time. The design choice falls on installing just one drive that depending on the axis to be placed electrically connects the motor interested in positioning; | ||
+ | The ANPOS device allows you to control access to the DAC device //REGON// and //REGOFF// commands. In this way through the QCL application defines a set of device many axes to be placed; in the definition, all devices use the same DAC resource. (// | ||
+ | Normally all devices must be in the // | ||
+ | For no reason two devices simultaneously must be found in the // | ||
+ | When the device is placed in the regoff position, the analog output remains fixed at the last voltage value called before the //REGOFF// command. | ||
+ | |||
+ | ==== - Change quota and counting in motion ==== | ||
+ | |||
+ | ^: | ||
+ | |||
+ | In some applications is needed to define the target quota during the motion, according to external events to the device. This feature translates into the ability to write to the current setpos parameter even with current placements. | ||
+ | |||
+ | {{: | ||
+ | |||
+ | When positioning you can also change the value of the //posit// counter. This function is usually used when a device must under certain conditions, continue a speed profile for a very long time, that exceeds the time axis takes to reach the limit quota (//maxpos// or // | ||
+ | |||
+ | ==== - Change speed and moving ramp time ==== | ||
+ | |||
+ | When positioning it is possible to vary the speed of the axis without affecting the location to get to. This operation can lead to an increase or a decrease in velocity, even more points with the same placement. This operation is accomplished with new writing in the //setvel// parameter. | ||
+ | |||
+ | {{: | ||
+ | |||
+ | When positioning can be varied even acceleration/ | ||
+ | For special applications the ramp time can be varied even during a change of speed, in this case the new time is put into immediately execution. | ||
+ | |||
+ | {{: | ||
+ | |||
+ | ==== - Delta counter ==== | ||
+ | |||
+ | ^:info:^The command can be sent only if the axis is stopped, condition of st_still = 1.^ | ||
+ | |||
+ | The device always shows the absolute position of the axis; to execute the incremental placements is need a tool to subtract or add some value to the count (posit) without introducing errors. The change can also count with a direct writing to the new value in the posit parameter.\\ | ||
+ | Wanting to steal 100 units of measure from the counter you can:\\ | ||
+ | // | ||
+ | |||
+ | ^:info:^The changing at the value of resolution (// | ||
+ | |||
+ | This operation introduces an error because it imposes the location '// | ||
+ | The //DELCNT// command sum the count an amount equal to the parameter delta without losing the fraction part of the position:\\ | ||
+ | // | ||
+ | //DELCNT Axis//\\ | ||
+ | The //DELCNT// command may be sent only with stationary axis (// | ||
+ | |||
+ | === - Example === | ||
+ | |||
+ | The axis position is of 2 units and is located at point A. You want to add to the //posit// counter three measure units.\\ | ||
+ | With instructions: | ||
+ | // | ||
+ | the axis takes the new B position.\\ | ||
+ | With instructions :\\ | ||
+ | // | ||
+ | //DELCNT Axis//\\ | ||
+ | C position is reached. | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Note that with the first instructions the axis took a delta less than 3 units and this introduced an error.\\ | ||
+ | If you need to send the succession //DELCNT// commands, It is convenient to calculate the value to be summed and send once the command; otherwise beware not to send subsequent commands without a read statement on device parameter. | ||
+ | |||
+ | === - Example === | ||
+ | |||
+ | // | ||
+ | //DELCNT Axis//\\ | ||
+ | //WAIT Axis: | ||
+ | // | ||
+ | //DELCNT Axis// | ||
+ | |||
+ | |||
+ | ===== - Commands and parameters table ===== | ||
+ | |||
+ | ==== - Symbols used ==== | ||
+ | |||
+ | The parameter name, condition or command is taken back to the left side of the table. | ||
+ | |||
+ | **R**\\ | ||
+ | Indicates whether the parameter or state is retentive (upon initialization of the device maintains the previously defined state), or the state assumes upon initialization of the device.\\ | ||
+ | If the device does not need to initialize the ' | ||
+ | R = Retentive\\ | ||
+ | 0 = Upon initialization of the device the value is forced to zero.\\ | ||
+ | 1 = Upon initialization of the device the value is forced to one.\\ | ||
+ | - = Upon initialization of the device is presented significant value. | ||
+ | |||
+ | **D**\\ | ||
+ | Indicates the size of the parameter.\\ | ||
+ | F = Flag\\ | ||
+ | B = Byte\\ | ||
+ | W = Word\\ | ||
+ | L = Long\\ | ||
+ | S = Single Float | ||
+ | |||
+ | === - Conditions === | ||
+ | |||
+ | Describes all the conditions necessary so that the parameter is considered correct or because the command is accepted.\\ | ||
+ | In some cases, limit values are specified for the acceptance of the parameter: if set any values outside the limits, the data is accepted; but must be monitoring the application that provided to ensure the proper functioning.\\ | ||
+ | To run a command, all the conditions must be met; otherwise the command does not run. | ||
+ | |||
+ | **A**\\ | ||
+ | Indicates the access mode.\\ | ||
+ | R = Read.\\ | ||
+ | W = Write.\\ | ||
+ | RW = Read / Write. | ||
+ | |||
+ | ==== - Commands ==== | ||
+ | |||
+ | Controls were ranked by decreasing priority. For example, in the case of contemporary //INIT// and //EMRG// controls, is acquired first the //INIT// command. | ||
+ | |||
+ | ^Name^Conditions^Description^ | ||
+ | |INIT|st_init = 1|**Initialization**\\ Initializing command device.\\ If the device is not initialized does not perform the calculations related to the axis and then sits idle.\\ To startup you can download all parameters in DPR; then, with the INIT command the axis will be inizialiazzato, | ||
+ | |EMRG|st_init = 1|**Emergency**\\ Emergency stopping axis poses, without deceleration ramp, any ongoing positioning. It also disabled the axis space reaction.| | ||
+ | |RESUME|st_init = 1\\ st_emrg = 1|**Resume**\\ Restore of emergency condition of axis; it's enable the axis space reaction.\\ To the start, the axis resume the the positioning.| | ||
+ | |START|st_init = 1\\ st_regoff = 0\\ st_emrg = 0\\ st_cal = 0\\ st_still = 1|**Start**\\ Controls the positioning to the //setpos// quota and //setvel// speed.| | ||
+ | |STOP|st_init = 1\\ st_regoff = 0\\ st_emrg = 0\\ st_cal = 0\\ st_still = 0|**Stop**\\ Stops any ongoing axis positioning.\\ The axis stop follows the deceleration ramp in use. The axis remains in reaction to space.| | ||
+ | |LOOPON|st_init = 1|**Loop ON**\\ Enables the reaction of space axis.\\ The analog output sharpen every external action that attempts to move the axis from the reached position (drift, user, ...). This operation resets any tracking //follerr// error.| | ||
+ | |LOOPOFF|st_init = 1|**Loop OFF**\\ Disable the reaction of space axis.\\ The axis can be moved from this position without that the analogue output contrasts the movement.| | ||
+ | |CNTLOCK|st_init = 1|**Counter lock**\\ Blocks the acquisition of axis counter even if the transducer continues to send signals. At this stage the axis shift is not detected. Disables loading of presets on the counter.\\ Activates the // | ||
+ | |CNTUNLOCK|st_init = 1|**Counter unlock**\\ Unlock the axis counter.\\ Resumes reading of the signals sent from the transducer and the updating counter.\\ Disable the // | ||
+ | |CNTREV|st_init = 1|**Counter reverse**\\ Invert the phases of the transducer in the card.\\ Reverses the direction of the count (increase/ | ||
+ | |CNTDIR|st_init = 1|**Counter direct**\\ Counting the axis is reversed.\\ Disable the // | ||
+ | |PRESET|st_init = 1\\ st_regoff = 0\\ st_emrg = 0\\ st_cal = 0\\ st_still = 1|**Preset**\\ Start axis presets search.\\ Start to preset search procedure in the way set with //prsmode// and //prsdir// parameters. If the preset search is already running, the command performs the reverse search.\\ Activates the // | ||
+ | |CALON|st_init = 1|**Calibration ON**\\ The analog output is used as a voltage source; in this case you cannot use it for positioning the axis. The output value is settable at will through the //vout// variable.| | ||
+ | |CALOFF|st_init = 1\\ st_cal = 1|**Calibration OFF**\\ The analog output is not used as voltage generator, so it can be used for managing placements.| | ||
+ | |MANFW|st_init = 1\\ st_regoff = 0\\ st_prson = 0\\ st_still = 1|**Manual forward**\\ Controls the forward manual positioning (towards maxpos) the set speed.| | ||
+ | |MANBW|st_init = 1\\ st_regoff = 0\\ st_prson = 0\\ st_still = 1|**Manual backward**\\ Controls the back manual positioning (towards minpos) the set speed.| | ||
+ | |REGOFF|st_init = 1\\ st_still = 1|**Regulation OFF**\\ Disable the adjustment and upgrading of the DAC, as well as all the movement commands.| | ||
+ | |REGON|st_init = 1\\ st_regoff = 1|**Regulation ON**\\ Restorte the adjustment and updating the DAC, as well as all the movement commands.| | ||
+ | |DELCNT|st_still = 1\\ st_init = 1|**Delta counter**\\ This command is accepted only if the axis is stopped; the counter (axis position) is modified by adding algebraically the value specified in the delta variable.| | ||
+ | |||
+ | ==== - Parameters ==== | ||
+ | |||
+ | ^ Name ^ D ^ R ^ A ^ Conditions | ||
+ | | cntratio | ||
+ | | maxpos | ||
+ | | minpos | ||
+ | | prspos | ||
+ | | maxvel | ||
+ | | prsvel | ||
+ | | sprsvel | ||
+ | | toll | L | R | R-W | st_still = 1 | **Tolerance**\\ Defines a count range around locating dimensions.\\ If the placement ends within this range, it is considered correct. Value expressed in (Um).\\ Valid Range: -999999 ÷ 999999 | ||
+ | | maxfollerr | ||
+ | | rampmode | ||
+ | | taccdec | ||
+ | | tacc | W | R | R-W | se st_still = 1 writing\\ always enable, if st_still\\ = 0 the new value is\\ stored but\\ processed only if the\\ new time allows you to\\ reach the setting\\ quota | **Acceleration time**\\ Defines the necessary time for the axis to accelerate from zero to maximum speed (condition of stopped axis) at maximum speed. Value expressed in hundredths of a second.\\ Valid Range: from 0 to 999 | | ||
+ | | tdec | W | R | R-W | se st_still = 1 writing\\ always enable, if st_still\\ = 0 the new value is\\ stored but\\ processed only if the\\ new time allows you to\\ reach the setting\\ quota. | ||
+ | | tinv | W | R | R-W | None | **Direction inversion delay**\\ Is used to avoid mechanical stress caused by too rapid direction changes movement. Value expressed in hundredths of a second.\\ Valid Range: from 0 to 999 | | ||
+ | | toldly | ||
+ | | pgain | W | R | R-W | None | **Proportional gain**\\ If set the 1000 value, the coefficient is 1,000\\ Is the factor that is multiplied against the tracking error produces the proportional portion of control output.\\ Valid Range: from 0 to 32767 | | ||
+ | | feedfw | ||
+ | | integt | ||
+ | | derivt | ||
+ | | prsmode | ||
+ | | prsdir | ||
+ | | unitvel | ||
+ | | decpt | B | R | R-W | st_still = 1 | **Decimal point**\\ Defines the accuracy with which you wish to set the presets and view the counts in relation to the axis.\\ Valid Range: from 0 to 3. | | ||
+ | | offset | ||
+ | | setpos | ||
+ | | setvel | ||
+ | | vout | B | 0 | R-W | st_cal = 1 | **Volt out**\\ It's the output voltage value is expressed in tenths of a volt, to be used in the calibration procedure.\\ Valid Range: -100 ÷ 100 | | ||
+ | | vel | L | 0 | R | None | **Velocity**\\ Is the value of the instantaneous speed of the axis. Value expressed in Um/s or Um/ | ||
+ | | frq | L | 0 | R | None | **Frequency**\\ Is the value of the instantaneous frequency of the axis. Value expressed in Hz. | | ||
+ | | posit | L | R | R-W | se st_still = 1 writing\\ always enable, if st_still = 0\\ the new value is\\ processed only if\\ the axis is not decelerating\\ to reach the setting quota. | ||
+ | | follerr | ||
+ | | ffwdreg | ||
+ | | propreg | ||
+ | | intreg | ||
+ | | derreg | ||
+ | | delta | L | R | R-W | None | **Delta counter**\\ Is the value that is added to the count when sending a DELCNT command. Value expressed in (Um).\\ Valid Range: -999999 ÷ 999999 | ||
+ | |||
+ | ==== - States ==== | ||
+ | |||
+ | ^ Name ^ D ^ R ^ A ^ Conditions | ||
+ | | st_init | ||
+ | | st_emrg | ||
+ | | st_toll | ||
+ | | st_prsok | ||
+ | | st_still | ||
+ | | st_prson | ||
+ | | st_movdir | ||
+ | | st_loopon | ||
+ | | st_foller | ||
+ | | st_regoff | ||
+ | | st_cal | ||
+ | | st_cntlock | ||
+ | | st_cntrev | ||
+ | | st_cntrev | ||
+ | |||
+ | |||
+ | ===== - Limitations ===== | ||
+ | |||
+ | No limitation | ||
+ | |||
+ | |||
+ | ===== - Application example ===== | ||
+ | |||
+ | ==== - The configuration file ==== | ||
+ | |||
+ | <code QCL> | ||
+ | ; | ||
+ | ; Module Name: Ex_Anpos.CNF | ||
+ | ; Autor: QEM srl Date: 01/05/99 | ||
+ | ; System: QMove1 / QCL3 | ||
+ | ; Functionality: | ||
+ | ; | ||
+ | ; [1] - Sample application using device ANPOS | ||
+ | ************************************************************************************** | ||
+ | |||
+ | ; | ||
+ | ; Constants Defining | ||
+ | ; | ||
+ | CONST | ||
+ | |||
+ | ; | ||
+ | ; Variable Definition SYSTEM | ||
+ | ; | ||
+ | SYSTEM | ||
+ | slQuotaPos | ||
+ | slVelAsse | ||
+ | |||
+ | ; | ||
+ | ; Variable Definition GLOBAL | ||
+ | ; | ||
+ | GLOBAL | ||
+ | gfMovMan | ||
+ | ;manuals in progress | ||
+ | gfMovAuto | ||
+ | ;ongoing automatic | ||
+ | | ||
+ | ; | ||
+ | ; Variable Definition TIMER | ||
+ | ; | ||
+ | TIMER | ||
+ | |||
+ | ; | ||
+ | ; Definition DATAGROUP | ||
+ | ; | ||
+ | ;DATAGROUP | ||
+ | ; | ||
+ | ; Bus Configuration | ||
+ | ; | ||
+ | BUS | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | ; | ||
+ | ; Variable Definition INPUT | ||
+ | ; | ||
+ | INPUT | ||
+ | ifAvMan | ||
+ | ifInMan | ||
+ | ifStart | ||
+ | ifStop | ||
+ | |||
+ | ; | ||
+ | ; Variable Definition OUTPUT | ||
+ | ; | ||
+ | OUTPUT | ||
+ | ofToll | ||
+ | ofAxeFermo | ||
+ | |||
+ | ; | ||
+ | ; Device declaration | ||
+ | ; | ||
+ | INTDEVICE | ||
+ | ;Name | ||
+ | Asse ANPOS 0004 2.CNT01 | ||
+ | |||
+ | END | ||
+ | </ | ||
+ | |||
+ | ==== - ANPOS management ==== | ||
+ | |||
+ | <code QCL> | ||
+ | ; | ||
+ | ; File Name: TASK_00.MOD | ||
+ | ; Project : EX_ANPOS | ||
+ | ; Description: | ||
+ | ; | ||
+ | |||
+ | ; | ||
+ | ; Initialization work Axis | ||
+ | ; | ||
+ | Axis: | ||
+ | ; | ||
+ | Axis:maxvel = 100000 | ||
+ | ;10V analog output (CALON/ | ||
+ | vout=100) | ||
+ | Axis:maxpos = 999999 | ||
+ | Axis:minpos = -999999 | ||
+ | Axis: | ||
+ | Axis: | ||
+ | Axis:decpt = 0 ; | ||
+ | Axis: | ||
+ | Axis: | ||
+ | Axis:tacc = 0 ; | ||
+ | Axis:tdec = 0 ; | ||
+ | Axis:tinv = 0 ;Inversion axis time | ||
+ | Axis:toll = 5 ;Tolerance | ||
+ | Axis:toldly = 10 ;Time delay activation tolerance | ||
+ | Axis: | ||
+ | Axis:prspos = 0 ;Preset quota | ||
+ | Axis:prsdir = 0 ;Preset search direction | ||
+ | Axis:prsvel = (20 * Asse: | ||
+ | max. speed) | ||
+ | Axis: | ||
+ | ; | ||
+ | Axis:offset = 0 ;Offset voltage | ||
+ | Axis:pgain = 10 ; | ||
+ | Axis:feedfw = 1000 ; | ||
+ | Axis:integt = 0 ;Integral time | ||
+ | Axis:derivt = 0 ;Derivative time | ||
+ | INIT Axis ; | ||
+ | WAIT Axis: | ||
+ | CNTUNLOCK Axis ; | ||
+ | WAIT NOT Axis: | ||
+ | CNTDIR Axis ;Sets the direction of the counter | ||
+ | WAIT NOT Axis: | ||
+ | ;of the counter | ||
+ | REGON Axis ; | ||
+ | WAIT NOT Axis: | ||
+ | RESUME Axis ;Remove the axis from the emergency state | ||
+ | WAIT NOT Axis: | ||
+ | LOOPON Axis ;Snap reaction shaft loop | ||
+ | WAIT Axis: | ||
+ | ; | ||
+ | IF (slVelAxis EQ 0) ;In case the set of speed | ||
+ | ;the axis is zero | ||
+ | slVelAxis = 50 ;Sets a positioning speed | ||
+ | ENDIF | ||
+ | IF (slQuotaPos EQ 0) ;In the event that the quota of | ||
+ | ; | ||
+ | slQuotaPos = 2000 ;Sets a quota of positioning | ||
+ | ENDIF | ||
+ | |||
+ | ; | ||
+ | ; Positioning tasks | ||
+ | ; | ||
+ | ; ------------------------------- used variables ------------------------------------- | ||
+ | ; slVelAxis: Adjustable variable that represents the axis speed | ||
+ | ; (declared in % of the max. speed) | ||
+ | ; slQuotaPos: Adjustable variable that represents the share of axis positioning | ||
+ | ; ---------------------------------- used flags----- --------------------------------- | ||
+ | ; gfMovMan: manual operation in progress | ||
+ | ; gfMovAuto: Automatic movement in progress | ||
+ | ; | ||
+ | MAIN: | ||
+ | ; | ||
+ | ; Outputs management | ||
+ | ; | ||
+ | ofToll = Axis: | ||
+ | ;the tolerance state | ||
+ | ofAxeFermo = Axis: | ||
+ | ;the status of stationary axis | ||
+ | |||
+ | ; | ||
+ | ; Automatic movements managing | ||
+ | ; | ||
+ | IF ifStart | ||
+ | IF NOT gfMovMan | ||
+ | ;manuals | ||
+ | IF Axis: | ||
+ | Axis: | ||
+ | Axis:setpos = slQuotaPos | ||
+ | START Axis ;Run the start of axis | ||
+ | gfMovAuto = 1 ; | ||
+ | ENDIF | ||
+ | ENDIF | ||
+ | ENDIF | ||
+ | IF ifStop | ||
+ | IF NOT Axis: | ||
+ | STOP Axis ;Run the stop of the axis | ||
+ | ENDIF | ||
+ | ENDIF | ||
+ | IF gfMovAuto | ||
+ | ;ongoing automatic | ||
+ | IF Axis: | ||
+ | gfMovAuto = 0 ; | ||
+ | ENDIF | ||
+ | ENDIF | ||
+ | |||
+ | ; | ||
+ | ; Manual movements management | ||
+ | ; | ||
+ | IF ifAvMan | ||
+ | IF NOT (gfMovAuto OR gfMovMan) | ||
+ | ;automatic or manual | ||
+ | IF Axis: | ||
+ | Axis: | ||
+ | MANFW Axis ;Forward axis in manual | ||
+ | gfMovMan = 1 ;Manual movement in progress reports | ||
+ | ENDIF | ||
+ | ENDIF | ||
+ | ENDIF | ||
+ | IF ifInMan | ||
+ | IF NOT (gfMovAuto OR gfMovMan) | ||
+ | ;automatic or manual | ||
+ | IF Axis: | ||
+ | Axis: | ||
+ | MANBW Asse ;Forward axis in manual | ||
+ | gfMovMan = 1 ;Manual movement in progress reports | ||
+ | ENDIF | ||
+ | ENDIF | ||
+ | ENDIF | ||
+ | |||
+ | IF gfMovMan | ||
+ | IF NOT (ifAvMan OR ifInMan) | ||
+ | ;Manual are OFF | ||
+ | STOP Axis ;Stop the axis | ||
+ | gfMovMan = 0 ;Remove the reporting of axis | ||
+ | ;Manual movement | ||
+ | ENDIF | ||
+ | ENDIF | ||
+ | ; | ||
+ | ; Final operations | ||
+ | ; | ||
+ | WAIT 1 | ||
+ | JUMP MAIN | ||
+ | END | ||
+ | </ | ||
+ | |||