PSO (Position Synchronized Output) is an advanced feature that lets you control a drive output in response to the real time position feedback signals of one or more axes. You can use the PSO feature to do tasks such as mark parts or control a laser. The PSO feature operates by generating events in response to a variety of conditions, such as moving a certain distance, entering or exiting a specified range of positions, or when the Galvo Laser Output turns on. These events trigger the generation of a waveform, most often taking the form of a number of configurable pulses, which are then driven onto the desired drive output pin. The PSO feature is split into several functional modules, each of which has its own set of AeroScript functions used to configure it. For more information, refer to PSO Block Diagram.
IMPORTANT: Many PSO modules can be configured to use data values written to the drive array. For each PSO parameter configured to use values from the drive array, the drive can transfer 64,000 values from the drive array to the PSO hardware per second.
The PSO Reset module is a manager module that resets all other PSO modules to their default configuration state. It consists of a single AeroScript function: PsoReset(). You can use this function to ensure that all prior PSO configuration options are cleared and returned to default.
function PsoReset($axis as axis)
Resets all PSO configuration, which restores all PSO settings to their default values.
$axis The axis on which to reset the PSO configuration.
You can use the PSO Distance module to generate events based on the distance traveled by one or more axes. Using three counters to track up to three position feedback sources, the module calculates the distance traveled in real time. Upon reaching the desired distance, the module generates an event to be used by other modules, most often to trigger the generation of a waveform.
In one dimensional mode, the PSO Distance module tracks a single feedback source. The PSO distance counters change in real time in response to the tracked feedback source. When the counters reach the specified distance, the module generates a distance event. The PSO distance module will generate events when the distance is reached in either the positive or negative direction. Upon generating an event, the PSO Distance module resets the distance counters to prepare for the next event.
In two or three dimensional mode, the distance counters independently track each individual feedback source. In real time, the PSO feature calculates the vector distance of the combined inputs, using the sum of squares of each PSO counter. When the vector distance meets or exceeds the desired distance, the PSO distance module generates an event and resets the counters to prepare for the next event.
In addition to generating events at a fixed distance, the PSO Distance module also supports the use of the drive array to specify a sequence of distances (array mode). The module contains a variety of advanced features, such as allowing you to specify additional reset conditions for the PSO counters. For more information on the PSO Distance module, refer to Pso Distance Functions
The PSO Window module allows you to configure a range of position values called a window. Each window consists of a counter and two comparison values: a lower bound and an upper bound. The window counter tracks a single feedback source and changes in real time in response to the tracked feedback source. In the normal use case, the output of the PSO Window module is active when the window counter value is greater than or equal to the lower bound and also less than or equal to the upper bound. You can use the output of the PSO Window module for a variety of purposes, such as masking events from other modules.
The PSO Window module allows you to configure and use two windows simultaneously. If a single window is desired, window 0 should be used. If two windows are desired, use both window 0 and window 1. When using two windows, the output of each window is combined to form a single PSO Window module output. In the normal use case, this means that the PSO Window module output will only be active when both individual window outputs are active (both window counters are within their respective window bounds).
In addition to a fixed window range, the PSO Window module also supports the use of the drive array to specify a sequence of window ranges (array mode). The module contains a variety of advanced features, such as allowing you to generate events when entering or exiting a window range. For more information on the PSO Window module, refer to Pso Window Functions.
You can use the PSO Laser module to generate an event each time the Galvo Laser Output turns on. Use the PsoLaserEventsOn() function to enable the generation of events when the Galvo Laser Output activates. Use the PsoLaserEventsOff() function to disable these events. See the Galvo and IFOV Functions topic for more information on the Galvo Laser Output.
function PsoLaserEventsOn($axis as axis)
Configures the PSO to generate an event when the laser command bit turns on.
$axis The axis on which to generate laser PSO events.
function PsoLaserEventsOff($axis as axis)
Disables PSO laser events.
$axis The axis on which to disable PSO laser events.
The PSO Event module receives all events generated by other modules and combines them into a single output event that can be used to trigger the generation of a waveform. You can use the PSO Event module to manually generate an output event, or a stream of continuous output events. The module allows you to specify a mask of conditions to selectively allow the output event to occur, such as requiring the PSO Window module output to be active. For more information on the PSO Event module, refer to Pso Event Functions.
The PSO Bit module allows you to specify a sequence of binary values, 1 or 0, each known as a bit. Each time the output event from the PSO Event module occurs, the PSO Bit module updates the active bit with the next value in the sequence. The PSO Output module can use the active bit to directly drive the PSO output. The PSO Bit module can also use the active bit as an additional mask, which will allow or prevent the PSO Event module from triggering a waveform.
The PSO Bit module reads the bit data from the drive array as a sequence of 32-bit words and consumes each word in a most significant bit (MSB) first fashion. When the module uses the 32nd bit of the active word, the module loads the next 32-bit word from the drive array.
When you use the mask functionality of the PSO Bit module, it is important to note that the module will apply the bit mask after all other configured PSO Event masking options have been applied. For example, if an active window state masking option prevents an input event from driving the output event of the PSO Event module, that event will not cause the PSO Bit module to update to the next bit value in the sequence, and therefore the bit mask will not be applied. Whenever the output event from the PSO Event module causes a PSO bit value update, the PSO bit module immediately masks the event with the new bit state, potentially preventing the PSO Event module output event from triggering a waveform.
Use the PsoBitmapConfigureArray() function to instruct the PSO Bit module to begin using data from the drive array as the sequence of bit values. Before you use this function, ensure that you have already written the desired bit values, in 32-bit words, to the drive array locations you specify with the $driveArrayStartIndex and $numberOfWords arguments. To write values to the drive array to be used as bit values, use the DriveArrayWrite() function and specify DriveArrayType.PsoBitmapBits as the $driveArrayType argument. For more information on writing values to the drive array, see the DriveArrayWrite() function in the Device Functions topic. When you use bit values from the drive array, the PSO Bit module uses the MSB of the first specified 32-bit word as the active bit. When the 32nd bit of the active word is used, the module uses the MSB of the next 32-bit word in the drive array as the active bit. The module continues using values in the drive array in this fashion until the configured number of bit value words is used. You can also use the $enableRepeat argument to instruct the module to use an infinite number of drive array values. In this mode, the module will return to the value at the $driveArrayStartIndex and use the same set of values again after the module uses the last bit value word in the drive array.
function PsoBitmapConfigureArray($axis as axis, $driveArrayStartAddress as integer, $numberOfPoints as integer, $enableRepeat as integer)
Configures an array of PSO bit data words, where each word is a 32-bit integer.
$axis The axis on which to configure the bit data.
$driveArrayStartAddress The byte-addressable index of the drive array where the first word of bit data is stored.
$numberOfPoints The number of bit data words to be read from the drive array.
$enableRepeat Configures PSO to continue to use bit data words after the last word in the array is used, starting over at the first word.
The PSO Waveform module lets you to generate a configurable waveform that will be driven onto the PSO Waveform module output each time that the output event from the PSO Event module occurs. The PSO Waveform module can be configured in three different modes: Pulse, PWM, and Toggle.
The PSO Waveform module also contains a variety of advanced features, such as allowing you to specify a delay between event and waveform generation, or synchronizing the waveform generation with an external input. For more information on the PSO Waveform module, refer to Pso Waveform Functions.
The PSO Output module allows you to select which internal PSO signal to drive onto the physical output of the drive. You can select a variety of signals, including the PSO Pulse waveform, the PSO Window module output, or the PSO Bit module active bit. The PSO Output Module also allows you to specify conditions to mask the output. Finally, the module also allows you to specify which physical drive output pin the PSO output should utilize. For more information on the PSO Output module, refer to Pso Output Functions.
Part-Speed PSO (Position Synchronized Output) is a special feature that gives you access to PSO when encoder feedback is nonlinear or not available. This PSO is possible because the Automation1 controller uses the part-space vector speed to calculate the distance between firing events. Part-Speed PSO is available on one or more axes for different drive types. For more information, refer to Part-Speed Pso Functions.
Optional Purchase Necessary: On some Aerotech drives, Part-Speed PSO is a paid option. Refer to your ordering information to see if your drive supports Part-Speed PSO.