Hello Guest it is April 29, 2024, 03:30:32 AM

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - HimyKabibble

531
PoKeys / Re: PoKeys Questions....
« on: September 12, 2011, 08:30:28 PM »
Boris,

So, does the PoKeys plug-in "Create" a bunch of new inputs, on a different input port?  I assume then a brain is used to trigger OEM codes based on the state of those signals?

Regards,
Ray L.

532
PoKeys / Re: PoKeys Questions....
« on: September 09, 2011, 09:12:48 PM »
Terry.

Does PoKeys support a large number of function keys?  I need at least 20....

Regards,
Ray L.

533
PoKeys / PoKeys Questions....
« on: September 09, 2011, 05:23:35 PM »
I am finally going to build myself a control panel for my mill.  The plan is to panel-mount my 20" LCD, surrounded on three sides with momentary pushbuttons to be used as "soft keys" in Mach3, with a separate panel of dedicated pusbuttons for common functions (Run, Stop, Rewind, Spindle On/Off, etc.).  I intend to use a USB PoKeys to provide all the I/O, but I'm not clear on exactly how this interfaces to Mach3.  It doesn't appear to me that using it as just a keyboard emulator will give me what I need, and it's not obvious to me what other options there are.  How to implement the softkeys is particularly unclear, since the function those keys perform has to change based on which screen page is currently active.

Has anyone done anything like this?

Regards,
Ray L.

534
You're probably running in metric, rather than inch, mode....

535
General Mach Discussion / Re: Queue not refilling... why?
« on: August 29, 2011, 09:30:37 PM »
You should NEVER put a Sleep into a macropump!  Macropumps are for simple functions that can be completed QUICKLY, and without ANY delay.  Putting a Sleep in completely defeats the purpose, and WILL cause problems.

536
General Mach Discussion / Re: Queue not refilling... why?
« on: August 29, 2011, 04:06:14 PM »
You really should not put something like that into the macropump, as the macropump is executed ~10X/second.  You should not need to execute that command more than once.  The macropump should also NEVER be used for anything that takes any significant time to execute.

Regards,
Ray L.

537
Ian,

I'm not trying to pick a fight, and I"m sorry if it seemed that way.  I just want to make sure you know where I'm coming from, since you seemed to be objecting to some of the changes Brian was making on my behalf.  I think we're actually pretty much on the same page here.  I agree spamming Mach with JogOffs is not good, and it was inadvertent, but who would've ever guessed it would cause G31 to misbehave??? 

I certainly never suggested doing away with concurrency, but right now, you get it whether you want it or not, and protecting yourself from it often takes a LOT of effort, and, as I'm finding, sometimes even then is not possible to make it really bullet-proof.  That's exactly the opposite of the way it should be.  Operation should be simple, obvious even, and robust, so even a newbie can make basic operations work easily.  Then, if you WANT multiple threads and concurrency, a means of getting it should be provided, but ONLY when asked for.  That way, it works easily for the novices, and it provides the advanced features us more advanced users want.  Everyone wins.  But now, trying to take advantage of seemingly simple and straight-forward functions can lead to hours of needless debugging.  One thing I've learned in 30+ years of designing chips, boards, and software for complex systems is:  If it's complicated, you haven't designed it right.  When debugging becomes like squeezing a balloon, and making a small change in one area makes something in a seemingly unrelated area break, then you're working with a badly architected system.

Yes, now that I truly understand how G-code makes it from a script into the motion engine, I would absolutely surround every, single G-code command with While Ismoving loops.  Years ago, when I wrote that code (That was actually my very first Mach3 macro), I foolishly believed that G-code commands all went into the same execution queue, and would, at least, always be executed in order.  Silly me!  I also thought IsMoving would actually indicate that the machine was moving, and not simply that there were still G-code commands waiting in the buffer, and would have no meaning when executing a G90!  Where do I get these crazy ideas?  :-)

Regards,
Ray L.

538
Ian,

"HOWEVER... I'd refer you to my answer above. THIS DOES NOT,HAS NOT and I CAN NOT make this happen with my system. I've tried it Ray - I've screwed with things in a deliberate attempt to try to REPRODUCE this behaviour and I can't. It behaves ROCK SOLID. This would make me suspicious of the macros you use to see how they manage to find a LOOPHOLE in the system. THEN FIX THE LOOPHOLE."

The whole time I've been involved with Mach3 (about 8 years now....) every time I've reported a problem, several people on the forums have jumped on me and pointed fingers at my computer, my macros, my machine, sunspots, whatever.  For many years I was running with a 400MHz PC, and the guys on the Yahoo forum would immediately blame the slow PC for my problems.  In all those years, not ONCE - not one single time - has a problem, once root-caused, been traced to my machines, my macros, or my PC.  In every, single case, without exception, the source of my problems has been tracked back to a bug in Mach3, a bug in the SmoothStepper, or some architectural issue, like the current ones.  Unless you can find fault with my one-line "Code("G0 X0 Y0")" button script, because NOTHING else of mine is running when I induce these behaviors.  None of my macros are EVER used when the machine is running - I've learned the hard way to keep the he11 away from the control panel when a program is running.

When I do find a problem, one of the first things I do is go to a dead stock system, and reproduce it.  If I can't, THEN I start looking at my configuration, and track down WHAT is inducing the problem, get clues about HOW the issue is occurring, then figure out how to induce it in a stock system.  I am nearly always able to do this.  In some cases, there are perfectly reasonable things I'm doing in my macropump, or a macro, that uncover weaknesses in Mach3, and in nearly every case Brian, once he understands the issue, is surprised by what's happening, and agrees it should not be happening.  Even he is still learning about the inner working of the code he's inherited.

Regards,
Ray L.

539
Guys,

For several weeks now, I've been using current development builds Brian has given me.  But I find it hard to believe version has much impact on some of these problems, as they are fundamental architectural issues in Mach3, confirmed by Brian, so I believe they have been there a long time.  Scripts are, by design, allowed to "inject" G-code into the buffer at ANY time, as no mechanism exists in Mach3 to prevent it.  It was done because there are a few cases where it is apparently necessary - the example Brian gave was THC, where the users needs to be able to adjust Z position while a program is running (though I would provide an explicit THC offset that operated much like FRO and SSO).

I have v3.042.020 (about two and a half years old, IIRC) running on my laptop, and I can easily demonstrate these problem on that.  My machine is running a derivative of 3.043.047, and has all the same issues.  Try this:

Create a button, and assign to it a button script "Code("G0 X0 Y0")".  Now load and run a program, and as it's running, click that button.  You'll see that within a few seconds, the X/Y DROs go to zero, but the program continues running, completely unaware.  This is with a plain-Jane install, nothing special, no modifications of any consequence.  Absolutely 100% repeatable here, on all my machines, including my big mill with the SmoothStepper.

Ian,

I'm not saying get rid of the flexibility.  I'm saying leave it where it makes sense, and does not hinder system integrity and reliability.  Implement ALL features in a rational, robust, consistent manner, which is not the case currently.  The above issue is a perfect example.  One person will argue that being able to asynchronously inject G-code into a running machine is useful (see the THC example), but I say it's the wrong way to do it, and while providing *a* means of accomplishing the desired function, it creates hazards which will cause far more problems than it solves.  The correct way to handle that is to provide an explicit mechanism that cleanly implements the desired feature without the undesirable side-effects.  Another example Brian gave way that someone may want to change some output pin while a program is running (why, I don't know....).  OK, perhaps so, but I would argue G-code is not the way to do that.  Instead use the VB functions that allow outputs to be explicitly set and cleared.  There should be one, and only one G-code input buffer, and there should be strict rules about who can push things in there, and when.  Instead, there are currently multiple buffers, and new ones can be created at will through VB, and each VB script is run in its own thread, so there is absolutely no coordination between those threads, resulting in the kinds of odd behaviors I see on a daily basis.

My Z probing script is attached.  You'll find there is absolutely nothing unusual in it that could possibly explain what I'm seeing.  And, EVERYTHING I've reported here has been confirmed by Brian.  My script is launched by an on-screen button that directly executes the script (NOT via a button script - the M-code is assigned to the button in the screen editor).  I have no doubt Brian will get this all cleaned up, and the (sometimes seemingly mythical) v4 will be a HUGE step forward, as Brian is working very hard to clean up these architectural issues, and create order out of the chaos.

Regards,
Ray L.

540
General Mach Discussion / Re: Mach Programer's manual
« on: August 24, 2011, 09:13:48 PM »
Terry,

I suggest you ping David Bagby at Calypso Ventures about that.  I expect he'd be happy to do that.  I wrote the original manual, but Dave made extensive revisions to reflect later changes in Mach3, and I no longer have the latest source document.

Regards,
Ray L.