Part-Speed PSO 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.
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.
When Part-Speed PSO is enabled, a real or virtual axis (or axes) generates the velocity command that is tracked as virtual encoder counts. The virtual encoder counts pass to the drive axis that contains the PSO output and hardware. This axis tracks the virtual PSO counts and generates the PSO pulses. Although Part-Speed PSO might track many axes, the virtual encoder counts are a one dimensional input to the PSO distance tracking and PSO window blocks.
Use the DrivePulseStreamConfigure(), DrivePulseStreamOn(), PsoDistanceConfigureInputs(), and PsoWindowConfigureInput() functions to configure Part-Speed PSO.
To generate the virtual encoder counts, use the DrivePulseStreamConfigure() and DrivePulseStreamOn() functions. Then, you can configure them as an input to PSO. If you use Part-Speed PSO to track more than one axis with different CountsPerUnit parameters, use the $inputScaleFactors argument to scale the axes to have the same number of encoder counts per user unit.
To use the pulse stream output, use the PsoDistanceConfigureInputs() and PsoWindowConfigureInput() functions.
See the Part-Speed PSO Fixed Distance Pulse Output Example Program.
Before you program Part-Speed PSO, read the information that follows.
-
The pulse generator output of the pulse stream has a maximum output rate of 95 MHz. The CountsPerUnit Parameter and programmed vector speed of the virtual axes determine the pulse stream output rate. To calculate the maximum allowable programmed vector speed, use the equation that follows.
where CountsPerUnit is the number of scaled encoder counts per user unit set by the $inputScaleFactors argument of the DrivePulseStreamConfigure() function.
-
When you use the CountsPerUnit Parameter, the user counts for the PSO axis must equal an integer. In the example program, the UnitsToCounts() Function converts the user units of the virtual axis to counts. If one user unit is equal to 1000 counts, you must program the PSO to fire at a minimum of 0.001 user units. The PSO cannot fire at intervals that are not an integer multiple of one count.
Configures pulse streaming mode.
Arguments
$outputAxis The output axis on which to configure pulse streaming mode.
$inputAxes An array of one or more axes which will be tracked.
$inputScaleFactors An array of scale factors to apply to each axis in the $inputAxes array.
Enables pulse streaming mode on an axis.
Arguments
$outputAxis The axis on which to enable pulse streaming mode.
Selects the source of each PSO distance counter.
Arguments
$axis The axis on which to configure the distance counter sources.
$inputs An array of one to three input sources, one for each distance counter.
| enum PsoDistanceInput
GL4PrimaryFeedbackAxis1Encoder0 = 100 GL4PrimaryFeedbackAxis2Encoder0 = 101 GL4IfovFeedbackAxis1 = 102 GL4IfovFeedbackAxis2 = 103 GL4AuxiliaryFeedbackAxis1 = 104 GL4AuxiliaryFeedbackAxis2 = 105 GL4SyncPortA = 106 GL4SyncPortB = 107 GL4DrivePulseStreamAxis1 = 108 GL4DrivePulseStreamAxis2 = 109 XL4sPrimaryFeedback = 110 XL4sAuxiliaryFeedback = 111 XL4sSyncPortA = 112 XL4sSyncPortB = 113 XL4sDrivePulseStream = 114 XR3PrimaryFeedbackAxis1 = 115 XR3PrimaryFeedbackAxis2 = 116 XR3PrimaryFeedbackAxis3 = 117 XR3PrimaryFeedbackAxis4 = 118 XR3PrimaryFeedbackAxis5 = 119 XR3PrimaryFeedbackAxis6 = 120 XR3AuxiliaryFeedbackAxis1 = 121 XR3AuxiliaryFeedbackAxis2 = 122 XR3AuxiliaryFeedbackAxis3 = 123 XR3AuxiliaryFeedbackAxis4 = 124 XR3AuxiliaryFeedbackAxis5 = 125 XR3AuxiliaryFeedbackAxis6 = 126 XR3SyncPortA = 127 XR3SyncPortB = 128 XR3DrivePulseStream = 129 XC4PrimaryFeedback = 130 XC4AuxiliaryFeedback = 131 XC4SyncPortA = 132 XC4SyncPortB = 133 XC4DrivePulseStream = 134 XC4ePrimaryFeedback = 135 XC4eAuxiliaryFeedback = 136 XC4eSyncPortA = 137 XC4eSyncPortB = 138 XC4eDrivePulseStream = 139 XC6ePrimaryFeedback = 140 XC6eAuxiliaryFeedback = 141 XC6eSyncPortA = 142 XC6eSyncPortB = 143 XC6eDrivePulseStream = 144 XL5ePrimaryFeedback = 145 XL5eAuxiliaryFeedback = 146 XL5eSyncPortA = 147 XL5eSyncPortB = 148 XL5eDrivePulseStream = 149 XC2PrimaryFeedback = 150 XC2AuxiliaryFeedback = 151 XC2DrivePulseStream = 152 XC2ePrimaryFeedback = 153 XC2eAuxiliaryFeedback = 154 XC2eDrivePulseStream = 155 XL2ePrimaryFeedback = 156 XL2eAuxiliaryFeedback = 157 XL2eSyncPortA = 158 XL2eSyncPortB = 159 XL2eDrivePulseStream = 160 XI4PrimaryFeedbackAxis1 = 161 XI4PrimaryFeedbackAxis2 = 162 XI4PrimaryFeedbackAxis3 = 163 XI4PrimaryFeedbackAxis4 = 164 XI4AuxiliaryFeedbackAxis1 = 165 XI4AuxiliaryFeedbackAxis2 = 166 XI4AuxiliaryFeedbackAxis3 = 167 XI4AuxiliaryFeedbackAxis4 = 168 XI4SyncPortA = 169 XI4SyncPortB = 170 XI4DrivePulseStreamAxis1 = 171 XI4DrivePulseStreamAxis2 = 172 XI4DrivePulseStreamAxis3 = 173 XI4DrivePulseStreamAxis4 = 174 iXC4PrimaryFeedback = 175 iXC4AuxiliaryFeedback = 176 iXC4SyncPortA = 177 iXC4SyncPortB = 178 iXC4DrivePulseStream = 179 iXC4ePrimaryFeedback = 180 iXC4eAuxiliaryFeedback = 181 iXC4eSyncPortA = 182 iXC4eSyncPortB = 183 iXC4eDrivePulseStream = 184 iXC6ePrimaryFeedback = 185 iXC6eAuxiliaryFeedback = 186 iXC6eSyncPortA = 187 iXC6eSyncPortB = 188 iXC6eDrivePulseStream = 189 iXL5ePrimaryFeedback = 190 iXL5eAuxiliaryFeedback = 191 iXL5eSyncPortA = 192 iXL5eSyncPortB = 193 iXL5eDrivePulseStream = 194 iXR3PrimaryFeedbackAxis1 = 195 iXR3PrimaryFeedbackAxis2 = 196 iXR3PrimaryFeedbackAxis3 = 197 iXR3PrimaryFeedbackAxis4 = 198 iXR3PrimaryFeedbackAxis5 = 199 iXR3PrimaryFeedbackAxis6 = 200 iXR3AuxiliaryFeedbackAxis1 = 201 iXR3AuxiliaryFeedbackAxis2 = 202 iXR3AuxiliaryFeedbackAxis3 = 203 iXR3AuxiliaryFeedbackAxis4 = 204 iXR3AuxiliaryFeedbackAxis5 = 205 iXR3AuxiliaryFeedbackAxis6 = 206 iXR3SyncPortA = 207 iXR3SyncPortB = 208 iXR3DrivePulseStream = 209 GI4DrivePulseStreamAxis1 = 210 GI4DrivePulseStreamAxis2 = 211 GI4DrivePulseStreamAxis3 = 212 iXC2PrimaryFeedback = 213 iXC2AuxiliaryFeedback = 214 iXC2DrivePulseStream = 215 iXC2ePrimaryFeedback = 216 iXC2eAuxiliaryFeedback = 217 iXC2eDrivePulseStream = 218 iXL2ePrimaryFeedback = 219 iXL2eAuxiliaryFeedback = 220 iXL2eSyncPortA = 221 iXL2eSyncPortB = 222 iXL2eDrivePulseStream = 223 iXI4PrimaryFeedbackAxis1 = 224 iXI4PrimaryFeedbackAxis2 = 225 iXI4PrimaryFeedbackAxis3 = 226 iXI4PrimaryFeedbackAxis4 = 227 iXI4AuxiliaryFeedbackAxis1 = 228 iXI4AuxiliaryFeedbackAxis2 = 229 iXI4AuxiliaryFeedbackAxis3 = 230 iXI4AuxiliaryFeedbackAxis4 = 231 iXI4SyncPortA = 232 iXI4SyncPortB = 233 iXI4DrivePulseStreamAxis1 = 234 iXI4DrivePulseStreamAxis2 = 235 iXI4DrivePulseStreamAxis3 = 236 iXI4DrivePulseStreamAxis4 = 237 FLEXPrimaryFeedbackAxis1 = 238 FLEXPrimaryFeedbackAxis2 = 239 FLEXPrimaryFeedbackAxis3 = 240 FLEXPrimaryFeedbackAxis4 = 241 FLEXAuxiliaryFeedbackAxis1 = 242 FLEXAuxiliaryFeedbackAxis2 = 243 FLEXAuxiliaryFeedbackAxis3 = 244 FLEXAuxiliaryFeedbackAxis4 = 245 FLEXSyncPortA = 246 FLEXSyncPortB = 247 FLEXDrivePulseStreamAxis1 = 248 FLEXDrivePulseStreamAxis2 = 249 FLEXDrivePulseStreamAxis3 = 250 FLEXDrivePulseStreamAxis4 = 251 iFLEXPrimaryFeedbackAxis1 = 252 iFLEXPrimaryFeedbackAxis2 = 253 iFLEXPrimaryFeedbackAxis3 = 254 iFLEXPrimaryFeedbackAxis4 = 255 iFLEXAuxiliaryFeedbackAxis1 = 256 iFLEXAuxiliaryFeedbackAxis2 = 257 iFLEXAuxiliaryFeedbackAxis3 = 258 iFLEXAuxiliaryFeedbackAxis4 = 259 iFLEXSyncPortA = 260 iFLEXSyncPortB = 261 iFLEXDrivePulseStreamAxis1 = 262 iFLEXDrivePulseStreamAxis2 = 263 iFLEXDrivePulseStreamAxis3 = 264 iFLEXDrivePulseStreamAxis4 = 265 XA4PrimaryFeedbackAxis1 = 266 XA4PrimaryFeedbackAxis2 = 267 XA4DrivePulseStreamAxis1 = 268 XA4DrivePulseStreamAxis2 = 269 iXA4PrimaryFeedbackAxis1 = 270 iXA4PrimaryFeedbackAxis2 = 271 iXA4DrivePulseStreamAxis1 = 272 iXA4DrivePulseStreamAxis2 = 273 XA4PrimaryFeedbackAxis3 = 274 XA4PrimaryFeedbackAxis4 = 275 XA4DrivePulseStreamAxis3 = 276 XA4DrivePulseStreamAxis4 = 277 iXA4PrimaryFeedbackAxis3 = 278 iXA4PrimaryFeedbackAxis4 = 279 iXA4DrivePulseStreamAxis3 = 280 iXA4DrivePulseStreamAxis4 = 281 XA4SyncPortA = 282 XA4SyncPortB = 283 iXA4SyncPortA = 284 iXA4SyncPortB = 285 XA4AuxiliaryFeedback = 286 iXA4AuxiliaryFeedback = 287 PsoTransformationChannel0Output = 288 PsoTransformationChannel1Output = 289 PsoTransformationChannel2Output = 290 PsoTransformationChannel3Output = 291 GL4PrimaryFeedbackAxis1Encoder1 = 292 GL4PrimaryFeedbackAxis2Encoder1 = 293 HXA4DrivePulseStreamAxis1 = 294 iHXA4DrivePulseStreamAxis1 = 295 end |
Selects the source of the specified window counter.
Arguments
$axis The axis on which to select the window counter input source.
$windowNumber The window number for which to select the counter input source.
$input The window counter input source.
$reverseDirection Configures the window counter to count in the opposite direction of its input source.
| enum PsoWindowInput
GL4PrimaryFeedbackAxis1Encoder0 = 100 GL4PrimaryFeedbackAxis2Encoder0 = 101 GL4IfovFeedbackAxis1 = 102 GL4IfovFeedbackAxis2 = 103 GL4AuxiliaryFeedbackAxis1 = 104 GL4AuxiliaryFeedbackAxis2 = 105 GL4SyncPortA = 106 GL4SyncPortB = 107 GL4DrivePulseStreamAxis1 = 108 GL4DrivePulseStreamAxis2 = 109 XL4sPrimaryFeedback = 110 XL4sAuxiliaryFeedback = 111 XL4sSyncPortA = 112 XL4sSyncPortB = 113 XL4sDrivePulseStream = 114 XR3PrimaryFeedbackAxis1 = 115 XR3PrimaryFeedbackAxis2 = 116 XR3PrimaryFeedbackAxis3 = 117 XR3PrimaryFeedbackAxis4 = 118 XR3PrimaryFeedbackAxis5 = 119 XR3PrimaryFeedbackAxis6 = 120 XR3AuxiliaryFeedbackAxis1 = 121 XR3AuxiliaryFeedbackAxis2 = 122 XR3AuxiliaryFeedbackAxis3 = 123 XR3AuxiliaryFeedbackAxis4 = 124 XR3AuxiliaryFeedbackAxis5 = 125 XR3AuxiliaryFeedbackAxis6 = 126 XR3SyncPortA = 127 XR3SyncPortB = 128 XR3DrivePulseStream = 129 XC4PrimaryFeedback = 130 XC4AuxiliaryFeedback = 131 XC4SyncPortA = 132 XC4SyncPortB = 133 XC4DrivePulseStream = 134 XC4ePrimaryFeedback = 135 XC4eAuxiliaryFeedback = 136 XC4eSyncPortA = 137 XC4eSyncPortB = 138 XC4eDrivePulseStream = 139 XC6ePrimaryFeedback = 140 XC6eAuxiliaryFeedback = 141 XC6eSyncPortA = 142 XC6eSyncPortB = 143 XC6eDrivePulseStream = 144 XL5ePrimaryFeedback = 145 XL5eAuxiliaryFeedback = 146 XL5eSyncPortA = 147 XL5eSyncPortB = 148 XL5eDrivePulseStream = 149 XC2PrimaryFeedback = 150 XC2AuxiliaryFeedback = 151 XC2DrivePulseStream = 152 XC2ePrimaryFeedback = 153 XC2eAuxiliaryFeedback = 154 XC2eDrivePulseStream = 155 XL2ePrimaryFeedback = 156 XL2eAuxiliaryFeedback = 157 XL2eSyncPortA = 158 XL2eSyncPortB = 159 XL2eDrivePulseStream = 160 XI4PrimaryFeedbackAxis1 = 161 XI4PrimaryFeedbackAxis2 = 162 XI4PrimaryFeedbackAxis3 = 163 XI4PrimaryFeedbackAxis4 = 164 XI4AuxiliaryFeedbackAxis1 = 165 XI4AuxiliaryFeedbackAxis2 = 166 XI4AuxiliaryFeedbackAxis3 = 167 XI4AuxiliaryFeedbackAxis4 = 168 XI4SyncPortA = 169 XI4SyncPortB = 170 XI4DrivePulseStreamAxis1 = 171 XI4DrivePulseStreamAxis2 = 172 XI4DrivePulseStreamAxis3 = 173 XI4DrivePulseStreamAxis4 = 174 iXC4PrimaryFeedback = 175 iXC4AuxiliaryFeedback = 176 iXC4SyncPortA = 177 iXC4SyncPortB = 178 iXC4DrivePulseStream = 179 iXC4ePrimaryFeedback = 180 iXC4eAuxiliaryFeedback = 181 iXC4eSyncPortA = 182 iXC4eSyncPortB = 183 iXC4eDrivePulseStream = 184 iXC6ePrimaryFeedback = 185 iXC6eAuxiliaryFeedback = 186 iXC6eSyncPortA = 187 iXC6eSyncPortB = 188 iXC6eDrivePulseStream = 189 iXL5ePrimaryFeedback = 190 iXL5eAuxiliaryFeedback = 191 iXL5eSyncPortA = 192 iXL5eSyncPortB = 193 iXL5eDrivePulseStream = 194 iXR3PrimaryFeedbackAxis1 = 195 iXR3PrimaryFeedbackAxis2 = 196 iXR3PrimaryFeedbackAxis3 = 197 iXR3PrimaryFeedbackAxis4 = 198 iXR3PrimaryFeedbackAxis5 = 199 iXR3PrimaryFeedbackAxis6 = 200 iXR3AuxiliaryFeedbackAxis1 = 201 iXR3AuxiliaryFeedbackAxis2 = 202 iXR3AuxiliaryFeedbackAxis3 = 203 iXR3AuxiliaryFeedbackAxis4 = 204 iXR3AuxiliaryFeedbackAxis5 = 205 iXR3AuxiliaryFeedbackAxis6 = 206 iXR3SyncPortA = 207 iXR3SyncPortB = 208 iXR3DrivePulseStream = 209 GI4DrivePulseStreamAxis1 = 210 GI4DrivePulseStreamAxis2 = 211 GI4DrivePulseStreamAxis3 = 212 iXC2PrimaryFeedback = 213 iXC2AuxiliaryFeedback = 214 iXC2DrivePulseStream = 215 iXC2ePrimaryFeedback = 216 iXC2eAuxiliaryFeedback = 217 iXC2eDrivePulseStream = 218 iXL2ePrimaryFeedback = 219 iXL2eAuxiliaryFeedback = 220 iXL2eSyncPortA = 221 iXL2eSyncPortB = 222 iXL2eDrivePulseStream = 223 iXI4PrimaryFeedbackAxis1 = 224 iXI4PrimaryFeedbackAxis2 = 225 iXI4PrimaryFeedbackAxis3 = 226 iXI4PrimaryFeedbackAxis4 = 227 iXI4AuxiliaryFeedbackAxis1 = 228 iXI4AuxiliaryFeedbackAxis2 = 229 iXI4AuxiliaryFeedbackAxis3 = 230 iXI4AuxiliaryFeedbackAxis4 = 231 iXI4SyncPortA = 232 iXI4SyncPortB = 233 iXI4DrivePulseStreamAxis1 = 234 iXI4DrivePulseStreamAxis2 = 235 iXI4DrivePulseStreamAxis3 = 236 iXI4DrivePulseStreamAxis4 = 237 FLEXPrimaryFeedbackAxis1 = 238 FLEXPrimaryFeedbackAxis2 = 239 FLEXPrimaryFeedbackAxis3 = 240 FLEXPrimaryFeedbackAxis4 = 241 FLEXAuxiliaryFeedbackAxis1 = 242 FLEXAuxiliaryFeedbackAxis2 = 243 FLEXAuxiliaryFeedbackAxis3 = 244 FLEXAuxiliaryFeedbackAxis4 = 245 FLEXSyncPortA = 246 FLEXSyncPortB = 247 FLEXDrivePulseStreamAxis1 = 248 FLEXDrivePulseStreamAxis2 = 249 FLEXDrivePulseStreamAxis3 = 250 FLEXDrivePulseStreamAxis4 = 251 iFLEXPrimaryFeedbackAxis1 = 252 iFLEXPrimaryFeedbackAxis2 = 253 iFLEXPrimaryFeedbackAxis3 = 254 iFLEXPrimaryFeedbackAxis4 = 255 iFLEXAuxiliaryFeedbackAxis1 = 256 iFLEXAuxiliaryFeedbackAxis2 = 257 iFLEXAuxiliaryFeedbackAxis3 = 258 iFLEXAuxiliaryFeedbackAxis4 = 259 iFLEXSyncPortA = 260 iFLEXSyncPortB = 261 iFLEXDrivePulseStreamAxis1 = 262 iFLEXDrivePulseStreamAxis2 = 263 iFLEXDrivePulseStreamAxis3 = 264 iFLEXDrivePulseStreamAxis4 = 265 XA4PrimaryFeedbackAxis1 = 266 XA4PrimaryFeedbackAxis2 = 267 XA4DrivePulseStreamAxis1 = 268 XA4DrivePulseStreamAxis2 = 269 iXA4PrimaryFeedbackAxis1 = 270 iXA4PrimaryFeedbackAxis2 = 271 iXA4DrivePulseStreamAxis1 = 272 iXA4DrivePulseStreamAxis2 = 273 XA4PrimaryFeedbackAxis3 = 274 XA4PrimaryFeedbackAxis4 = 275 XA4DrivePulseStreamAxis3 = 276 XA4DrivePulseStreamAxis4 = 277 iXA4PrimaryFeedbackAxis3 = 278 iXA4PrimaryFeedbackAxis4 = 279 iXA4DrivePulseStreamAxis3 = 280 iXA4DrivePulseStreamAxis4 = 281 XA4SyncPortA = 282 XA4SyncPortB = 283 iXA4SyncPortA = 284 iXA4SyncPortB = 285 XA4AuxiliaryFeedback = 286 iXA4AuxiliaryFeedback = 287 PsoTransformationChannel0Output = 288 PsoTransformationChannel1Output = 289 PsoTransformationChannel2Output = 290 PsoTransformationChannel3Output = 291 GL4PrimaryFeedbackAxis1Encoder1 = 292 GL4PrimaryFeedbackAxis2Encoder1 = 293 HXA4DrivePulseStreamAxis1 = 294 iHXA4DrivePulseStreamAxis1 = 295 end |



