IPD Technical ConferenceFebruary 19th 2008
Automotive Electronics Shock Absorber Inspection
Ohio Office
Company History
This Ohio based customer molds various silicone rubber parts for the automotive and transportation industry.
Their initial vision systems were based upon the original NetSight NS-1000 and the JAI CV-A11 camera.
They have since migrated to the VA-40 with the higher resolution JAI CV-A1 and CV-A2 cameras.
How many remember this?
The Application
Inspect an aluminum shock absorber plate that protects the ABS electronics module used in a vehicle.
The plates are shipped to our customer and they mold the silicone rubber pyramids to the plate.
Six plates are molded at one time.
The Application
Verify mounting tab is in the top left corner.
Check silicone pyramids for correct size and shape.
Verify vent hole is present.
Separate output indicating which mold cavity made the faulty part. (Variable Assignment Equations)
iNspect Tools Used
Match Tool detects tab presence
Circle Tool calculating Circularity and minimum Radius
Count Tool finds the vent hole.
Part Presentation
A robotic arm loads the mold with six aluminum plates.
After molding the robotic arm picks up the six parts and indexes them in front of the camera.
Vision Equipment VA40E-04 Running iNspect
JAI CV-A2 Megapixel Camera
Kowa 18-108 Macro Zoom lens
Custom blue LED dome light built around Nerlite LALL 22x288 light lines
This simple vision application did not require the use of VA40E-04, A2 camera, and zoom lens, but this configuration assures spare parts uniformity with their other vision systems.
The Installation
Screen Shots
Screen Shots
Screen Shots
Variable Assignment Equations
Post Image Process
plate_counter = plate_counter+ 1
if (plate_counter= 1) plate_1_status = Result.0
if (plate_counter= 2) plate_2_status = Result.0
if (plate_counter= 3) plate_3_status = Result.0
if (plate_counter= 4) plate_4_status = Result.0
if (plate_counter= 5) plate_5_status = Result.0
if (plate_counter= 6) plate_6_status = Result.0
if (plate_1_status= 1) FAIL = 0
if (plate_1_status!= 1) FAIL = 1
if (plate_2_status!= 1) Global.GPO[3] = pulse( 1,0,1000)
if (plate_3_status!= 1) Global.GPO[4] = pulse( 1,0,1000)
if (plate_4_status!= 1) Global.GPO[5] = pulse( 1,0,1000)
if (plate_5_status!= 1) Global.GPO[6] = pulse( 1,0,1000)
if (plate_6_status!= 1) Global.GPO[7] = pulse( 1,0,1000)
2.) Create Six Status Registers here
1.) Create Plate Counter here
3.) Assign Status Registers to separate outputs here
Variable Assignment Equations
Batch Reset
plate_counter = 0
Global.GPO[1] = 0
Global.GPO[3] = 0
Global.GPO[4] = 0
Global.GPO[5] = 0
Global.GPO[6] = 0
Global.GPO[7] = 0
plate_1_status = 1
plate_2_status = 1
plate_3_status = 1
plate_4_status = 1
plate_5_status = 1
plate_6_status = 1
FAIL = 0
PASS = 1
4.) Create User Function here to reset registers and outputs. (This User Function serves as a subroutine.)
Variable Assignment Equations
Solution Initialize
BatchReset( )
Post Image Process
if (plate_counter>= 6) BatchReset( )
5.) Add the User Function to prepare for the next batch.
Variable Assignment Equations
Solution Initialize
BatchReset( )
Post Image Process
if (plate_counter>= 6) BatchReset( )
plate_counter = plate_counter+ 1
if (plate_counter= 1) plate_1_status = Result.0
if (plate_counter= 2) plate_2_status = Result.0
if (plate_counter= 3) plate_3_status = Result.0
if (plate_counter= 4) plate_4_status = Result.0
if (plate_counter= 5) plate_5_status = Result.0
if (plate_counter= 6) plate_6_status = Result.0
if (plate_1_status= 1) FAIL = 0
if (plate_1_status!= 1) FAIL = 1
if (plate_2_status!= 1) Global.GPO[3] = pulse( 1,0,1000)
if (plate_3_status!= 1) Global.GPO[4] = pulse( 1,0,1000)
if (plate_4_status!= 1) Global.GPO[5] = pulse( 1,0,1000)
if (plate_5_status!= 1) Global.GPO[6] = pulse( 1,0,1000)
if (plate_6_status!= 1) Global.GPO[7] = pulse( 1,0,1000)
Putting it all together