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 - smurph

Mach4 General Discussion / Re: Comments about Mach4 in Demo
« on: May 01, 2014, 02:08:56 PM »
Also, a word on sub programs.  We now have the capability of calling system subroutines that are external to the main program.  These subroutines should be placed in the <mach dir>\Subroutines directory with the filename of "O" plus the program number.  No file extension.  For example:

Program number 8000 should be named "O8000" and placed in the Subroutines directory.

Then "M98 P8000" or "G65 P8000" in the main program can call the system sub "O8000" in the Subroutines directory.  Loading the comment on the M98 line with a file name is no longer required (however, it is still supported).  You can't mix the two methods, obviously.  Meaning that if you use the P address on M98 to call an external sub, you should not also use the comment to define it.

There is no limit on sub nesting now.  Well...  the limit is your PC and whatever resources it has.  But we don't confine you to only 5 levels of nesting or the like. 

This is a standard Mach 4 Hobby feature!!! 

Mach4 General Discussion / Re: Comments about Mach4 in Demo
« on: May 01, 2014, 01:56:29 PM »
Do you have a list of the Local G65 Parameters "A=#1 B=#2 C=#3 etc??

What Graham posted is what we use.  Standard Fanuc.  We won't get into mixing or shuffling them up for our own purposes.  We just reserve the E address because the interpreter will look at it as scientific notation.  When I get time, I may try and remove this restriction.  But for now, it is reserved. 

Most of the reserved addresses have a special meaning on the G65 line but they can be accessed in the sub.
E (Mach reserved) would be #8.  it will be loaded with NIL (undefined).
G (RESERVED SYSTEM WORD) would be #10.  It will be loaded with "650" as G65 is what called the sub!  This is how you can know if G65 called the sub or not.
L  (RESERVED SYSTEM WORD) would be #12.  It is loaded the the loop count from the G65 L address.
N  (RESERVED SYSTEM WORD) would be #14.  It is loaded with the sequence number of the G65 line (if provided).
O  (RESERVED SYSTEM WORD) would be #15.  It is not loaded with anything at the moment.
P  (RESERVED SYSTEM WORD) would be #16.  It is loaded with the program number from the G65 P address. (your called sub program number)


Mach4 General Discussion / Re: Comments about Mach4 in Demo
« on: May 01, 2014, 01:38:23 PM »
Hiya Steve here are a few more items that have a glitch.

1.  On arcs G2/G3 and the IJs are missing you get NO error it just skips over the line and proceeds.

2. On G16/15 functions it tries to process ARCS without an error message. G16 moves are strictly G0/G1

moves and the arc call should have errored out in stead of trying to run.

3.  In G84 it does not allow G95 mode UNLESS the spindle has the speed sensor working. The G95 mode with drilling and tapping is the perfered mode as it makes it easy to program the proper feedrate. AN option to run with the CALLED(programmed) Spindle speed is needed as Many kneemil type CNCs do not have a spindle index signal for rpm indication AND it is difficult to install one as they have split spindle shafts at the mid gearbox and the TOP shaft RPM is different that the actual spindle.

Occationaly I see A axis movement in gocde functions that do NOT have A axis movement code in them. SOmetimes it moves sometimes it does not move A axis. When it does move it is just a very slow creeping move.

1.  I thought we discussed that already.  G02/03 are modal commands.  It is perfectly legal to not have ANYTHING on the same line as G02/G03.
2.  Brian addressed this.
3.  I'll look at the G84/G95 thing.

I have not seen the A axis issue.  I will try and duplicate this.  Do you have code that will reproduce this?

Also...  I'm hard at work right now working with the DROs.  Including a popup keypad that will benefit touch screens as per Dan13's suggestions.  However, we are constrained with what can be done in a lot of the screen controls because we have to program for the least common denominator across all platforms.  Making the DRO highlight all with one click is proving to be quite a challenge!


Mach4 General Discussion / Re: Comments about Mach4 in Demo
« on: May 01, 2014, 03:00:26 AM »
The reason you waited 10 years is because it was not easy!

I will check it out.


Mach4 General Discussion / Re: Comments about Mach4 in Demo
« on: May 01, 2014, 01:45:31 AM »
G02 with no I or Js is perfectly acceptable.  It is a modal command.  Consider:

X.. Y.. I.. J..
X.. Y.. I.. J..
X.. Y.. I.. J..
X..  Y..


G02 F30  (switch to G02 mode)
G01 X0 Y0 F30 (switch to G01 mode.  Previous line ends up as a no op)

Got any more?  There might be some and I would like the know as I'm not ever using all of the G codes.  I tend to use CAM because I'm lazy.  :)


Send me your Skype username to smurph at smcomp dot com and I will try contacting you tomorrow.  I'm in the Central time zone but I operate on the Pacific time zone hours.  :)  So don't expect an early session!


You may not know this, but you cannot access a PCI card from two different applications.  Run either Mach or Smart Term.  Not both at the same time.  Maybe that is causing it.  Also, if configuring the plugin is doing it, the code may not be PCI friendly.  It has been a LONG time since I ran a bus based controller.  If that is the case, try to get the config done to the point where you can run it without having to drop into the plugin configuration.  Once it is done, you will probably just run and run and run... 


Mach4 General Discussion / Re: Comments about Mach4 in Demo
« on: April 30, 2014, 11:48:11 PM »
HIYA Steve M99 Pxx it is. When I tried the M99Qxx it just ignored it with NO error code and it just seemed to work. I do notice that there is liitle to no error codes in the gcode side it will take just about anything and just ignore what it does not know and go on without erroring out or wwrning you there is bad code.

Another item When trying to create a new program from edit Gcode you cannot open a new  file. You must first load an OLD program then edit and rename.

Also you say you can turn on comments in config but MY version does not have a mach config, it is greyed out and you cannot access it.

So the M99 question is answered then. 

As for the errors...  Don't produce bad code!  :)  All kidding aside the interpreter does not currently check M codes for sanity.  I will look and see what I can do there.

And I will address the editing of a new file.  I never even thought of trying to do that!  I always load up an existing file.  Someone asked what the point of this thread was earlier.  Well...  this is it!!!

We have done our absolute best to get Mach 4 ready with as few issues as possible.  Obviously we have spent a great deal of time on it and even suffered criticism as a result.  But there is no possible way we can cover all of the potential issues as many of them might not show up due to how Brian or I operate Mach.  Each user has their own way of doing things and that is the point of this thread.  To find those problems!

The G code editor file load might be file sharing violation issue.  Two editors open maybe?  See if you can nail that one down as I have not see that.

Disable the control and the Mach config will light up. 


Mach4 General Discussion / Re: Comments about Mach4 in Demo
« on: April 30, 2014, 11:38:07 PM »
Can we expect conditional in the near future to make that useful.

We already have it.  Full Fanuc custom macro B with full G65 and G66 support as well.  It is a Mach 4 Industrial feature.  Not part of Mach 4 Hobby as Mach3 never had it.  However, it is turned on in the Beta build if you want to try it out.  SETVN and gcode labeling of subs is not finished yet.  Passing an E address as a parameter to a G65 is not legal either as we use E as scientific notation.

One thing to note is that CV is NOT interrupted with the conditional statement.  So the conditions are evaluated at the point at which the look ahead processes them.  So if you want the condition to be evaluated in sync with the machine run, then you must use an exact stop preparatory code right before the conditional statement.  That is the mode that we are currently using.  This mode has advantages in producing smooth movement with calculated moves.  The other option is that all conditional statements will break the CV chain ensuring that the evaluations are always synced with the machine run.  This mode is not used at this time and favors code path switches based on external inputs.  I will possibly make a switch so that a M code can control which mode.  But for now only the first mode it supported as I feel it is the most flexible because you can control when the evaluation happens with exact stop.

IF [condition] GOTO <seqnum>
IF [condition] <statement>
WHILE [condition] DO<level>

We support the standard 3 level nesting.

HIYA Steve, while you are looking at teh exscape sequence could you take a look at the values entry sequence ? As is on a line say tool #3 when you enter in a value an press ENTER it skips DOWN to the next Tool # line instead of to the right in order to finish adding values for THAT tool #.

It makes it very clumsy to add tool /fixture parameters as after each entry you then have to shift back up then move over to the right in order to add the next tool parameter.

I tested the M99 P## earlier but it stuck in the loop over and over in the sub call BUT the M99 Q seemed to work ok. Maybe I muffed the test somehow I will go back and retest the sequencing again.

The entry sequence in the grid is controlled by the window framework.  I can't change it.  I have already tried.  :(

Let me know the results of your M98/M99 test.  Because I had that working flawlessly at one point.  Looking at the code, any Q address on the M99 will be ignored.  It is definitely looking for a P address.  Also, keep in mind that the M99 P address must refer to a sequence number in the calling program, not a line number.


The bottom line is that I think you will have the same issues even if you spent money on new drives.  The thing we HAVE to figure out is getting encoder input to the Galil and then tune the servo loop.  If we have a drive that will move with a command signal and encoders reporting back position info to the Galil, then that should be doable.  We just have to get there.

Is the PC hooked up to the internet where I could remote control it?  With you on Skype by the machine so that we could talk our way through some tests?