Skip function

400 views
Skip to first unread message

Marek T.

unread,
Aug 9, 2017, 8:50:07 AM8/9/17
to OpenPnP
I have strange working of the skip function and would like to know is it made this way intentialy or some bug.

So I have one head with three nozzles rotated with C-shared motor (what's probably not important in this case).

Conrete examle description:
Nozzle1 out of order. Nozzle2 picks the part properly but Nozzle3 cannot (let it be there is no part in the feeder). So we may press SKIP. And then the system discards the part from Nozzle1 - don't understand what for - and comes back with Nozzle3 to the feeder where is still no part. So we press SKIP again then system goes to discard Nozzle3 now (3 not 2 because probably knows that Nozzle2 is already empted).

Otherwords, when SKIP pressed due to problem with some part then system discards the parts picked up properly by previous Nozzles1 and 2. Some reason?

And second question: after the final assembling we get all not placed parts marked with yellow. Do we have some method to initiate function like "pick and place all missed parts" or point the single part to be p/n/p again?

SMdude

unread,
Aug 9, 2017, 9:30:01 AM8/9/17
to OpenPnP
Yes, the skip thing is a bug. I have had it do this too.

Jason von Nieda

unread,
Aug 9, 2017, 9:34:45 AM8/9/17
to OpenPnP
Just checked the code. It does look like there is potentially a bug where that could happen. I'll add it to the list of things to fix in the job processor rewrite.

For the second question, this is also something that is coming in the job processor rewrite. See https://github.com/openpnp/openpnp/issues/280 for more info.

Due to some bad design decisions a few years ago, we now have a lot of bugs in the job running system that are hard to fix. I've been trying to clear my plate so I can get this rewritten but it's been hard to find time over the summer due to a heavy workload and vacations. It's a very high priority for me, though, and I will get to it as soon as I can.

Jason


On Wed, Aug 9, 2017 at 8:30 AM SMdude <spiteri...@gmail.com> wrote:
Yes, the skip thing is a bug. I have had it do this too.

--
You received this message because you are subscribed to the Google Groups "OpenPnP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to openpnp+u...@googlegroups.com.
To post to this group, send email to ope...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/4b284469-fb53-4e17-a5f4-45b696c23f7a%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Marek T.

unread,
Aug 9, 2017, 9:58:43 AM8/9/17
to OpenPnP
OK, thanks for info. Afraided that there is some hidden wisdom that it works as it is now :-).

Bad decisions... it's normal. It's usualy impossible to predict everyhing when starting with something new. Always have the problems like that in my projects.

Marek T.

unread,
Aug 14, 2017, 12:30:14 PM8/14/17
to OpenPnP
Hi!

One more thing that's not realized good - on my machine at least.
Situation: we have three nozzles intended for different size parts. Nozzle2 and 3 programmed for small parts with 100% speed, Nozzle3 is for big/heavy parts so set to 25% speed. If sequence of pnp is Nozzle1,2 then 3, the head is running 100% for N1/2 then slow down to 25% when go to serve N3 - but already lost the N3 part when run 100% with previous parts. Otherwords: the system is not using the lowest speed till lowest Nozzle is not finished but just running in accordance to just served nozzle.
Is this known bug also to correct in future jobprocessor or there is some method to avoid this problem?



W dniu środa, 9 sierpnia 2017 15:34:45 UTC+2 użytkownik Jason von Nieda napisał:

Jason von Nieda

unread,
Aug 14, 2017, 12:42:20 PM8/14/17
to OpenPnP

Cri S

unread,
Aug 14, 2017, 2:17:35 PM8/14/17
to ope...@googlegroups.com
Marek, if you want change the sequence, invert the order of nozzles
inside machine.xml,
first nozzle 3 , then nozzle2 and then nozzle1.
It really depends on the order of creation.
>> <https://groups.google.com/d/msgid/openpnp/60de490e-1c03-43c3-b1ee-7e5049a084e6%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>> For more options, visit https://groups.google.com/d/optout.
>>
>
> --
> You received this message because you are subscribed to the Google Groups
> "OpenPnP" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to openpnp+u...@googlegroups.com.
> To post to this group, send email to ope...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/openpnp/CA%2BQw0jzXPiKBmVy0bp1G737XqKD29o6E7R-APKsbX52wz4tFgw%40mail.gmail.com.
Message has been deleted

Marek T.

unread,
Aug 14, 2017, 3:37:40 PM8/14/17
to OpenPnP
Thanks for appoint Cri. Still can also use N1 for the most heavy parts instead of making 321 sequence in machine. But it changes not much. Even if N1 will be used for heavy parts then we have situation that after picking N1 the head will go to pick next parts with higher speed and loose part on N1. Solution would be picking N1fast,2fast,3slow then place N3,2,1. Is this possible?

Mainly wanted to know is it something wrong in my configuration or kind of some bug being on the list to be corrected in future (what Jason just has confirmed).

Cri S

unread,
Aug 14, 2017, 3:57:17 PM8/14/17
to ope...@googlegroups.com
It should be clear that with nozzleTip and component compatibility
head3 must be biased to heavy components.
You could reverse the nozzles inside place code (pnpJobProcessor). as
you'r machine
customisation. Example:

protected void doPlace() throws Exception {
Collections.reverse(plannedPlacements);
for (PlannedPlacement plannedPlacement : plannedPlacements) {
> --
> You received this message because you are subscribed to the Google Groups
> "OpenPnP" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to openpnp+u...@googlegroups.com.
> To post to this group, send email to ope...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/openpnp/aeac0c79-15a3-497d-bed5-2256992deec0%40googlegroups.com.

Marek T.

unread,
Aug 14, 2017, 6:30:22 PM8/14/17
to OpenPnP
Understand you meant RefferencePnpJobProcessor. And I guess it's not everything that need to modify in code prior to compilation?

phon...@gmail.com

unread,
Aug 15, 2017, 8:49:52 AM8/15/17
to OpenPnP
Fill a feature request, as it's usual on pnp that the right nozzle hold bigger nozzle tips and placing this first could increase cph and automatically hides/fix the speed problematic. For the rest it don't matter if head 1 or 3 is placed first. The change is a simple one liner.
I use different planning based on distance from nozzle and have slightly different motion speed behavior that seems cause problems on plain open PNP code it is better someone else do the PR.

Marek T.

unread,
Aug 16, 2017, 8:20:37 AM8/16/17
to OpenPnP
Cri, so your proposal is to suppose that the most fast Nozzle is N1 and the most slow is N3 (or higher if there is more nozzles in the raw). And then just realize algorithm as said somewhere above. Picking: N1fast, N2middle, N3slow, placement N3slow, N2middle, N1fast. Problem of speed resolved automaticaly and optimal safe/speed. If understood you well also thing it's best.

I have added the line which you have mentioned above but it doesn't compiles. Unfortunately my java acknowledge is too poor to I could analyze it. I just did

    protected void doPlace() throws Exception {
        Collections.reverse(plannedPlacements);
        for (PlannedPlacement plannedPlacement : plannedPlacements) {
            if (plannedPlacement.stepComplete) {
                continue;
Some fatal mistake from my side or you thought just like that?

Jason, you if you have created request 576 about this problem so maybe just modify the request with info how it should work. And no sense to create new request for the same problem? Or maybe you have some better idea...

If Cri (or you) would be willing to help here how to modify the Reference..JobProcessor I'm ready to play with this, check on the machine and inform you if it solves the problem.

Cri S

unread,
Aug 16, 2017, 8:43:39 AM8/16/17
to ope...@googlegroups.com
Marek, for testing, you could change

List plannedPlacements = new ArrayList();
to
ArrayList plannedPlacements = new ArrayList();

and it should work.

Marek T.

unread,
Aug 17, 2017, 7:38:00 PM8/17/17
to OpenPnP
Hi Jason,

This modification tested works good. Placement in opposite sequence than picking the parts, N1N2N3 then N3N2N1. So if we assign "slow speed parts" to the right nozzle the system will never loose them while running with "fast parts" - slow part will be taken last and placed first, later the speed will be "automatically" increased. Plus small profit with cph because we have total 5 rotations instead of 6 :-). Maybe it's not best solution for everybody but solves the problem for me.


    protected void doPlace() throws Exception {
        Collections.reverse(plannedPlacements); //it's the only added line

        for (PlannedPlacement plannedPlacement : plannedPlacements) {
            if (plannedPlacement.stepComplete) {
                continue;

PS. Thanks to Cri for this help.

Jason von Nieda

unread,
Aug 18, 2017, 9:44:38 AM8/18/17
to OpenPnP
This will cause the order of placements to reverse every time doPlace is called. This could happen in the case of a placement error, in which case after the pause/continue the order of placements will change.

Jason


--
You received this message because you are subscribed to the Google Groups "OpenPnP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to openpnp+u...@googlegroups.com.
To post to this group, send email to ope...@googlegroups.com.

Marek T.

unread,
Aug 18, 2017, 9:59:44 AM8/18/17
to OpenPnP
So if I press pause and continue then direction of the placement will be changed? Well understood?

Jason von Nieda

unread,
Aug 18, 2017, 10:01:48 AM8/18/17
to OpenPnP
No, pause will only pause after all placements are made. The error I mentioned will happen if there is a placement failure (head crash, driver error, vacuum error, custom stuff) and you fix it and continue. It's likely to be rare, but it's something you should be aware of. A better choice would be to reverse the placements once in doPlan, after they are planned.

Jason

Cri S

unread,
Aug 18, 2017, 10:13:25 AM8/18/17
to ope...@googlegroups.com
It is more probable that doPlace trow a exeption and get repeated
because vision throw
exception if component is not on nozzle or some other vision pipeline
error, the correct thing
should be adding a FSM stage between doPlace and doAlign.
>>>> <https://groups.google.com/d/msgid/openpnp/b21a05f2-1f7e-4d72-9a36-a4d1b0133e71%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>> .
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>> --
>> You received this message because you are subscribed to the Google Groups
>> "OpenPnP" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to openpnp+u...@googlegroups.com.
>> To post to this group, send email to ope...@googlegroups.com.
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/openpnp/babd0124-44fb-4bf7-bb59-044306a1e3a0%40googlegroups.com
>> <https://groups.google.com/d/msgid/openpnp/babd0124-44fb-4bf7-bb59-044306a1e3a0%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>> For more options, visit https://groups.google.com/d/optout.
>>
>
> --
> You received this message because you are subscribed to the Google Groups
> "OpenPnP" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to openpnp+u...@googlegroups.com.
> To post to this group, send email to ope...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/openpnp/CA%2BQw0jy0UGwd3guiiMu%3DfLRKX_4LRvqdt803SVSDrttPszG6Eg%40mail.gmail.com.

Cri S

unread,
Aug 18, 2017, 12:03:05 PM8/18/17
to ope...@googlegroups.com
Sorry, i meant doPlan and habe dritten doPlace.

Marek T.

unread,
Aug 19, 2017, 4:57:23 AM8/19/17
to OpenPnP
Jason, Cri, as I hear it's small change quite easy to fix and need tests. But you must decide where is optimal place to "add the line" in code. Looking on total speed of the head the reversing of the sequence seems be optimal solution if made properly. I'm ready to make experiments here over the test versions made under your instructions and give required feedbacks. Maybe you think it's no sense way, then ok.
On Monday I'll check what Jason said about the problem that temporary Cri's fix may create. If it will be not critical I'm going to use it, it's better than losing or changing parts positions while the fast head moving.
cheers!

Marek T.

unread,
Aug 31, 2017, 10:01:17 AM8/31/17
to OpenPnP
Hi Jason,

So you have merged "Head Movement Speed Limiting" by johngrabner in these days. But is this placing the parts begining from the part which limits the speed then runing faster when placing "faster" parts. Or we have the situation that "fast" parts are placed very slow because on some further nozzle is kept the part limiting the speed of the set?

Jason von Nieda

unread,
Aug 31, 2017, 10:04:18 AM8/31/17
to OpenPnP
Hi Marek,

The change is only to ensure that the head doesn't move faster than the slowest part it's carrying. It does not include any optimization to place faster parts first. I'd be happy to accept a PR that optimizes this case but I have not had time to investigate it myself.

Jason


Marek T.

unread,
Aug 31, 2017, 10:37:48 AM8/31/17
to OpenPnP
Clear Jason, thanks for answer, just considered if worth to compile it for me:-).
Pity that just not included well-done code to reverse the placement sequence. Then enough to keep an order that slower parts on higher numbered nozzles and problem of optimisation resolved automaticaly...
Understand that now the speed is checked at the beginning of the sequence and even if slow parts are already done the fast parts placed after are also limited, correct? So adding the reverse of the sequence in the PnpJobProcessor will not give effect of auto-increasing of the speed, isn't it?

Jason von Nieda

unread,
Aug 31, 2017, 10:46:20 AM8/31/17
to ope...@googlegroups.com
On Thu, Aug 31, 2017 at 9:37 AM Marek T. <marek.tw...@gmail.com> wrote:
Clear Jason, thanks for answer, just considered if worth to compile it for me:-).
Pity that just not included well-done code to reverse the placement sequence. Then enough to keep an order that slower parts on higher numbered nozzles and problem of optimisation resolved automaticaly...

Is there some reason you can't just put slower parts on lower numbered nozzles? The distinction seems arbitrary to me.

As I said, I am happy to accept a PR that has been tested and gone through the process. It's very time consuming for me to accept code via email. I have no indication that anyone has tested it, documented it, or if it even compiles. 

The code that was mentioned earlier had a flaw that it would change the order of placement on every call. This indicates to me that it was not well considered and not tested.

It's very difficult for me to replicate everyone's setup to test things like this. It can take hours to test a simple change. This is why I have a process and automated testing in place to let people send PRs. When someone takes the time to send a PR, fill out the template, and document their code I'm at least assured that they have put some thought into it. Otherwise all that work falls to me.

Understand that now the speed is checked at the beginning of the sequence and even if slow parts are already done the fast parts placed after are also limited, correct? So adding the reverse of the sequence in the PnpJobProcessor will not give effect of auto-increasing of the speed, isn't it?


No, the speed is now handled at a lower level. The head will always move as fast as allowable by the parts it's handling. So, if it is carrying a slow part and a fast part, it will move slow until the slow part is placed, and then it will move fast.

Jason

 

Marek T.

unread,
Aug 31, 2017, 11:18:57 AM8/31/17
to OpenPnP
Jason,
If, as you've explained me now, the speed is checked after each nozzle placement and since slow part is placed then head will move fast with next parts, so of course no problem to "just put slower parts on lower numbered nozzles" and don't think about reversed nozzles mounting or reverse-sequence of placement - what had a sense before.

The code that was mentioned earlier I have added to my compilation and tested on my machine what reported here. A mentioned flow was a fact but it was because the code just required some polishing by someone more experienced - looks just done now by johngrabner :-).
Btw I have not sent you the code for this by email. Mailed you some multi-click-mechanical-feeder few weeks ago but nothing any more. I rather hear what people talk to me and really respect your time, believe me...

Short vacation now, so I will compile current version next week and report how it works.

Jason von Nieda

unread,
Aug 31, 2017, 11:23:45 AM8/31/17
to OpenPnP
Hi Marek,

Speed is checked for every head movement now. Whether inside or outside of a job.

I was referring to the code you posted in this thread on August 17th:

>> Collections.reverse(plannedPlacements); 

In any case, it sounds like you have a path to a working solution now, so all is well :)

Jason


Marek T.

unread,
Aug 31, 2017, 12:33:20 PM8/31/17
to OpenPnP
Yes, just this code have been worked good for me till today. Except mentioned flow - which was not onerous as very rare occuring.

FYI why I have started this our today converstation at all. The problem is that my old scrap-machine depresses some individual changes and I must compile personalized versions at every time you publish new version (if want to be up to dated of course). It makes another "problem": to "investigate" how new added modifications collides with my changes and decide if worth to merged them each other or better don't touch it. And last change brought the changes in jobprocessor module which have little personalized.

However, on the moment I have really quite good working solution and happy of this :-).

Marek

Cri S

unread,
Aug 31, 2017, 1:49:37 PM8/31/17
to ope...@googlegroups.com
Add a solution like OpenPnP, i have it telled that already previously .
name it csm84 as example.
Copy the jobprocessor, the modified feeders and you need track "only"
that files for bigger
changes. Clearly you must change the machine.xml manually , create a
documation for the
changes and submit a PR if you want it included on official release.
If you want it included, clearly you must periodical update the branch
to the new changes.
>>>>>>>>>>> <https://groups.google.com/d/msgid/openpnp/b21a05f2-1f7e-4d72-9a36-a4d1b0133e71%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>>>>>>> .
>>>>>>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>> You received this message because you are subscribed to the Google
>>>>>>>>>
>>>>>>>>> Groups "OpenPnP" group.
>>>>>>>>> To unsubscribe from this group and stop receiving emails from it,
>>>>>>>>> send an email to openpnp+u...@googlegroups.com.
>>>>>>>>> To post to this group, send email to ope...@googlegroups.com.
>>>>>>>>>
>>>>>>>> To view this discussion on the web visit
>>>>>>>>> https://groups.google.com/d/msgid/openpnp/babd0124-44fb-4bf7-bb59-044306a1e3a0%40googlegroups.com
>>>>>>>>>
>>>>>>>>> <https://groups.google.com/d/msgid/openpnp/babd0124-44fb-4bf7-bb59-044306a1e3a0%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>>>>> .
>>>>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>>>>
>>>>>>>> --
>>>>>>> You received this message because you are subscribed to the Google
>>>>>>> Groups "OpenPnP" group.
>>>>>>> To unsubscribe from this group and stop receiving emails from it,
>>>>>>> send an email to openpnp+u...@googlegroups.com.
>>>>>>> To post to this group, send email to ope...@googlegroups.com.
>>>>>>>
>>>>>> To view this discussion on the web visit
>>>>>>> https://groups.google.com/d/msgid/openpnp/d64b0ea6-2033-477d-b069-8d2d03a21b2f%40googlegroups.com
>>>>>>>
>>>>>>> <https://groups.google.com/d/msgid/openpnp/d64b0ea6-2033-477d-b069-8d2d03a21b2f%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>>> .
>>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>>
>>>>>> --
>>>>> You received this message because you are subscribed to the Google
>>>>> Groups "OpenPnP" group.
>>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>>>
>>>>> an email to openpnp+u...@googlegroups.com.
>>>>> To post to this group, send email to ope...@googlegroups.com.
>>>>>
>>>> To view this discussion on the web visit
>>>>> https://groups.google.com/d/msgid/openpnp/300f3ffb-cc73-4dc2-8fd8-669a35486e4e%40googlegroups.com
>>>>>
>>>>> <https://groups.google.com/d/msgid/openpnp/300f3ffb-cc73-4dc2-8fd8-669a35486e4e%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>> .
>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>
>>>> --
>>> You received this message because you are subscribed to the Google Groups
>>>
>>> "OpenPnP" group.
>>> To unsubscribe from this group and stop receiving emails from it, send an
>>>
>>> email to openpnp+u...@googlegroups.com <javascript:>.
>>> To post to this group, send email to ope...@googlegroups.com
>>> <javascript:>.
>>> To view this discussion on the web visit
>>> https://groups.google.com/d/msgid/openpnp/87be0baa-cb8c-4088-9c05-edf19cb8d804%40googlegroups.com
>>>
>>> <https://groups.google.com/d/msgid/openpnp/87be0baa-cb8c-4088-9c05-edf19cb8d804%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>
> --
> You received this message because you are subscribed to the Google Groups
> "OpenPnP" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to openpnp+u...@googlegroups.com.
> To post to this group, send email to ope...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/openpnp/16c74002-3b0e-45d3-809b-c442fc4a50ba%40googlegroups.com.

Cri S

unread,
Aug 31, 2017, 1:54:21 PM8/31/17
to ope...@googlegroups.com
sorry i mean openbuilds, not openpnp, this directory and openpnp
example. https://github.com/openpnp/openpnp/tree/develop/src/main/java/org/openpnp/machine/openbuilds

Further you must update the wizards in order csm84 can be selected and
as example
the ReferenceActuatorFeeder must be renamed to different and included only if
csm84 JobProcessor is used.

Bernd Walter

unread,
Oct 25, 2017, 2:32:34 PM10/25/17
to OpenPnP


On Wednesday, August 9, 2017 at 2:50:07 PM UTC+2, Marek T. wrote:
I have strange working of the skip function and would like to know is it made this way intentialy or some bug.

So I have one head with three nozzles rotated with C-shared motor (what's probably not important in this case).

Conrete examle description:
Nozzle1 out of order. Nozzle2 picks the part properly but Nozzle3 cannot (let it be there is no part in the feeder). So we may press SKIP. And then the system discards the part from Nozzle1 - don't understand what for - and comes back with Nozzle3 to the feeder where is still no part. So we press SKIP again then system goes to discard Nozzle3 now (3 not 2 because probably knows that Nozzle2 is already empted).

Otherwords, when SKIP pressed due to problem with some part then system discards the parts picked up properly by previous Nozzles1 and 2. Some reason?

Happened to me as well in my tests yesterday.
I currently have drag feeders not always removing the cover tape, so pick failures are not uncommon.
Pretty annoying.

Michael G.

unread,
Dec 22, 2017, 5:07:14 PM12/22/17
to OpenPnP
ran into the skip-issue on my first real small job, too.
luckily, failing were the stripe feeder, not my automatic feder ;)
has anybody could fix it already?

Marek T.

unread,
Dec 22, 2017, 5:24:04 PM12/22/17
to OpenPnP
Still nobody as I know :-(.
Also pity that there is no switch like "continue/ignore" except repeat, skip and pause when some problem occurs.
I.e. Sometimes happens that part is picked not perfectly and vacuum fails, having that switch we could make manual correction on the tip then press "continue". Now it's impossible, we can only take off the part and command "repeat".

SMdude

unread,
Dec 22, 2017, 6:13:21 PM12/22/17
to OpenPnP
What I do if I have a mispick and get an error on bottom vision for no part detected on the nozzle is "pause job" then select that nozzle and perform a feed and pick on the feeder which then picks up the next part from the strip. Then press play and the nozzle returns to the bottom cam, vision and place...

Marek T.

unread,
Dec 22, 2017, 6:20:15 PM12/22/17
to OpenPnP
Yes Mike I do the same. But when no part on the tip is the one story, other story if the part is sitting on the nozzle and need only to make small handy correction and go continue.

SMdude

unread,
Dec 22, 2017, 8:10:32 PM12/22/17
to OpenPnP
Ahhh, thats right, you use the machine with the centering jaw, so your nozzles don't rotate? That is a pain!

Marek T.

unread,
Dec 22, 2017, 9:21:47 PM12/22/17
to OpenPnP
No, I've removed the jaws :-). But sometimes happens that nozzle picks the part not ideally centerly at it's edge, specially often at me with 0402 but not only. Then vacuum value is not high as expected and we get stopped with popup window "repeat, skip, pause". Repeat picks again (to don't lose held part we must manually take it off and store, sometimes that small shit costs few dollars), skip makes discard, pause is obvious. Missing "continue" which should to point in the code that operation is done properly and go further in accordance to the planner.

Michael G.

unread,
Dec 23, 2017, 5:08:57 AM12/23/17
to OpenPnP
hi marek,

I made a pull request. maybe you can test that and jason looks whether it is okay from implementation side? https://github.com/openpnp/openpnp/pull/688
(the spelling is corrected already ;)

Marek T.

unread,
Dec 23, 2017, 7:00:48 AM12/23/17
to OpenPnP
Hi Michael,
I'll recompile it and test, but not sure when tell the results looking on Christmas break.
Have you tested it or "only" modified and checked that compiles?
If it will worked good, official implementation by Jason should be appreciated by every users, missing that feature is really irritating very often.

Michael Gröne

unread,
Dec 23, 2017, 7:02:14 AM12/23/17
to ope...@googlegroups.com
I have tested it (quickly) on my machine, but of course, more is better...

Marek T.

unread,
Dec 23, 2017, 7:17:01 AM12/23/17
to OpenPnP
Sure, I'll stay in touch with this, thx!

Michael G.

unread,
Dec 23, 2017, 3:01:53 PM12/23/17
to OpenPnP
okay, jason merged it already into the develop branch...

Michael G.

unread,
Dec 26, 2017, 11:34:38 AM12/26/17
to OpenPnP
created another pull request regarding discard the right nozzle in case of an error:
https://github.com/openpnp/openpnp/pull/693

works well on my 2 nozzle machine. maybe somebody else could test that, too.

-michael


Am Mittwoch, 9. August 2017 14:50:07 UTC+2 schrieb Marek T.:
I have strange working of the skip function and would like to know is it made this way intentialy or some bug.

So I have one head with three nozzles rotated with C-shared motor (what's probably not important in this case).

Conrete examle description:
Nozzle1 out of order. Nozzle2 picks the part properly but Nozzle3 cannot (let it be there is no part in the feeder). So we may press SKIP. And then the system discards the part from Nozzle1 - don't understand what for - and comes back with Nozzle3 to the feeder where is still no part. So we press SKIP again then system goes to discard Nozzle3 now (3 not 2 because probably knows that Nozzle2 is already empted).

Otherwords, when SKIP pressed due to problem with some part then system discards the parts picked up properly by previous Nozzles1 and 2. Some reason?

And second question: after the final assembling we get all not placed parts marked with yellow. Do we have some method to initiate function like "pick and place all missed parts" or point the single part to be p/n/p again?

Bernd Walter

unread,
Dec 26, 2017, 11:59:30 AM12/26/17
to OpenPnP
 
On Tuesday, December 26, 2017 at 5:34:38 PM UTC+1, Michael G. wrote:
created another pull request regarding discard the right nozzle in case of an error:
https://github.com/openpnp/openpnp/pull/693

works well on my 2 nozzle machine. maybe somebody else could test that, too.

Now this is a perfect xmas present.
Especially together with the fix for the placed flag.
This had been a show stopper for me to use the bottom camera for more parts, since I was worried that my image pipelines were not stable enough for the boards I had to do.
Don't think I'll find time to test this on my 4 nozzle machine over the next 2 weeks however.

Marek T.

unread,
Dec 26, 2017, 2:41:08 PM12/26/17
to OpenPnP
Great Michael, out was also frustrating!
I'll test all this just after NY on my 3-nozzle machine!
Thx for that improvements :-).

Marek T.

unread,
Jan 3, 2018, 11:11:54 AM1/3/18
to OpenPnP
Hi Michael,
Tested your Discard and Ignore/Continue bugfixes today, you saw answers on the git. Both working great now:-).

I have proposal of some another modification as you have started to do so good things ;).

So we have now in the thrown window the options to choose:
- try again: repeating last unsuccesful operation
- skip: making discard and jumping over current unsuccesful operation to the next operation
- Ignore/Continue: assuming that last unsuscesful operation is performed well and going continue
- pause job

Now imagine situation that we lost the part on the way from the feeder to the bottom camera. Then we get exception message breaking the fob and have two possibilities:
- put the part on the nozzle manualy just with fingers and press try again to align it (or eventualy I/C), or
- press "pause job", go to feeders and selecting required nozzle perfom picking the part from UI. Then "play job" and continue the job.
What would be helpful for everybody is another switch except listed above (try again, skip, I/C) making automatical operation "pick missing part again and continue the plan" - no worth to explain what doing :-)

From this moment the last function missing to full hapiness will be new JobProcessor with automated repeating all that issues (like automatic picking when vacuum mistake etc) - but it's story for the really far future as understand...

brgds
Marek

Michael G.

unread,
Jan 3, 2018, 11:42:47 AM1/3/18
to OpenPnP
thought about exactly the same today, too. there is an issue already: https://github.com/openpnp/openpnp/issues/275
currently I don't intend to do further changes. just wanted to make some basics work properly...

Marek T.

unread,
Jan 3, 2018, 12:28:15 PM1/3/18
to OpenPnP
Understand, thx for all that you have made by now. When missing that re-pick from the bottom, the "continue" option that you've added is realy making a life easier now.
Reply all
Reply to author
Forward
0 new messages