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:oopos2 [2017/01/16 17:52] – [7.1.1. Condizioni] qem103 | en:software:devices:oopos2 [2020/07/13 14:58] (current) – qem103 | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== DEVICE OOPOS2 ====== | ||
+ | |||
+ | |||
+ | ====== - Introduction ====== | ||
+ | |||
+ | * The OOPOS2 device can control the location of an axis moved basically from digital controls of forward, backward and slow; the location of the axis is acquired via a bi-directional transducer. | ||
+ | * The movement commands can be sent directly to the motor in AC via contactors, or be sent to an inverter. | ||
+ | * The OOPOS2 device includes all functions necessary for the implementation of ON/OFF placements, in addition to special functions such as automatic recalculation of inertia, the mechanical backlash recovery management, managing the slowdown is proportional to the speed and a complete search of presets to synchronize the actual position of the axis with the internal value of the device. | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | |||
+ | ===== - Installation ===== | ||
+ | |||
+ | ==== - DEVICE DECLARATION IN THE CONFIGURATION FILE (.CNF) ==== | ||
+ | |||
+ | In the configuration file (.CNF), the BUS section must be declared so that you have the hardware resources required for the implementation of the OOPOS2 device.\\ | ||
+ | There must be at least a bi-directional meter. The device can also use an interrupt input and a line for preset search functions.\\ | ||
+ | In the INTDEVICE section of the .CNF file must be add the following definition: | ||
+ | <code QCL> | ||
+ | ; | ||
+ | ; Internal device declaration | ||
+ | ; | ||
+ | INTDEVICE | ||
+ | <device name> OOPOS2 TCamp IQCTL ILine IAZero OutAva OutInd OutDir OutMov OutRal OutFre | ||
+ | </ | ||
+ | |||
+ | ^:info:^ It is necessary that each definition are present on the same line. In case you do not want to assign a resource, for example OutFre, You must always enter in the appropriate field the string X.X.^ | ||
+ | |||
+ | where: | ||
+ | |<nome device> | ||
+ | |OOPOS2|Keyword that identifies the on/off positioner device.| | ||
+ | |TCamp|Sampling time device (1÷255 ms).| | ||
+ | |IQCTL|Bidirectional incremental counter address.| | ||
+ | |ILine|Interrupt line dedicated to the zero pulse.| | ||
+ | |IAZero|Input to enable the capture of zero-pulse.| | ||
+ | |OutAva|Address of output used as forward output.| | ||
+ | |OutInd|Address of output used as backward output.| | ||
+ | |OutDir|Address of output used as direction output.| | ||
+ | |OutMov|Address of output used as motion output.| | ||
+ | |OutRal|Address of output used as slowdown output.| | ||
+ | |OutFre|Address of output used as brake output.| | ||
+ | |||
+ | === - Example === | ||
+ | <code QCL> | ||
+ | ; | ||
+ | ; Internale device declaration | ||
+ | ; | ||
+ | INTDEVICE | ||
+ | Axis OOPOS2 0004 2.CNT01 1 2.IN01 2.OUT01 2.OUT02 X.X X.X 2.OUT3 X.X | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== - GETTING STARTED ON ON/OFF POSITIONING ===== | ||
+ | |||
+ | The digital outputs for managing the placement are enable/ | ||
+ | The ON/OFF positioning can executed in both directions (forward/ | ||
+ | |||
+ | ==== - Retrieving backlash ==== | ||
+ | |||
+ | The accuracy with which was built the mechanics is critical to the outcome of the placements. It is impossible to find, on the placements, the precision of the motion of bodies if the moving parts have loose backlash of the tenth. Also on placements of vertical axes very heavy (for example a press or vertical cutter), the inertia of movement upwards is less than the inertia of movement down.\\ | ||
+ | In these and other situations implementation of recovery backlash in positioning significantly improves accuracy. | ||
+ | |||
+ | ^:info:^The positioning is always concluded in the same direction. For example, whereas placements with recovery forward backlash (see Picture 1), for both forward and reverse positioning, | ||
+ | |||
+ | |Picture 1: positioning diagram with recovery backlash.| | ||
+ | |{{ : | ||
+ | |||
+ | ==== - FORWARD POSITIONING WITHOUT RECOVERY BACKLASH ==== | ||
+ | |||
+ | In the Picture 2 Describes the various stages of a ON/OFF placement forward without the implementation of recovery backlash.\\ | ||
+ | The excitement of moving outputs (in this casa the forward output) moving the axis; increasing the count acquired and the appropriate device parameters involve the activation of several resignations to motion management, up to the end of placement and the activation of tolerance output (positioning report concluded correctly). | ||
+ | |||
+ | |Picture 2: forward positioning without the recovery backlash.| | ||
+ | |{{ : | ||
+ | |||
+ | === - Initial conditions === | ||
+ | |||
+ | * The axis is stopped (//st_still = 1//). | ||
+ | * The count is reset to zero (//posit = 0//). | ||
+ | * All outputs are disable (with the exception of brake output). | ||
+ | * You have set both the share placement (// | ||
+ | |||
+ | === - Phase 1 === | ||
+ | |||
+ | * The OOPOS3 device receives the command of //START// positioning. | ||
+ | * Brake output disabled (//st_brake = 0//). | ||
+ | * The advance brake output timer is set to the value defined in the //tbrake// parameter. | ||
+ | |||
+ | === - Phase 2 === | ||
+ | |||
+ | * Terminates the advance brake output timer. | ||
+ | * It's enabled the forward output (// | ||
+ | * The axis begins the movement (vel) and the counter (posit) increases. | ||
+ | * After an acceleration ramp (defined from mechanical inertia or in any acceleration values set in the inverter), axis speed is constant. | ||
+ | |||
+ | === - Phase 3 === | ||
+ | |||
+ | * Positioning reaches the deceleration range (//setpos - slowpos//). | ||
+ | * The forward output is disable (// | ||
+ | * The slowdown timer is set to the value defined by the parameter // | ||
+ | * When the timer of slowdown is half the value set, activates the slowdown output (// | ||
+ | |||
+ | === - Phase 4 === | ||
+ | |||
+ | * Ends the slowdown timer. | ||
+ | * Is enabled the forward output (// | ||
+ | * The axis moving with slow speed. | ||
+ | |||
+ | === - Phase 5 === | ||
+ | |||
+ | * The placement reached the inertial range (//setpos - iner[ninert]// | ||
+ | * The forward (// | ||
+ | * The delay timer tolerance is set to the //toldly// value and start counting. | ||
+ | * The axis keeps moving because of its inertia (variable according to its weight, speed, friction). | ||
+ | |||
+ | === - Phase 6 === | ||
+ | |||
+ | * The axis stops. | ||
+ | * It is important that the axle ends the movement before the end of the timer to delay tolerance. | ||
+ | |||
+ | === - Phase 7 === | ||
+ | |||
+ | * Terminates the delay tolerance timer. | ||
+ | * Brake output is enabled (//st_brake = 1//). | ||
+ | * If enabled, runs the recalculation of inertia. | ||
+ | * If the placement ends in tolerance, is enable the out of tolerance (//st_toll =1//). | ||
+ | |||
+ | |||
+ | ==== - FORWARD POSITIONING WITH RECOVERY BACKLASH IN BACKWARD DIRECTION ==== | ||
+ | |||
+ | In the Picture 3 describes the various stages of a ON/OFF forward placement with the implementation of recovery backlash in backward direction.\\ | ||
+ | The activation of (forward / backward) outputs moving the axis; the increasing of the count acquired and the appropriate device parameters involve the activation of other outputs to the motion management, up to the end of placement and activation of the output of tolerance (positioning report concluded correctly). | ||
+ | |||
+ | |||
+ | |Picture 3: forward positioning with backward recovery backlash.| | ||
+ | |{{ : | ||
+ | |||
+ | === - Premise === | ||
+ | |||
+ | For complete understanding of this description you should have read the previous paragraph (FORWARD POSITIONING WITHOUT RECOVERY BACKLASH). | ||
+ | |||
+ | === - Initial conditions === | ||
+ | |||
+ | * The axis moves at the speed of positioning. | ||
+ | * Count greater than zero. | ||
+ | * All disable outputs except the forward output. | ||
+ | |||
+ | === - Phase 1 === | ||
+ | |||
+ | * The count reaches the deceleration range for recovery overquota backlash (//setpos// + //overpos// - // | ||
+ | * The forward output is disabled (// | ||
+ | * The slowdown is set to the value of the //slowdly// parameter. | ||
+ | |||
+ | === - Phase 2 === | ||
+ | |||
+ | * Terminates the timer advance unlock brake. | ||
+ | * It's enabled the forward output (// | ||
+ | === - Phase 3 === | ||
+ | |||
+ | * Terminates the slowdown timer. | ||
+ | * It's enabled the forward output (// | ||
+ | * The axis moves at low speed. | ||
+ | |||
+ | === - Phase 4 === | ||
+ | |||
+ | * Positioning reaches the inertial range (//setpos// + //overpos// + // | ||
+ | * The forward (// | ||
+ | * The reverse timer is set to the value of //tinv//. | ||
+ | |||
+ | === - Phase 5 === | ||
+ | |||
+ | * Terminates the reverse timer. | ||
+ | * The placement resumes in the backward direction. | ||
+ | |||
+ | === - Phases 6÷8 === | ||
+ | |||
+ | * Normal positioning phases as described above. | ||
+ | |||
+ | ===== - Operation ===== | ||
+ | |||
+ | ==== - HARDWARE CONNECTION ==== | ||
+ | |||
+ | The OOPOS3 device needs some necessary hardware resources, as a bidirectional counter input (CNTxx) and the digital outputs. | ||
+ | |||
+ | ==== - CHECK THE OPERATION OF THE COUNTER RESOURCE ==== | ||
+ | |||
+ | The following procedure is used to test the counter input. | ||
+ | * Initialize the device axis with INIT command.\\ '' | ||
+ | * Checking if the //st_init// state activation.\\ '' | ||
+ | * Enter the value 100000 in the // | ||
+ | * Reset the value of //posit// parameter.\\ '' | ||
+ | * Move forward one revolution axis turning the encoder: verify that the value of the Axis:posit variable it's positive and matches the number of pulses/Rev encoder. | ||
+ | * If the Axis:posit value is negative, swap the encoder phases.\\ If the Axis:posit value remains to zero, check the electrical connections. | ||
+ | |||
+ | ==== - CHECK THE OPERATION OF THE DIGITAL OUTPUTS ==== | ||
+ | |||
+ | ^: | ||
+ | |||
+ | The following procedure is used to verify the operation of the digital outputs of forward, backward and slowdown moving the axis with the manual commands of the device.\\ | ||
+ | To continue, verify that the Axis device is initialized and with the correct '' | ||
+ | * Set the maximum value the software limits of the device in order to enable its movement. Insert the 999999 value in the //maxpos// parameter and the -999999 in the //minpos// parameter.\\ '' | ||
+ | * Give the MANFFW command to active only the forward output..\\ '' | ||
+ | * To verify the correct execution of the command, check that the // | ||
+ | * Check that the axis moves forward and that the count showed in '' | ||
+ | * If the forward output, for example is correspondent to the 2.OUT01 resource, don't enable, check the electrical connection. | ||
+ | * Dare il comando //MANFBW// per eccitare la sola uscita d' | ||
+ | * To verify the correct execution of the command, check that the // | ||
+ | |||
+ | |||
+ | ===== - Functions ===== | ||
+ | |||
+ | ==== - Multi-axis management ==== | ||
+ | |||
+ | In some applications you are prompted to place a large number of axes by moving a single axis at a time. The choice may be to install one drive which depending on the axis to be placed electrically connects the engine interested in positioning; | ||
+ | The EPICPOS parameter allows you to control access to the DAC device using the //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 resource DAC (// | ||
+ | Normally all devices must be in the //st_regoff = 1// state so you will not have access to the DAC. Before you start positioning, | ||
+ | When the device is placed in the regoff position, the analog output remains fixed at the last voltage value defined before the //REGOFF// command. | ||
+ | |||
+ | ==== - Change quota and count in motion ==== | ||
+ | |||
+ | ^: | ||
+ | |||
+ | In some applications you are prompted to define the target quota during placement, depending to external events to the device. With this feature you can write in the //setpos// parameter even with current placements. | ||
+ | |||
+ | {{: | ||
+ | |||
+ | When positioning you can also change the value of the count //posit//. This function is usually used when a device must, under special conditions, continue a speed profile for a very long time, exceeds the time axis takes to reach the quota limit (//maxpos// or // | ||
+ | |||
+ | * Check that the axis moves back and that the count showed in '' | ||
+ | * If the backward output Se l' | ||
+ | * Give the //MANSFW// command to enable the forward and slowdown outputs.\\ '' | ||
+ | * To verify the correct execution of the command, check that the // | ||
+ | * Check that the axis from moving forward at a speed lower than the previous | ||
+ | * If the slowdown output, corresponding to the '' | ||
+ | |||
+ | ==== - Axis resolution parameter setting ==== | ||
+ | |||
+ | To Introduce the locating dimensions in desired unit (Um) You must multiply the pulses generated by the transducer for the multiplicative ratio (// | ||
+ | |||
+ | **Multiplicative coefficient calculation** | ||
+ | As an example, consider introducing dimensions in mm; the unit of measurement (Um) will be in mm. | ||
+ | |||
+ | If the space of 1000 mm is accomplished with 20000 pulses, the '' | ||
+ | |||
+ | Multiplicative value of 100000 adapt the result of dividing to the format in which is expressed the variable '' | ||
+ | This is an integer number but expresses a value with a decimal point at the fifth significant digit. To write '' | ||
+ | |||
+ | === - Example === | ||
+ | |||
+ | * Enter the value 100000 in the cntratio parameter\\ '' | ||
+ | * Reset the value of the posit parameter\\ '' | ||
+ | * Shift the axis of a specific space, for example 1000 mm., that call Sp. | ||
+ | * Capture the value of the Axis:posit parameter | ||
+ | * In Axis: | ||
+ | |||
+ | ==== - Basic settings ==== | ||
+ | |||
+ | For work properly the OOPOS2 device, you must enter a few basic parameters. | ||
+ | * Determining the software limits to be introduced in the //maxpos// and //minpos// parameters.\\ '' | ||
+ | * If you are using a two speed system, set the required space to the axis to switch from high speed to slow speed the at the enabled of the slowdown output; insert the data in the //slowpos// parameter.\\ '' | ||
+ | * Set the time for disable the output of movement when the shaft enters the deceleration range so that the slowdown output does not cause electrical failure or excitement; so that the output slowdown does not cause electrical failure or excitement;// | ||
+ | * Set the tolerance limits to be obtained when placing in the parameters //tollp// and //tolln//. As a first approach, introducing the higher values at precisions requests.\\ '' | ||
+ | * Set the time axis inversion in the tinv parameter.\\ '' | ||
+ | * Consider a single inertia range for all axis; then, set the //ninert// parameter to " | ||
+ | * Enable recalculation of inertia when the placement ends out of tolerance; then, set the // | ||
+ | * Set the time delay tolerance, considering the time it takes for the axis to decelerate to a stop; then, set the// | ||
+ | |||
+ | ==== - The slowdown ==== | ||
+ | |||
+ | === - Introduction === | ||
+ | |||
+ | In the ON/OFF placements the space of slowdown should be long enough to bring the axis at the slow speed (of end placement), which enter the inertial range and conclude your placement in tolerance. It is essential that the speed at the time of entry in the inertial range is always equal, so that inertia is repetitive and continuous recalculations are avoided that would cause an inaccuracy in positioning. | ||
+ | |||
+ | ^: | ||
+ | |||
+ | {{: | ||
+ | |||
+ | ^: | ||
+ | |||
+ | {{: | ||
+ | |||
+ | ^:info:^ Slowdown quota is too short: the axis approaches at the quota with a speed too high to allow the mechanical rapid stop; the succession of the system compromises the placement, stopping the axle out of the tolerance range set.^ | ||
+ | |||
+ | {{: | ||
+ | |||
+ | In some cases the OOPOS3 device must manage the axis where positioning speed is variable. For this reason the OOPOS2 device has a system of automatic calculation of the slowdown quotaq, so the speed of end placement and the inertia value are repetitive, regardless of the speed of the axis and the value of inertia are repetitive, regardless of the speed of the axis..\\ The OOPOS2 device has two methods (selected by the // | ||
+ | * With // | ||
+ | * With // | ||
+ | |||
+ | == - Setting of the speed variable == | ||
+ | |||
+ | To calculate the slowdown value you need setting to acquire the axis speed.\\ | ||
+ | The unit of speed is in function of the following variables: | ||
+ | * unitvel | ||
+ | * decpt | ||
+ | |||
+ | //**Unitvel parameter**// | ||
+ | Defines if the speed values are expressed in Um at the minute (// | ||
+ | |||
+ | **//Decpt parameter// | ||
+ | Whether to set the values of speed in multiples of the fundamental units Um. For example, if the fundamental unit of measure Um=mm, and unitvel=1 you get the speed indicator in the vel variable: | ||
+ | * with decpt = 0 in mm/s | ||
+ | * with decpt = 1 in cm/s | ||
+ | * whit decpt = 2 in dm/s | ||
+ | * whit decpt = 3 in m/s | ||
+ | |||
+ | == - Maximum speed calculating == | ||
+ | |||
+ | **Theoretical method**\\ | ||
+ | you have to apply the formula:\\ | ||
+ | Speed = Frequency * .... | ||
+ | |||
+ | **Pratical method** | ||
+ | It's based on the speed reading detected by the device in the //vel// parameter giving the drive a known voltage. If driving permits, provide the maximum working voltage axis and then read the value in the vel parameter; if you provided a lower voltage, the maximum speed will be proportional to the voltage supplied. | ||
+ | |||
+ | Enter the value of the maximum speed detected in //maxvel// parameter. | ||
+ | === - Proportional to the speed slowdown === | ||
+ | |||
+ | The device calculates the slowdown based on the formula:\\ | ||
+ | Slowdown = (Maximum slowdown x Speed)/ | ||
+ | |||
+ | ^:info:^The calculation of the slowdown, as evidenced by the chart, one of the two maxslow or minslow limits cannot exceed.^ | ||
+ | |||
+ | {{: | ||
+ | |||
+ | where:\\ | ||
+ | Maximum slowdown = corresponds to the //maxslow// variable.\\ | ||
+ | Minimum slowdown = corresponds to the //minslow// variable.\\ | ||
+ | Calculated slowdown = corresponds to the //exeslow// variable.\\ | ||
+ | Maximum speed = corresponds to the //maxvel// variable.\\ | ||
+ | Instantaneous speed = corresponds to the //vel// variable.\\ | ||
+ | |||
+ | == - Proportional slowdown to the square of the speed == | ||
+ | |||
+ | The device auto-calculates the slowdown based on the formula:\\ | ||
+ | Slowdown = (Maximum slowdown x Speed2)/ | ||
+ | |||
+ | {{: | ||
+ | |||
+ | where:\\ | ||
+ | Maximum slowdown = corresponds to the //maxslow// variable.\\ | ||
+ | Minimum slowdown = corresponds to the //minslow// variable.\\ | ||
+ | Calculated slowdown = corresponds to the //exeslow// variable.\\ | ||
+ | Maximim speed = corresponds to the //maxvel// variable.\\ | ||
+ | Instantaneous speed = corresponds to the //vel// variable. | ||
+ | |||
+ | ==== - RECALCULATION OF INERTIA ==== | ||
+ | |||
+ | The values of inertia can be introduced directly by the operator or automatically calculated from the device; the mode is chosen with setting the // | ||
+ | The device manage the subdivision of the axis path (between the //minpos// and //maxpos//) in more same bands; the number of bands is defined by the //ninert// parameter. This way you can have inertia as a function of the band within which concludes the positioning. | ||
+ | |||
+ | By setting the //dobiner// = 0 parameter, the device manage a unique inertia value independently of direction of movement (forward or backward).\\ | ||
+ | By setting the //dobiner// = 1 parameter, the device manage two inertia values for each band, one for the forward direction and another for the backward direction. This mode is applicable, for example, when you move the vertical axis.\\ | ||
+ | For storing inertia, are used the //iner01÷ iner08// parameters (in the event that //dobiner// = 0) or the //iner01÷ iner16// parameters (if dobiner = 1): | ||
+ | |||
+ | ^ ^ **dobiner = 0** ^ **dobiner = 1** ^ | ||
+ | | iner01 | ||
+ | | iner02 | ||
+ | | iner03 | ||
+ | | iner04 | ||
+ | | iner05 | ||
+ | | iner06 | ||
+ | | iner07 | ||
+ | | iner08 | ||
+ | | iner09 | ||
+ | | iner10 | ||
+ | | iner11 | ||
+ | | iner12 | ||
+ | | iner13 | ||
+ | | iner14 | ||
+ | | iner15 | ||
+ | | iner16 | ||
+ | |||
+ | By definition, the forward inertia is used only forward in movements (forward output enabled) while, the backward inertia, is used only for backward movements (backward output enabled). | ||
+ | |||
+ | {{: | ||
+ | |||
+ | ==== - Managing Automatic recalculation Inertia ==== | ||
+ | |||
+ | The calculation of inertias about the various bands can be done automatically by the device; at the end of each placement, the device quantify the value of inertia for use in subsequent placements that will end in the same band.\\ | ||
+ | You can define a set of customizations related to automatic recalculation of inertia. | ||
+ | |||
+ | === - Inertmode === | ||
+ | |||
+ | With the setting of this parameter is used to define when the device execute the recalculating of inertia; there are two methods: | ||
+ | * The recalculation is executed only if the placement ends outside the tolerance range. | ||
+ | * The recalculation is executed at the end of each placement, although it ended in or out of the tolerance range. | ||
+ | |||
+ | === - Toldly === | ||
+ | |||
+ | * Automatic recalculation of inertia is executed by OOPOS2 device when ended the activation delay tolerance (toldly), at the end of which the axis is considered definitely in stop. | ||
+ | |||
+ | === - Maxiner === | ||
+ | |||
+ | * If the value of the inertia recalculated diverges beyond a certain value from inertia in use, you can have an alert (// | ||
+ | |||
+ | ==== - The preset search ==== | ||
+ | |||
+ | The preset searchb is a procedure to synchronize the value of the //posit// parameter with the actual position of the axis. Consists to load a value in the counter (previously stored) at the time of acquisition of transducer zero pulse; you can execute the preset search with a transducer without the zero pulse, but you need an input (cam or sensor) by ' | ||
+ | |||
+ | Formerly to the preset search the counter acquired can have any value and the axis can be located anywhere. For execute the upload of preset quota, the axis you must direct to the " | ||
+ | The initial direction of motion is defined by //prsdir// parameter: | ||
+ | //prsdir// = 0 the axis will start getting forward.\\ | ||
+ | //prsdir// = 1 the axis will start getting backward. | ||
+ | |||
+ | ^: | ||
+ | |||
+ | The preset search start is given from the //PRESET// command.\\ | ||
+ | If during the preset search is given again the //PRESET// command, the direction of motion of the axis is reversed, preserving the operation of the preset search direction.\\ | ||
+ | It should be noted that the presets quota (// | ||
+ | |||
+ | === - Mode 0: loading presets with moving procedure === | ||
+ | |||
+ | ^:info:^The zero pulse enable input has a hardware filter which delays the acquisition and so influence the precision of the loading.\\ Axis speed should be low enough to allow the acquisition of the input.^ | ||
+ | |||
+ | The axis towards to the sensor connected to the enable input zero pulse with a normal placement speed. The // | ||
+ | To the disabling of enabling zero-pulse transducer input is loaded the preset quota on the counter (//posit// parameter).\\ | ||
+ | The axis stop, the st_prson state is disabled and the // | ||
+ | |||
+ | |Picture1: preset load using the only enabling cam.| | ||
+ | |{{ : | ||
+ | |||
+ | === - Mode 1: preset load with moving procedure === | ||
+ | |||
+ | ^:info:^The acquisition is execute on interrupt input then the speed of the axis is not determinative. However, you must verify that the zero pulse activation time is long enough to be captured by the card.^ | ||
+ | |||
+ | The axis towards the sensor connected to input enabling zero-pulse with normal positioning speed. The // | ||
+ | To disable the zero pulse enable input is enabled the reading of the first zero-pulse provided by the transducer and at the time of the acquisition of this signal, is loaded the preset quota in the counter (//posit// parameter).\\ | ||
+ | The axis stops, the // | ||
+ | |||
+ | |Picture 2: loading presets using cam and zero pulse enable transducer.| | ||
+ | |{{ : | ||
+ | |||
+ | === - Mode 2: loading with stopped axis === | ||
+ | |||
+ | With this procedure the preset search is not enabled. The command to load the preset quota is provided by the activation of the zero pulse enable input and is enabled the // | ||
+ | * If the input remains active the loading is continuous. | ||
+ | * If the input is already active to the power on the first load is executed only after its disabled. | ||
+ | ==== - Delta count ==== | ||
+ | |||
+ | ^: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 it is necessary to have a tool to subtract or add some value to the count (posit) without introducing errors. The change counter can be execute even with a direct writing to the new value in the posit parameter.\\ | ||
+ | Wanting to steal 100 units of measure from the count you can: | ||
+ | // | ||
+ | |||
+ | ^:info:^The Changing of the value resolution (// | ||
+ | |||
+ | This operation introduces an error because it imposes the location "// | ||
+ | The //DELCNT// command sum to the count an amount equal to the //delta// parameter without losing the fraction part of the position:\\ | ||
+ | // | ||
+ | //DELCNT Axis//\\ | ||
+ | The //DELCNT// command can be sent only with stationary axis (// | ||
+ | |||
+ | === - Example === | ||
+ | |||
+ | The reading of the position of the axis is of 2 units and is located at point A. To sum the count posit three units.\\ | ||
+ | With instructions: | ||
+ | // | ||
+ | the axis takes the new position B.\\ | ||
+ | With instructions: | ||
+ | // | ||
+ | //DELCNT Axis//\\ | ||
+ | It's reached the point C. | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Note that with the first instructions the axis took a delta less than 3 units and then introduced an error.\\ | ||
+ | If you need to send the succession of //DELCNT// commands, It is convenient to calculate the quantity to be summed and send at once the command; otherwise beware not to send subsequent commands without a read statement on device parameter. | ||
+ | === - Example === | ||
+ | |||
+ | // | ||
+ | //DELCNT Axis// | ||
+ | //WAIT Axis: | ||
+ | // | ||
+ | //DELCNT Axis// | ||
+ | |||
+ | A writing of the type: | ||
+ | <code QCL> | ||
+ | Axis:posit = 1000 | ||
+ | Axis:delta = - 100 | ||
+ | DELCNT Axis | ||
+ | DELCNT Axis | ||
+ | ... | ||
+ | </ | ||
+ | Does not ensure that the posit value is 800, as you would expect from two consecutive subtraction, | ||
+ | <code QCL> | ||
+ | Axisposit = 1000 | ||
+ | Axis:delta = - 100 | ||
+ | DELCNT Axis | ||
+ | WAIT Axis: | ||
+ | DELCNT Axis | ||
+ | WAIT Axis: | ||
+ | ... | ||
+ | </ | ||
+ | |||
+ | === - REGON and REGOFF commands === | ||
+ | |||
+ | With the OOPOS3 device address the movement outputs are for the exclusive use of the device; so they can't be used by other device or by the application.\\ | ||
+ | The //REGOFF// command allows you to make available these resources, by disabling the update from the OOPOS3 device. This condition, verified by the // | ||
+ | The //REGON// command restores normal conditions giving the device updating outputs.\\ | ||
+ | |||
+ | ^:info:^To avoid conflicts and malfunctions, | ||
+ | |||
+ | In the applications that do not need to move the multiple axes, use of // | ||
+ | |||
+ | ==== - Moving ==== | ||
+ | |||
+ | The procedures described here were allowed to complete the steps necessary to device hardware resource definition, electrical verification, | ||
+ | Now you can run simple movement of the axis.\\ | ||
+ | * Move the axis in a position whereby it can fulfill a certain area without meeting the quota limit. | ||
+ | * Reset the count (//posit// = 0 parameter). | ||
+ | * Set the placement quota (//setpos// parameter).\\ '' | ||
+ | * tart positioning (//START// command).\\ '' | ||
+ | * To stop the positioning use the //STOP// command. | ||
+ | ===== - Special functions ===== | ||
+ | |||
+ | ==== - QPS Positioning system (QEM POSITIONING SYSTEM) ==== | ||
+ | |||
+ | ^: | ||
+ | |||
+ | The introduction of inertia parameters (//iner01 ÷ iner16//), the tolerances (//tolp// and //toln//) and thickness tool (//tool//), is proposed with an addition digit, so you can introduce the data with an accuracy 10 times greater.\\ | ||
+ | For a good operation of the QPS system, the // | ||
+ | The QPS system is also introduced in the reading of the data described above. | ||
+ | |||
+ | === - Examples === | ||
+ | |||
+ | ^:info:^The examples are based on a system of positioning with millimetre precision.^ | ||
+ | |||
+ | * If a placement fee equal to 10 mm is normally inserted with the number 10, to introduce the same tolerance value (then with the QPS), you must enter the value 100. | ||
+ | * A tolerance of 10 mm will be displayed with the number 100. | ||
+ | |||
+ | |||
+ | |||
+ | ===== - Commands and parameters table ===== | ||
+ | |||
+ | ==== - Symbols used ==== | ||
+ | |||
+ | The parameter **name**, state or command are is shown on the left side of the table. | ||
+ | |||
+ | **R**\\ | ||
+ | Indicates if 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” field indicates the value that the parameter or state take to the power up of the card.\\ | ||
+ | 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 that must exist is considered correct or because the command is accepted.**\\ | ||
+ | In some cases, limit values are specified for the acceptance of the parameter: If are introduced any values outside the limits set, the data is however accepted; therefore appropriate controls of the application must be provided to ensure the proper functioning.\\ | ||
+ | To execution of the command, all conditions must be met; otherwise the command is not sent. | ||
+ | |||
+ | **A**\\ | ||
+ | Indicates the **access mode**.\\ | ||
+ | R = Read.\\ | ||
+ | W = Write.\\ | ||
+ | RW = Read / Write. | ||
+ | |||
+ | ==== - Commands ==== | ||
+ | |||
+ | The commands were ranked by decreasing priority. For example, in the case of contemporary //STOP// and //START// commands, is acquired first the//STOP// command. | ||
+ | |||
+ | ^ Name ^ Conditions | ||
+ | | INIT | st_init = 0 | **Initialization**\\ Initializing device command. If the device is not initialized, | ||
+ | | START | st_init = 1\\ st_regoff = 0\\ st_still = 1 | **Start**\\ Controls the positioning to setpos quota and //setvel// speed. | ||
+ | | STOP | st_init = 1\\ st_regoff = 0\\ st_emrg = 0 | **Stop**\\ Stops the current axis positioning. The stop of the axis follows the deceleration ramp in use. The axis remains in reaction to space. | ||
+ | | CNTLOCK | ||
+ | | CNTUNLOCK | ||
+ | | CNTREV | ||
+ | | PRESET | ||
+ | | MANSFW | ||
+ | | MANSBW | ||
+ | | MANFFW | ||
+ | | MANFBW | ||
+ | | REGON | st_init = 1 | **Regulation ON**\\ Enable adjustment and updating of movement outputs, and all the movement commands.\\ Disable the // | ||
+ | | REGOFF | ||
+ | | DELCNT | ||
+ | |||
+ | ==== - Parameters ==== | ||
+ | |||
+ | ^ Name ^ D ^ R ^ A ^ Conditions | ||
+ | | cntratio | ||
+ | | posit | L | R | R-W | st_init = ON | **Actual position**\\ Is the value of the instantaneous position of the axis in units defined by the cntratio parameter. Value expressed in units of measurement (Um).\\ Valid range: -999999 ÷ 999999 | ||
+ | | minpos | ||
+ | | maxpos | ||
+ | | slowpos | ||
+ | | tollp | W | R | R-W | No | **Positive tolerance**\\ Is the positive tolerance limit allowed to positioning (maximum error for excess). It is expressed as Um/10 (QPS).\\ Valid range: 0 ÷ 9999 | | ||
+ | | tolln | W | R | R-W | No | **Negative tolerance**\\ Is the negative tolerance limit allowed to positioning (maximum error by defect). It is expressed as Um/10 (QPS).\\ Valid range: 0 ÷ 9999 | | ||
+ | | tinv | W | R | R-W | No | **Direction inversion delay**\\ Is used to avoid mechanical stress caused by too rapid direction changes movement. The input value is expressed in hundredths of a second.\\ Valid range: 0 ÷ 999 | | ||
+ | | slowdly | ||
+ | | tbrake | ||
+ | | overpos | ||
+ | | bklashmode | ||
+ | | ninert | ||
+ | | maxiner | ||
+ | | toldly | ||
+ | | inertmode | ||
+ | | tool | L | R | R-W | No | **Tool thickness**\\ Is the thickness value tool. This value, expressed in Um/10 (QPS), is added to the placement quota setpos when it's commanded START. The final quota of the axis will be then given by: setpos + tool\\ Valid range: -999999 ÷ 999999 | ||
+ | | setpos | ||
+ | | iner01÷iner16 | ||
+ | | dobiner | ||
+ | | enstol | ||
+ | | prsmode | ||
+ | | prspos | ||
+ | | prsdir | ||
+ | | actiner | ||
+ | | delta | L | R | R-W | No | **Delta counter**\\ Use variable as an operand from the DELCNT command.\\ Value expressed in units of measurement (Um).\\ Valid range: -999999 ÷ 999999 | ||
+ | | decpt | B | R | R-W | No | **Decimal point**\\ Defines the accuracy with which you wish to set presets and view the counts in relation to axis.\\ Valid range: 0 ÷ 3 | | ||
+ | | unitvel | ||
+ | | frq | L | - | R | No | **Actual frequency**\\ Is the value of the instantaneous frequency of the axis, considering a phase of the encoder. Value expressed in Hz. | | ||
+ | | vel | L | - | R | No | **Actual velocity**\\ Is the value of the instantaneous speed of the axis. The value is expressed in Um/s or Um/min depending on the unitvel parameter and also depends on the decpt parameter. | ||
+ | | breaktype | ||
+ | | slowtype | ||
+ | | maxvel | ||
+ | | maxslow | ||
+ | | minslow | ||
+ | | exeslow | ||
+ | |||
+ | ==== - States ==== | ||
+ | |||
+ | ^ Name ^ D ^ R ^ A ^ Conditions | ||
+ | | st_init | ||
+ | | st_cntlock | ||
+ | | st_cntrev | ||
+ | | st_movfwd | ||
+ | | st_movbwd | ||
+ | | st_movslow | ||
+ | | st_toll | ||
+ | | st_brake | ||
+ | | st_movdir | ||
+ | | st_still | ||
+ | | st_erin | ||
+ | | st_sttoll | ||
+ | | st_prsok | ||
+ | | st_prson | ||
+ | | st_regoff | ||
+ | |||
+ | |||
+ | ===== - Limitations ===== | ||
+ | |||
+ | No limitation. | ||
+ | |||
+ | |||
+ | ===== - Application example ===== | ||
+ | |||
+ | ==== - Configuration file ==== | ||
+ | |||
+ | <code QCL> | ||
+ | ; | ||
+ | ; Module name: Ex_Oopos.CNF | ||
+ | ; Autor: QEM srl Date: 01/05/99 | ||
+ | ; System: QMove1 / QCL3 | ||
+ | ; Functionality: | ||
+ | ; | ||
+ | ; [1] - Sample application to use the OOPOS 2 device | ||
+ | ; | ||
+ | |||
+ | ; | ||
+ | ; Constant definition | ||
+ | ; | ||
+ | CONST | ||
+ | |||
+ | ; | ||
+ | ; Variable Definition SYSTEM | ||
+ | ; | ||
+ | SYSTEM | ||
+ | slQuotaPos | ||
+ | |||
+ | ; | ||
+ | ; Variable Definition GLOBAL | ||
+ | ; | ||
+ | GLOBAL | ||
+ | gfMovMan | ||
+ | ;progress | ||
+ | gfMovAuto | ||
+ | ;progress | ||
+ | | ||
+ | ; | ||
+ | ; Variable Definition TIMER | ||
+ | ; | ||
+ | TIMER | ||
+ | |||
+ | ; | ||
+ | ; Definition DATAGROUP | ||
+ | ; | ||
+ | ;DATAGROUP | ||
+ | |||
+ | ; | ||
+ | ; Bus Configuration | ||
+ | ; | ||
+ | BUS | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | ; | ||
+ | ; Variable Definition INPUT | ||
+ | ; | ||
+ | INPUT | ||
+ | ifAvMan | ||
+ | ifInMan | ||
+ | ifStart | ||
+ | ifStop | ||
+ | |||
+ | ; | ||
+ | ; Variable Definition OUTPUT | ||
+ | ; | ||
+ | OUTPUT | ||
+ | ofToll | ||
+ | |||
+ | ; | ||
+ | ; Internal device declaration | ||
+ | ; | ||
+ | INTDEVICE | ||
+ | ;Name | ||
+ | Axis OOPOS2 0004 | ||
+ | |||
+ | OutRal | ||
+ | 2.OUT03 X.X | ||
+ | |||
+ | END | ||
+ | </ | ||
+ | |||
+ | ==== - OOPOS2 management ==== | ||
+ | |||
+ | <code QCL> | ||
+ | ; | ||
+ | ; File Name: TASK_00.MOD | ||
+ | ; Project: EX_OOPOS2 | ||
+ | ; Description: | ||
+ | ; | ||
+ | |||
+ | ; | ||
+ | ; Initialization work Axis | ||
+ | ; | ||
+ | Axis: | ||
+ | ; | ||
+ | Axis:maxpos = 999999 | ||
+ | Axis:minpos = -999999 | ||
+ | Axis: | ||
+ | Axis:tollp = 10 ; | ||
+ | Axis:tolln = 50 ; | ||
+ | Axis:tinv = 50 ;Inversion time | ||
+ | Axis: | ||
+ | Axis:tbrake = 30 ;Brake reaction time | ||
+ | Axis: | ||
+ | Axis: | ||
+ | Axis:ninert = 1 ; | ||
+ | Axis: | ||
+ | Axis:toldly = 50 ;Time delay tolerance reporting | ||
+ | Axis: | ||
+ | Axis:tool = 0 ; | ||
+ | Axis: | ||
+ | ;(forward and backward) | ||
+ | Axis:enstol = 0 ; | ||
+ | ;tolerance | ||
+ | Axis: | ||
+ | Axis:prspos = 0 ; | ||
+ | Axis:prsdir = 0 ; | ||
+ | Axis:decpt = 1 ;Decimal digits | ||
+ | Axis: | ||
+ | Axis: | ||
+ | Axis: | ||
+ | Axis:maxvel = 1000 ;Maximum speed | ||
+ | Axis: | ||
+ | Axis: | ||
+ | INIT Axis ; | ||
+ | WAIT Axis: | ||
+ | CNTUNLOCK Axis ;Unlock count | ||
+ | WAIT NOT Axis: | ||
+ | CNTDIR Axis ;Sets the direction of the count | ||
+ | WAIT NOT Axis: | ||
+ | ;count | ||
+ | REGON Axis ;Enable the regulation | ||
+ | WAIT NOT Axis: | ||
+ | IF (slQuotaPos EQ 0) ;In the event that the placement quota | ||
+ | ;of the axis is zero | ||
+ | slQuotaPos = 2000 ;Sets a quota of positioning | ||
+ | ENDIF | ||
+ | |||
+ | ; | ||
+ | ; Positioning tasks | ||
+ | ; --------------------------------- used variables ---------------------------------- | ||
+ | ; slQuotaPos: Adjustable variable that represents the quota of axis positioning | ||
+ | ; --------------------------------- used flags -------------------------------------- | ||
+ | ; gfMovMan: Manual movement in progress | ||
+ | ; gfMovAuto: Automatic movement in progress | ||
+ | ; | ||
+ | MAIN: | ||
+ | |||
+ | ; | ||
+ | ; Managing outputs | ||
+ | ; | ||
+ | ofToll = Axis: | ||
+ | ;tolerance state | ||
+ | ; | ||
+ | ; Managing automatic movements | ||
+ | ; | ||
+ | IF ifStart | ||
+ | IF NOT gfMovMan | ||
+ | ;manuals | ||
+ | IF Axis: | ||
+ | Axis:setpos = slQuotaPos | ||
+ | START Axis ;Execute the start of axis | ||
+ | gfMovAuto = 1 ; | ||
+ | ENDIF | ||
+ | ENDIF | ||
+ | ENDIF | ||
+ | IF ifStop | ||
+ | IF NOT Axis: | ||
+ | STOP Axis ; | ||
+ | ENDIF | ||
+ | ENDIF | ||
+ | |||
+ | IF gfMovAuto | ||
+ | ;in progress | ||
+ | IF Axis: | ||
+ | gfMovAuto = 0 ; | ||
+ | ENDIF | ||
+ | ENDIF | ||
+ | |||
+ | ; | ||
+ | ; Manual movements management | ||
+ | ; | ||
+ | IF ifAvMan | ||
+ | IF NOT (gfMovAuto OR gfMovMan) | ||
+ | ;automatics or manuals | ||
+ | IF Axis: | ||
+ | MANFFW Axis ; | ||
+ | gfMovMan = 1 ;Manual movement in progress reports | ||
+ | ENDIF | ||
+ | ENDIF | ||
+ | ENDIF | ||
+ | IF ifInMan | ||
+ | IF NOT (gfMovAuto OR gfMovMan) | ||
+ | ;automatics or manuals | ||
+ | IF Axis: | ||
+ | MANFBW Axis ; | ||
+ | gfMovMan = 1 ;Manual movement in progress reports | ||
+ | ENDIF | ||
+ | ENDIF | ||
+ | ENDIF | ||
+ | IF gfMovMan | ||
+ | IF NOT (ifAvMan OR ifInMan) | ||
+ | ;manual is OFF | ||
+ | STOP Axis ;Stop the axis | ||
+ | gfMovMan = 0 ;Remove the reporting of axis | ||
+ | ;in manuale movement | ||
+ | ENDIF | ||
+ | ENDIF | ||
+ | |||
+ | ; | ||
+ | ; Final operations | ||
+ | ; | ||
+ | WAIT 1 | ||
+ | JUMP MAIN | ||
+ | |||
+ | END | ||
+ | </ | ||
+ | |||