Version 1.47 - 24/06/2013 - Service release

563: System configuration parameters to globally enable/disable vision assisted feeder pick correction

"Longitudinal pick adjustment from vision analysis" and "Latitudinal pick adjustment from vision analysis" have been added to the system preferences dialog. These enable the automatic adjustment of a feeder's pick position based on vision analysis results of parts picked from that feeder. The latter parameter affects both older non-fixed index type feeders and newer fixed index type feeders equally. The former parameter is only relevant for the fixed index type feeders. The older style feeders will continue to adjust their feeder advance regardless of whether this parameter is set.

564: Change default value for maximum incremental changes to a feeder's pick position as determined by the vision system

Reduced default maximum incremental longitudinal pick position adjustment from 0.15mm to 0.1mm.
Reduced default maximum incremental latitudinal pick position adjustment from 0.15mm to 0.1mm.
Max feeder incremental advance remains unchanged at 0.15mm.

566: Enable dynamic pick correction config param behaviour modified

The more specific cfg param feeders/enable_long_pick_correction has superceded the previous general param feeders/enable_dynamic_pick_correction.

567: Flip analysed images from the upward facing cameras for ease of interpretation.

Cmpnt analysis images from upward facing cameras are now flipped about the y axis so that they are displayed from the point of view of looking down through the part from above. This makes their orientation consistent with how the user actually observes the part being placed and aids debugging of rotations, etc.

568: Incorrect part placement rotation for parts defined within a feeder whose orientation is not set to 0°

This is a bug that was introduced shortly after the fixed index type feeders became available. Feeder pick adjustment information fed back from the vision system was causing a parts rotation within a feeder to be temporarily reset to 0°. This affected any tape feeders whose part was defined within the feeder at anything other than 0°. The workaround was to create a new package definition if necessary so that a part's orientation within a feeder could always be set to 0°. This has now been fixed.

569: The first time a feeder is picked from during a session it picks from an empty pocket.

The feeder manager now correctly assumes that a feeder is left in an "un-presented" state and therefore requires an advance before being picked from.

Version 1.46 - 30/03/2013 - Service release

91: Check that resolved board coordinates lie within placement area

Before a run is executed the calculated placement coordinates are verfied to lie within the accessible placement area.

158: More verbose info as to why vision analysis failed

Added an extra vision debug frame that displays the results of each step of a component orientation analysis to assist in troubleshooting a package definition.

212: Rotate head to zero degrees before performing toolchange

Before performing a toolchange engage operation the head is now rotated to a fixed position for ensuring smoother, more consistent tool changes.

213: Feeder positions setup dialog

Diagnostics admin pane added to assist in setting up feeder-base port positions en masse, rather than having to define them individually.

215: context sensitive action to delete static feeder from feeder display list

Non-intelligent feeders, i.e. matrix feeders may now be deleted from the main feeder display list.

210: Add minimum retract param for machines with non-retracting toolblock

Minimum retract param has been added that overrides any optimal retract clearances to prevent potential head crashes for machines with non-retracting toolchangers.

221: Automatic image analysis upsampling for increased accuracy

Analysis images are now automatically digitally upsampled to improve the resolution of any analysis being performed. The package's geometry and camera's field of view are taken into account when determining by what factor the image can be upsampled.

235: Allow board height to be entered manually

Board height can now be adjusted manually.

238: Remove unnecessary columns from placement table

Package column has been removed from the placement table. This will eliminate package / feeder mismatch errors since the package is already defined within a feeder. The feeder column now also contains the serial number of the feeder and it's location on the machine.

176: Improve pick retry strategy

Pick retry strategy has been improved so that advance correction is applied following a configurable number of successive mis-picks. By default an additional 33% is applied although this can be adjusted in the user configuration.

263: Allow editing of board copy placement entry within a panel

A copy entry of a step and repeated placement within a panel may now be edited. It's placement position and feeder may both be modified from that of the master entry that it was created from.

265: Easier cam specific placement offsets

Camera specific placement offsets can now be specified via the user preferences dialog.

315: Peripheral interface checksums & retry logic

Previously checksumming and retry logic was being handled by the CAN gateway at a CAN packet level. The actual peripheral messages that are comprised of individual CAN packets are now checksummed and retried as appropriate.

317: Action to create duplicate placement entry


318: Action to create duplicate fiducial entry


319: User preference for the number of consecutive pick errors before adjustment


320: User preference for preferring warp matrix rather than trigonometry during board alignment


321: User preference to order placements by tool rather than component height


208: Improve axis tuning dialog

Axis tuning dialog extended to support automatic direction reversal, acceleration, velocity and position parameters.

41: Prevent unneccessary placement aligns

A re-align is now no-longer required if any of the following occurs:

Change of package or feeder for a placement.
Feeder error encountered - Now the feeder error may be cleared and the run resumed.

82: Improve display of placement run status information

Placement run status info is now more meaningful.

245: Peripheral interface debug reporting

Added debug pane that details summary information for each channel of the peripheral interface.

246: Nudge placement positions

Added ability to be able to nudge placement positions during a preview using hotkeys.

211: Limit feeder advance correction to be a fraction of the standard index

see case 176.

217: Mask out background when performing cmpnt orientation analysis

During a component orientation analysis, an area of the the frame's background beyond where the component may reasonably be expected to be is now masked out. This behaviour can be overriden by a user config param.

433: Move Board

A deviation can be specified in the x and y axis when a board is moved that will automatically adjust all fiducial mark positions. This saves considerable time when re-teaching a panelised board with a large number of fiducials.

434: Fiducial analysis mask

A mask is now used when analysing fiducials to reduce the possibility of detecting false positives from nearby similarly sized features such as vias, etc.

435: Hotkey translation of images for easier flying vision camera calibration

A Frame can be translated by using the q,a,w,e hotkeys and the actual translation determined by looking at the static frame information. This is to assist with calibrating flying vision frame translations.

445: Jog / Point and click feeder offsets.

Feeder pick position can now be adjusted by manually entering the pick offset within the feeder manager as well as being able to click on the desired pick position in the preview pane and selecting "set from here".

451: Placement debug information

An attempted placement entry, whether completed or failed, can now be double-clicked (on the details column) to reveal a detailed listing of each action during the placement sequence.

378: Align should only analyse unresolved fiducials

When a board is reset all fiducials are mrked as unresolved. When an align is performed, the status of each fiducial is marked as resolved, if successful. Subsequent aligns only analyse unresolved fiducials thereby preventing unnecessary repeat analysis.

454: Change live preview position by clicking on live frame

When a live frame is being displayed from the fiducial camera the image may now be clicked to re-centre the view on that position.

455: Easier adjustment of reject bin location

The location of the reject bin can now be easily adjusted  via the user preferences dialog, either by direct coordinate entry or by selecting "set here".

467: Rotational deadband elimination

Added Deadband elimination user preference. If enabled, when a part is presented for vision analysis during a placement run, if the presented rotation lies within a configurable deviation from the following values: 0, 90, 180, 270 a configurable offset is added.

468: Place a single part without having to enable / disable run list

A right-click context sensitive action within the run list allows a single part to be placed. Useful for verifying placement accuracy of most demanding part of run and for checking calibration, etc.

89: Ability to be able to clone a feeder cfg from another feeder of the same type

To assist with ease of setting up feeders, a feeder's entire config can now be cloned to another feeder. i.e. pick height, aliases, etc.

33: improve placement file load times

Improved the parsing and interpretation of large placement files to speed up their load times.

98: Modify teach behaviour to make it not so easy to teach a position and loose the previous placement coordinates

Teach behaviour has been overhauled to use teach flags.

327: Remember window positions

The position of the main application window and all child non-modal windows are now persisted between application sessions.

328: Button to go backwards during preview lists

The "b" key allows the user to cycle backwards during preview lists for placements, fiducials & matrix locations.

330: Add hotkey for marking a fiducial

A fiducial can now be marked whilst interacting with the fiducial preview list by using the shortcut "shift+M".

331: Place individual component

An individual placement can now be executed without having to adjust enabled/disabled placement entries by simply right-clicking a placement entry and selecting "place this part now".

332: Make placement overlay sticky

The "o" key which toggles the display of the placement overlay is now sticky to assist in the pre and post placement viewing of placement locations on a PCB.

333: Global adjustment of camera brightness levels

An camera specific brightness adjustment can now be specified via the gain parameter in the user preferences dialog. This adjustment increases or decreases the pixel value of every frame received from that camera. The intention is to allow normalisation of brightnesses for a given camera between different user's machines so that a manufacturer issued component definition can be used as is, without having to adjust lighting levels for a given machine.

334: Head Concentricity calibration

A placement head can now be calibrated to take into account it's runout to enable more consistent picking of smaller components.

325: Dynamic pick position adjustment for intelligent feeders

Variable and fixed index intelligent feeders now support dynamic longitudinal and latitudinal pick adjustment based on a previous pick's vision analysis results.

44: Persist vision analysis results information

A file is now created for each vision analysis operation that contains debug info pertaining to the analysis to be used for subsequent debugging.

46: Entries within placement widget that are inactive should be greyed out.

This is now the case.

52: Allow user to override automatic tool selection for package

A user may now override the tool automatically selected by the system for a given package.

209: Config param to reduce speed of vertical movements during toolchange

Toolchange engage and retract movements execute slower for smoother toolchanges.

200: Improve component orientation discriminator

During a component orientation analysis the discriminator now performs a more robust check to trap for non-square bounded components incorrectly being determined to be 90 degrees out from their actual analysed position.

219: Fix incorrect jog speed when in diagnostics mode

Jog speed is now correctly set when the diagnostics pane is open.

229: Utilise automatic board scaling to improve alignment accuracy

The distance between actual fiducials is compared to the theoretical distance between fiducials to determine whether a scaling factor should be applied to the board during alignment. This is designed to cope with boards that have not been manufactured by the pcb supplier as accurately as they should have been. To a lesser extent it also improves placement accuracy for badly bowed boards, such as those that have been reflowed before placing the reverse side.

249: Step and repeated board failing to align unless 1 or more entries from master board selected

Previously alignment failed where there were no entries selected from the master board. This has now been fixed.

257: Disable position error checking during motor alignment

During alignment an axis' position can jump by a large enough encoder count to trip the position error detection logic. This has now been disabled during motor alignment. In conjunction with this, all axes' pid flags should be defaulted to 0 within the machine cfg file.

76: Cmpnt vision analysis correction sometimes out by 90 degrees

See case 200

266: Improve placement teach functionality

Implemented teach flags, nudge hotkeys & rotation is now picked up as well as XY coordinates.

267: CAN gateway initialisation retries

Given that the initial connect via the OEM's API can sometimes fail we now make several attempts to connect before giving up.

269: Button to clear feeder errors

Feeder errors can now be cleared without having to remove and re-insert the feeder. A Context sensitive action to clear a specific feeder of it's errors is available from the placement table view and the feeder summary page. In addition, the feeder summary page has an action to clear all feeder errors.

270: Hang due to long feeder advances blocking worker threads

Long feeder advances causing the main control thread to sleep whilst the advance completed. This was causing the blocking of worker threads as their task pools became exhausted. The main control thread no longer sleeps but instead now operates asynchronously and checks periodically for a change in feeder advance status.

272: Fix potential hang during component orientation analysis

The component analysis feature discriminator now times out if it fails to determine a solution within a sensible timeframe.

273: Feeder pick offset values of -1 have no effect

This is no longer the case.

262: Implement lateral automatic pick adjustment

Automatic pick adjustment now applies a lateral correction as well as a longitudinal (feeder advance) correction to improve pick performance.

276: Component nudge (placement adjustment) via hotkeys

During a preview operation a placement can now be nudged left, right, up, down, CW rotation,CCW rotation. This essentially marks the entry for teaching and back annotates the board coordinates during a subsequent align.

277: Fiducial distance check to catch out wrongly identified fiducials

A user may now specify a tolerance value in mm within which identified fiducials must match, otherwise the alignment fails. A value of 0mm may be entered to disable this check.

283: Store board height within placement file

Board height is now stored within a placement file and the user is no longer prompted to set it during each session.

286: Allow entries to be aligned regardless of whether feeder defined


312: Find nearest active placement should highlight the appropriate line and scroll into view if required


324: Clone feeder allowing incompatible target

8mm feeder can now only be cloned to another 8mm feeder, same for other intelligent feeder variants.

367: Check incorrect concentricity / feeder pick adjustment on rear side feeders


75: Make newly created feeders available by default

Newly created feeders are now available by default rather than the user having to explicitly enable them. Feeders that are copied from another feeder definition inherit their enabled state.

34: Step & Repeat hanging for large placement files

Improved step and repeat creation performance to prevent application hanging.

260: "Save as" is defaulting to bin dir rather than placement dir

"Save as" is now correctly defaulting to the user placement root directory rather than the application bin directory.

261: Flying vision software support

Added support for fiducial camera based flying vision. Package manager has been extended to enable the configuring of all 4 cameras, both physical and virtual. Enhancement is backwards compatible with existing "fixed camera only" based systems.

329: Unresolving of a fiducial sometimes results in the incorrect fiducial being re-analysed

Where a fiducial analysis fails and is re-attempted, the correct fiducial is now being re-analysed.

322: User preference (global) for the maximum amount of upscaling that the vision system may apply during analysis

Allowed values are 0, 2, 4, 8. If set to 0 upscaling is disabled.

298: Add "identify feeder" context sensitive action to placement entry


300: Display feeder firmware version in feeder listing


316: Allow alignment of fiducials without any active placement entries


274: CAN subsystem architectural change to improve performance

The CAN subsystem (peripheral interface layer) has been modified to provide improved feeder communication all round. Feeders are now more responsive in terms of connects and disconnects. The system is also now more tolerant of a single non-responsive feeder from bringing the bus down.

463: Improve save / save as behaviour

The window title is now correctly updating when "save as" changes the document name.

538: Cancel feeder height probing causes circular overlay to persist

Previously, if a feeder height probing operation was cancelled then the package overlay would continue to display the probing specific one regardless of any future package interaction. This has now been fixed.

539: Improved analysis bounds group regions logic

The logic that was designed to group bounds from the same feature was using a percentage of the package dimensions as a distance tolerance for determining whether those bounds were indeed to be grouped. This had the undesirable behaviour whereby large packages with large features could have bounds for separate entities grouped together under certain circumstances. This has now been fixed.

514: Run progress file

Placement state for a run is written to a separate progress file so that the state can be updated quickly and a software crash during a run does not loose placement state.

523: Rotate Board 90°

A board / panel can now be easily rotated 90° from within the "translate" menu.

524: Apply slow speed jog if shift key is pressed regardless of jog speed selector

If the shift key is held down whilst commanding a jog move then that move will execute at the slow jog speed regardless of the current position of the jog speed selector.

525: Auto preview component after having discarded it

When a component is discarded back into it's feeder automatically preview the pick position again. This saves the user from having to manually click the preview button which is normally the next thing that he does.

526: (Re)preview feeder after changing and saving feeder parameters

After a feeder's parameters have been changed and saved the pick position is automatically previewed.

459: Attempting to do a vision check on a feeder that has errored will cause it to wait forever


460: Duplicate placement entry not always enforcing unique reference


461: Duplicating a placement entry should not copy the teach flag


456: Unset pick height or incomplete matrix tray entry causes freeze prior to placement


431: Check for physical obstruction during probing

Position error is now also monitored to determine whether  the head has encountered an obstacle even though the vacuum detection has not been triggered.

432: Machine should not come to an abrupt halt when there is a single feeder error


452: Can only view fiducial vision analysis for master copy

The fiducial vision analysis for any of the fiducials can now be viewed.

453: Easier feeder advance interaction

Advance, nudge, etc can now be performed on a feeder without having to enter the feeder's edit mode.

446: feeder manager listing is not updating combobox when a new feeder is inserted


447: Revise fiducial distance check

The distance check now only compares fiducials from the same board.

448: Switch all lighting off on shutdown


449: Rotate head to zero degrees on park


442: Placement file needs to subscribe to new package notifications


326: Hotkey for parking machine

Machine can now be parked by pressing hotkey "p".

112: Vision enhancement to discriminate outlier contours for chip packages

See case 217.

93: Improve axes startup sequence

Instead of performing alignment for each axis then performing homing in turn, instead the axes are now aligned and then homed in the following order: z, r, x, y.

This will ensure that the head is safely clear before making any xy jolting moves that occur during alignment.

Version 1.44 - 21/11/2011 - Service release

32: Adaptive component nudge values

Tape feeder nudge increment is now proportional to the configured advance for a given package, and not a hard-coded arbitrary amount.

Version 1.43 - 17/08/2011 - Service release

205: Retract heads during manual jogging

Unless the jog controls are set to slow any XY move automatically triggers a retract move first. This is to prevent the user from accidentally crashing the machine whilst jogging.

206: Make missed pick retry override user configurable

The user can now configure this via the user preferences dialog.

Version 1.42 - 18/06/2011 - Service release

199: At the start of an axis move set the desired position to the current encoder position

At the start of an axis move the desired position is now set to the current encoder position. This allows the axes to have been moved manually or the head to drop under gravity without triggering an excessive position error at the start of the next move.

Version 1.41 - 10/06/2011 - Service release

86: Fast feeder port swaps going undetected

Occassionally fast feeder swaps (i.e. a removal and re-insertion prior to the next poll cycle) were being missed and in some cases causing the port to go deaf to further insertions for that session. This is now no longer the case.

Version 1.39 - 26/05/2011 - Service release

198: Allow step and repeats with a minimum of 2 fiducials

Previously step and repeats were only permitted where each instance of the repeated board had it's own fiducials. This has now been relaxed so that step and repeats are possible with a minimum of 2 fiducials.
Note that step and repeat functionality is due to be overhauled before the next major release. Until such time users are advised to step and repeat before the CAD data stage rather than within Phoenix.

Version 1.38 - 11/05/2011 - Service release

183: Support for v2 tape feeders with increased gear ratios

Phoenix is now aware of the increased gear ratios for v2 tape feeders and no longer requires a feeder advance override to be set as a user preference.

66: Allow cancellation of height probing

Height probing may now be cancelled halfway through the operation.

154: Simplify vision parameters display for a package

Package vision parameters are now more intuitively laid out and include descriptive tooltips as to their usage.

155: Ability to detect dark features against a light background

Package specific parameter added to enable the detection of light on dark features by inverting the analysis image.

156: Allow user to override the automatic tool selection for a package

The user may now specify a tool for a given package that overrides that which is automatically selected by the system based on the package's dimensions.

157: Improve display of package placement parameters

Package placement parameters are now more intuitively laid out and include descriptive tooltips as to their usage.

184: Reduce consecutive picks from the same feeder

Placement order optimisation has been modified to reduce the number of consective picks from a given feeder. Where a component of a similar height and using the same tool can be placed instead it will be.

Version 1.35 - 16/03/2011 - Service release

102: Occasional hang on shutdown

Fixed occasional hang on shutdown that was preventing a task thread from performing cleanup operations, in particular the CAN thread which was unable to suspend the gateway's callback thread.

107: A placement file failing to load creates an empty MDI pane

Prevent the failed loading of a placement file from creating an empty MDI pane.

108: Pause and Abort Buttons (GUI not external buttons) are disabled during placement run

Fixed bug introduced in earlier version that was disabling the pause and abort GUI buttons during a placement run.

Version 1.34 - 08/03/2011 - Service release

78: Option to always rotate r axis in same direction when placing to eliminate backlash

By default, component rotations will always be executed clockwise to eliminate r axis backlash. This can be overriden and the previous behaviour of rotating either CW or CCW depending on the least distance to rotate, by setting the user preferences param "placement/anti_backlash_r_axis" to false.

103: Feeder ports should be indicated as starting @ 1 and not 16

The display port for a feeder is now 1-based and not 16-based (which is the case when the reserved peripheral ports are included).


Version 1.33 - 01/03/2011 - Service release

97: Allow negative R offsets within placement options and general preferences

Fixed bug introduced in earlier release that was preventing the user from specifying a negative rotation offset within a placement's global offsets and the user preferences system global offset.


Version 1.32 - 24/02/2011 - Service release

11: Test pickup from vib feeder

Fixed pick offsets for vibratory feeder.

95: Add action within placement file to deselect all placed components

Added context sensitive action within placement file to de-select all placed components.

96: Add toolchange end of stroke sensors

Added toolchange end of stroke sensors to ensure position of toolblock rather than verifying system pressure and raise/lower dwell times.

92: Machine status indicator can sometimes be misleading

Sometimes after a low-pressure or estop trip event the machine status was being incorrectly reported. This is now fixed.

Version 1.31 - 15/02/2011 - Service release

14: Mark feeder unavailable on persistent error

If a feeder becomes depleted or encounters a configurable number of consecutive miss-picks during a run it is now marked as unavailable for the rest of the run. Once the run has completed the user may address the error condition and then set the feeder "available" to reset the error condition.

15: User Preferences Dialog

Improved administration of user preferences for general configuration params, placement settings, vision defaults, feeder specific default behaviour, etc.

12: Check Remote Access Operation (Teamviewer)

Tested remote administration of Vivo SMT placement machine using "Teamviewer" server and client applications. All machines are to be shipped with Teamviewer server installed.

79: Archive vision failures for subsequent analysis

Component orientation vision debug frames that result in an error condition are now archived separately to the main vision analysis results. This is to allow them to be more easily retrieved for subsequent interpretation.

77: Locate nearest placement entry by jogging to rough location

A specific placement can now be located by jogging the machine to it's approximate position. So that now for example, when a bad placement is observed after a run has completed, the machine may be jogged to that position and a right-click action will snap the machine to the nearest actual placement and the details for that placement are highlighted within the placement listing.

81: Placement run may be started by external start button prior to board height being set

Prior to this fix it was possible to start a run via the external "start" button before the board height had been entered. This is not now possible and instead the board height must be specified before a run can be executed, either via the graphical user interface or via the frame mounted convenience buttons.

70: % in part name causing truncation

Component part names and/or aliases may now contain one or more '%' characters without the part name being truncated when comitted to the feeder. Note that this only affected intelligent feeders.

73: Ensure that tool block is lowered at start of toolchange operation

There was a slight possibility previously of the toolblock not being retracted prior to the start of a toolchange operation. This would only be the case where an administrator had manually raised the toolblock using the diagnostics interface. The toolblock is no longer assumed to be in it's lowered state at the start of a toolchange operation.

74: Retract prior to XY movement on park

Prior to performing an XY movement to park the machine all heads are now fully retracted first.

17: Prevent pick from matrix tray when empty

When a matrix tray is empty the run manager will now no longer attempt to pick from an empty location, instead the placement will be skipped.

18: Machine EStop Interruption Improved Handling

The system now recovers more gracefully from an EStop condition.

20: Cleanup / Review standard package library

Re-tested the standard package library and removed any legacy entries that were incomplete.

21: Fix package overlay correct orientation for enhanced correction (display only)

Where a package's placement is corrected using the enhanced option the package overlay is now being correctly drawn.

26: Shutdown stalling on bad config file

Prior to this fix, if the application did not initialise successfully, for example, but not limited to; an invalid config file, it was possible that the application would be prevented from shutting down cleanly. This is not now the case.

13: End of run summary information is not being displayed correctly

Brief run summary information is now correctly displayed at the end of a placement run regardless of whether the placement run completed without errors or not.

85: Reduce Blowoff dwell for height probing to prevent movement of nozzle

Excessive "blowoff" during height probing was causing the active placement nozzle to occasionally be blown off. The duration of the "blowoff" has now been reduced to fix this. The blowoff only needs to be activated for a short time to help dissipate the vacuum present and the head should not retract with a component still attached.

Version 1.3 - 01/02/2011 - Major release

Major production release.