1 Function Main 2 Minput=1 3 MPass=1 4 MFail=1 5 pInArr1 = pInArr 6 pFailArr1 = pFailArr 7 pPassArr1 = pPassArr 8 Mov pHome 9 Dly 10 10 For MTester=1 To 2 11 For Mindex=1 To 4 12 Minput=Pick(Minput) 13 Minput=Minput+1 14 placeTester(MTester,Mindex) 15 Next Mindex 16 Next MTester 17 Mov pHome 18 Dly 5 19 For MTester=1 To 2 20 For Mindex=1 To 4 21 pickTester(MTester,Mindex) 22 placePass(MPass) 23 MPass=MPass+1 24 Next Mindex 25 Next MTester 26 Mov pHome 27 Hlt 28 FEnd 29 'Grip Subroutine 30 Function M! Grip() 31 retryFlag =1 32 *Rty 33 M_Out(14)=0 34 Dly 0.03 35 M_Out(15)=1 36 Dly 0.25 37 M_Out(15)=0 38 Dly 0.03 39 M_Out(14)=1 40 Dly 0.1 41 M_Out(14)=0 42 Dly 0.03 43 M_Out(15)=1 44 Dly 0.25 45 If (M_In(12)) Then 46 If(retryFlag) Then 47 retryFlag = 0 48 GoTo *Rty 49 Else 50 Grip = 0 51 M_Out(11)=1 52 Dly 0.03 53 M_Out(10)=1 54 Exit Function 55 EndIf 56 Else 57 If (M_In(13)) Then 58 Grip = -1 59 M_Out(10)=1 60 Dly 0.03 61 M_Out(11)=0 62 Exit Function 63 Else 64 Grip = 1 65 M_Out(10)=0 66 Dly 0.03 67 M_Out(11)=1 68 Exit Function 69 EndIf 70 EndIf 71 FEnd 72 'Pick Subroutine 73 Function M! Pick(index) 74 Spd M_NSpd 75 'Currently based on manipulating a single point 76 M_Out(15)=0 77 Dly 0.03 78 M_Out(14)=1 79 Dly 0.1 80 M_Out(10)=0 81 Dly 0.03 82 M_Out(11)=0 83 Mov pInArr1,-246 84 Mvs pInArr1,-35 85 Spd 60 86 Mvs pInArr1,-25 87 Spd 30 88 Mvs pInArr1 89 isGripped = Grip() 90 If(isGripped) Then 91 Pick = index 92 EndIf 93 Spd 60 94 Mvs,-45 95 Spd M_NSpd 96 Mvs,-201 97 pInArr1.X = pInArr1.X+10 98 pInArr1.Y = pInArr1.Y+0.14 99 If(index = 25) Then 100 pInArr1.X = pInArr.X 101 pInArr1.Y = pInArr.Y-166'165.8 102 EndIf 103 If(isGripped = 0) Then 104 If(index >49) Then 105 Pick = -1 106 Exit Function 107 EndIf 108 Pick(index+1) 109 EndIf 110 Exit Function 111 FEnd 112 'Pass Place Subroutine 113 Function V placePass(index) 114 Spd M_NSpd 115 'Currently based on manipulating a single point programatically 116 Mov pPassArr1,-243 117 Mvs pPassArr1,-35 118 Spd 60 119 Mvs pPassArr1,-25 120 Spd 30 121 Mvs pPassArr1 122 M_Out(15)=0 123 Dly 0.03 124 M_Out(14)=1 125 Dly 1 126 M_Out(10)=0 127 Dly 0.03 128 M_Out(11)=0 129 Spd M_NSpd 130 Mvs,-243 131 pPassArr1.X = pPassArr1.X+10 132 pPassArr1.Y = pPassArr1.Y+0.1 133 If(index = 25) Then 134 pPassArr1.X = pPassArr.X 135 pPassArr1.Y = pPassArr.Y-166 136 EndIf 137 FEnd 138 'Fail Place Subroutine 139 Function V placeFail(index) 140 Spd M_NSpd 141 'Currently based on manipulating a single point programatically 142 Mov pFailArr1,-243 143 Mvs pFailArr1,-35 144 Spd 60 145 Mvs pFailArr1,-25 146 Spd 30 147 Mvs pFailArr1 148 M_Out(15)=0 149 Dly 0.03 150 M_Out(14)=1 151 Dly 1 152 M_Out(10)=0 153 Dly 0.03 154 M_Out(11)=0 155 Spd M_NSpd 156 Mvs,-243 157 pFailArr1.X = pFailArr1.X+10 158 pFailArr1.Y = pFailArr1.Y+0.12 159 If(index = 25) Then 160 pFailArr1.Y = pFailArr.Y-166 161 pFailArr1.X = pFailArr.X 162 EndIf 163 FEnd 164 'pick from tester subroutine 165 Function M! pickTester(testerNumber,index) 166 Spd M_NSpd 167 Select testerNumber 168 Case 3 169 If (index >2) Then 170 pTesterP = pTester3C 171 Else 172 pTesterP = pTester3A 173 EndIf 174 Break 175 Case 2 176 If (index >2) Then 177 pTesterP = pTester2C 178 Else 179 pTesterP = pTester2A 180 EndIf 181 Break 182 Default 183 If (index >2) Then 184 pTesterP = pTester1C 185 Else 186 pTesterP = pTester1A 187 EndIf 188 Break 189 End Select 190 If(index = 2 Or index = 4) Then 191 pTesterP.Y = pTesterP.Y-25 192 EndIf 193 M_Out(15)=0 194 Dly 0.03 195 M_Out(14)=1 196 Dly 0.1 197 M_Out(10)=0 198 Dly 0.03 199 M_Out(11)=0 200 Mov pTesterP,-200 201 Mvs pTesterP,-35 202 Spd 100 203 Mvs pTesterP,-25 204 Spd 30 205 Mvs pTesterP 206 pickTester = Grip() 207 Mvs,-35 208 Spd M_NSpd 209 Mvs,-165 210 FEnd 211 'place in tester subroutine 212 Function V placeTester(testerNumber, index) 213 Spd M_NSpd 214 Select testerNumber 215 Case 3 216 If (index >2) Then 217 pTesterP = pTester3C 218 Else 219 pTesterP = pTester3A 220 EndIf 221 Break 222 Case 2 223 If (index >2) Then 224 pTesterP = pTester2C 225 Else 226 pTesterP = pTester2A 227 EndIf 228 Break 229 Default 230 If (index >2) Then 231 pTesterP = pTester1C 232 Else 233 pTesterP = pTester1A 234 EndIf 235 Break 236 End Select 237 If(index = 2 Or index = 4) Then 238 pTesterP.Y = pTesterP.Y-25 239 EndIf 240 Mov pTesterP,-200 241 Mvs pTesterP,-35 242 Spd 100 243 Mvs pTesterP,-25 244 Spd 30 245 Mvs pTesterP 246 M_Out(15)=0 247 Dly 0.03 248 M_Out(14)=1 249 Dly 0.5 250 M_Out(10)=0 251 Dly 0.03 252 M_Out(11)=0 253 Spd 100 254 Mvs,-35 255 Spd M_NSpd 256 Mvs,-165 257 FEnd pFailArr=(+179.00,+97.00,+167.00,-179.31,-0.71,+133.68)(7,0) pFailArr1=(+179.00,+97.00,+167.00,-179.31,-0.71,+133.68)(7,0) pFailArr25=(+419.00,+100.00,+167.04,-179.31,-0.71,+133.68)(7,0) pHome=(+470.02,+0.00,+615.03,+180.00,+0.00,+135.01)(7,0) pInArr=(+178.02,+536.38,+163.98,-179.31,-0.71,+133.68)(7,0) pInArr1=(+428.02,+373.88,+163.98,-179.31,-0.71,+133.68)(7,0) pInArr25=(+417.98,+539.99,+164.00,-179.30,-0.71,+133.68)(7,0) pPassArr=(+180.04,-344.97,+166.05,-179.32,-0.71,+133.67)(7,0) pPassArr1=(+430.04,-508.47,+166.05,-179.32,-0.71,+133.67)(7,0) pPassArr25=(+419.99,-342.50,+164.66,-179.31,-0.71,+133.68)(7,0) pTester1A=(+707.38,+469.52,+200.00,-179.57,-0.87,+42.95)(7,0) pTester1C=(+706.08,+342.82,+199.99,+179.09,+0.45,-136.54)(7,0) pTester2A=(+712.40,+68.40,+199.99,-179.57,-0.87,+42.95)(7,0) pTester2C=(+710.49,-58.00,+199.99,+179.09,+0.45,-136.88)(7,0) pTester3A=(+716.71,-328.41,+438.59,-180.00,-0.96,-135.40)(7,0) pTester3C=(+715.71,-455.35,+438.73,+180.00,+0.96,+44.49)(7,0) pTesterP=(+706.08,+342.82,+199.99,+179.09,+0.45,-136.54)(7,0)