Community
HSM Post Processor Forum
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Emco Maier Compact 6p 120p lathe post processor including results

33 REPLIES 33
Reply
Message 1 of 34
DaneelSE
5329 Views, 33 Replies

Emco Maier Compact 6p 120p lathe post processor including results

Welcome to my second post processor project.

The Machine:

Emco Maier Compact 6p sometimes called Compact 6 CNC P or Compact 120p

The controller is an old TM01, so beware if your machine has a more modern TM02

My lathe's controller software revision is:

AC03.02/DC03.05

Some basic facts about the machine:

Working area

  • Swing over bed 180mm
  • Swing over cross slide 75mm
  • Max length between centers 180mm
  • Max diameter of workpiece 90mm

Main spindle

  • Through hole 21mm
  • Speed Range 80 - 4000 rpm
  • Manual chuck 80 / 85mm
  • Pneumatic power Chuck (without through hole)
  • Pneumatically operated tail stock

Automatic tool turret

  • 4 external tool holders (12mm shank)
  • 4 internal tool holders (16mm bore)

Main drive

  • 2 kW DC motor

Feed motors

  • Feed 1-1200 mm/min
  • Resolution 0.001 mm
  • Feed Power 2000 N
  • Rapid traverse 1200 mm/min

As the new forum don't permit editing of posts (I think) the updates will be below newer posts. A useful status update should have a summary of:

What's been tested, the result, suggestions or questions on how to proceed and maybe a attached file of the success, disaster and or a new post processor file.

 

At the moment the postprocessor is in early development and can't be used.

What is working (afaik):

  • Program header
  • Formatting of code (NXXXX<space><space>G-code)
  • Linear interpolations

What is missing or not working:

  • Tool change, Need some type sequence here, maybe M00 then move to safe position, make tool change and force new G00 to entry position
  • Ending of program move to safe position, reset offsets and turn off spindle
  • Drilling cycle
  • Threading cycle
  • More cycles?
  • Update the description in the post
33 REPLIES 33
Message 2 of 34
ArjanDijk
in reply to: DaneelSE

Hi Daneel.

 

I created a post for a Emco 240P (cant share it because it was a commercial post for my customer), but the main challenge in this post is to define and/or cancel the workoffsets. This needs to happen in the right sequence. Otherwise you will retract to a safe position with the tool length compensation on and it will run into its endswitches.

 

Good luck!

 

PS; Where are you located? I know there are a lot EMCO 120/240p machines in Belgium.


Inventor HSM and Fusion 360 CAM trainer and postprocessor builder in the Netherlands and Belgium.


Message 3 of 34
DaneelSE
in reply to: ArjanDijk


@ArjanDijk wrote:

main challenge in this post is to define and/or cancel the workoffsets. This needs to happen in the right sequence. Otherwise you will retract to a safe position with the tool length compensation on and it will run into its endswitches.

 

This is something I will have to experiment with. Can you give an example of a sequence that would fail?

Message 4 of 34
ArjanDijk
in reply to: DaneelSE

Going to toolchange position with the tooloffset and length offset active will fail. Z300 and X280 were the values in the machine I saw, but I had to cancel the tool with T0100 for tool 1 and G56 to cancel G59 length offset. 

 

You can read it in the EMCO manual, but its different from how fanuc works for example


Inventor HSM and Fusion 360 CAM trainer and postprocessor builder in the Netherlands and Belgium.


Message 5 of 34
DaneelSE
in reply to: DaneelSE

Thanks! That is easy enough to replicate and test.
Message 6 of 34
DaneelSE
in reply to: DaneelSE

A small update, no results yet:

 

As far as I know every machine will have slightly differennt home positions, so these have to be configurable from the normal post-processor user interface.

 

Added user-defined properties to the postprocessor for 

  machineHomeX: 11, // Home Position X for retract
  machineHomeY: 12, // Home Position Z for retract
  machineRetractPlane: 13, // Safe Z to revolve turret

Added some debug output in onOpen() function is used to populate machineConfiguration

// Create or add parameters to MachineConfiguration
  machineConfiguration.setHomePositionX(properties.machineHomeX);// Might want to use toPreciseUnit(-29.0, IN)
  machineConfiguration.setHomePositionY(properties.machineHomeY);
  machineConfiguration.setRetractPlane(properties.machineRetractPlane);
  if (deBugPost == 1) {
    writeWords(machineConfiguration.getXML());
  } 

which yields in the following output

!DEBUG: 1 Emco-Compact 6p_ver3.cps:242
<?xml version="1.0"?>
<machine xmlns="http://www.hsmworks.com/xml/2009/machine" version="1.0"><machining milling="yes" turning="no" wire="no" jet="no"/><tooling toolChanger="yes" toolPreload="yes" numberOfTools="100" maximumToolLength="0mm" maximumToolDiameter="0mm" maximumToolWeight="0kg"/><machiningTime ratio="1" toolChangeTime="15s"/><home x="11mm" y="12mm" z="13mm"/><capabilities workOffsets="100"/><spindle axis="0 0 1"/><post/><simulation wcs="0mm 0mm 0mm" retractOnIndexing="yes" shortestAngularRotation="yes"/><axis id="X" link="head"/><axis id="Y" link="head"/><axis id="Z" link="head"/></machine>

This is later used in onClose() to get the machine to stop at the correct position

Message 7 of 34
DaneelSE
in reply to: DaneelSE

Another small update.

The feeds for G95 are in micrometeres/revolution and mm/minute for G94 so some type of scaling factor had to be introduced to output corresponding numericals.

 

Another user property was added, could and maybe should be a fixed property,

properties = {
  writeMachine: true, // (changed from false) write machine
  writeTools: true, // writes the tools
  feedScale: 1000, //Scaling for Emco when using feed in um/rev instead of default mm/rev with G95
};

The actual scaling is done in getFeed function and some comment output that will still be enabled when debugging is turned off to track this was added.

function getFeed(f) {
	writeComment(["Entering getFeed " , conditional(currentSection.feedMode == FEED_PER_REVOLUTION, "FEED_PER_REVOLUTION is true")])
  if (activeMovements) {
    var feedContext = activeMovements[movement];
    if (feedContext != undefined) {
      if (!feedFormat.areDifferent(feedContext.feed, f)) {
        if (feedContext.id == currentFeedId) {
          return ""; // nothing has changed
        }
		// Add functionality for scaling when doing um/rev
		writeComment(["Entering forceFeed from getFeed. firstFeedParameter is ", firstFeedParameter  , conditional(currentSection.feedMode == FEED_PER_REVOLUTION, "FEED_PER_REVOLUTION is true")])
        forceFeed();
        currentFeedId = feedContext.id;
        return "F#" + (firstFeedParameter + feedContext.id);
      }
    }
    currentFeedId = undefined; // force Q feed next time
  }
  writeComment(["Returning ", f ,"from getFeed due to no activeMovements " , conditional(currentSection.feedMode == FEED_PER_REVOLUTION, "FEED_PER_REVOLUTION is true")])
  if (currentSection.feedMode == FEED_PER_REVOLUTION){
	return feedOutput.format(f*properties.feedScale); // use feed value * scaling
  } else {
    return feedOutput.format(f); // use feed value	  
  }
}

It is still unknown when the forcefeed() function will be triggered, so these comments will be crucial during initial runs to track this.

 

Next item to tackle will be some air cutting with the outputs to verify functionality and maybe try some tool changes.

Message 8 of 34
DaneelSE
in reply to: DaneelSE

I forgot to mention that I might have found a bug in the original generic post.

in function onOpen() there is a code block to initialize absolute coordinates and feed per min that uses G95, this should possibly be G94. The normal user would see a silly spinup of the spindle in the initial movements of each operation as a result of this.

  // absolute coordinates and feed per min
  if (properties.type == "A") {
    writeBlock(gFeedModeModal.format(98), gPlaneModal.format(18));
  } else {
//    writeBlock(gAbsIncModal.format(90), gFeedModeModal.format(95), gPlaneModal.format(18));
//    writeBlock(gFeedModeModal.format(95)); Bug? see page 39 in Fanuc 0 Lathe Operator Manual 61394e document
    writeBlock(gFeedModeModal.format(94));
  }

FeedPerMinute_for_A_B_and_C.png

 

 

Message 9 of 34
DaneelSE
in reply to: DaneelSE

Summary as of untested version 7

At the moment the postprocessor is in early development and can't be used.

What is working (afaik):

  • Program header
  • Formatting of code (NXXXX<space><space>G-code)
  • Optional stop implemented with M00
  • Linear interpolations
  • Circular interpolations
  • Tool change formatting
  • Ending of program move to safe position, reset offsets and turn off spindle

What is missing or not working:

  • Tool change, Need some type sequence here, maybe M00 then move to safe position, make tool change and force new G00 to entry position
  • Ending of program move to safe position, reset offsets and turn off spindle
  • Drilling cycle
  • Threading cycle
  • More cycles?
  • Update the description in the post
  • WCS above 1 does not seem compatible. Emco has WCS 1(G54) and 2(G55) in one modal group and 3-5(G57-59) in another. G53 cancels 1 and 2 and G56 cancels 3-5
Message 10 of 34
DaneelSE
in reply to: DaneelSE

Tool change tackled and I hope it is ok like this.

 

Question, has anyone seen a full revolving toolhead being simulated in fusion?

 

I went out to the workshop and started playing with the lathe. My plan was to insert some tools and get them measured in and later remove them and the chuck to cut some air. I ended up checking X and Z calibration for a couple of hours before I had some other obligations. I guess there is always a tomorrow 🙂

 

Other changes:

Removed the debug output for now. 

Left some warning messages and statuses comments.

 

Summary as of untested version 8

At the moment the postprocessor is in early development and can't be used.

What is working (afaik):

  • Program header
  • Formatting of code (NXXXX<space><space>G-code)
  • Optional stop implemented with M00
  • Linear interpolations
  • Circular interpolations
  • Tool change
  • Ending of program move to safe position, reset offsets and turn off spindle

What is missing or not working:

  • Tool change, Need some type sequence here, maybe M00 then move to safe position, make tool change and force new G00 to entry position
  • Ending of program move to safe position, reset offsets and turn off spindle
  • Drilling cycle
  • Threading cycle
  • More cycles?
  • Update the description in the post
  • WCS above 1 does not seem compatible. Emco has WCS 1(G54) and 2(G55) in one modal group and 3-5(G57-59) in another. G53 cancels 1 and 2 and G56 cancels 3-5
Message 11 of 34
ArjanDijk
in reply to: DaneelSE

  • WCS above 1 does not seem compatible. Emco has WCS 1(G54) and 2(G55) in one modal group and 3-5(G57-59) in another. G53 cancels 1 and 2 and G56 cancels 3-5

Yes, thats true. You need to organize this in a different way. In fact the normal workoffset G54-55-56 do not have to do much with the emco G53-54. For example, in Fanuc you can call G54 as much as you want, not in EMCO.


Inventor HSM and Fusion 360 CAM trainer and postprocessor builder in the Netherlands and Belgium.


Message 12 of 34
DaneelSE
in reply to: DaneelSE

 

Threadturning cycle is now implemented. It would be very nice with a code review of this as it did not come easy.

 

 

Other changes:

Wrote comments inside a numbered block. I hope this is accepted by Emco TM01.

Removed some empty writeln("")'s.

 

Summary as of untested version 14

At the moment the postprocessor is in early development and can't be used.

What is working (afaik):

  • Program header
  • Formatting of code (NXXXX<space><space>G-code)
  • Optional stop implemented with M00
  • Linear interpolations
  • Circular interpolations
  • Tool change
  • Thread turning
  • Ending of program move to safe position, reset offsets and turn off spindle

What is missing or not working:

  • Tool change, Need some type sequence here, maybe M00 then move to safe position, make tool change and force new G00 to entry position
  • Ending of program move to safe position, reset offsets and turn off spindle
  • Drilling cycle
  • Thread turning
  • Tapping cycle
  • More cycles?
  • Update the description in the post
  • WCS above 1 does not seem compatible. Emco has WCS 1(G54) and 2(G55) in one modal group and 3-5(G57-59) in another. G53 cancels 1 and 2 and G56 cancels 3-5
Message 13 of 34
DaneelSE
in reply to: DaneelSE

 

Finally some real results!

https://youtu.be/xZYXdlQ7x0w

 

I have as of version 16 at least succesfully used:

  • Face turning
  • Profile turning
  • Tool Changes
  • Thread turning
  • Comments in numbered blocks

I am very satisfied with results so far and is very hopeful that this might become a useful post processor.

 

Changes:

Fractional step downs in canned thread turning cycle (G85) did not work, so I had to create a new format that I might reuse for all occasions where 1/1000mm are used.

 

Starting point before G85 has to be slightly above the finished thread. I picked 2*total thread depth and it at least works.

 

Summary as of version 16

At the moment the postprocessor is in early development and can be used with great care and at your own risk.

  1. Cut air
  2. Single step through with reduced feeds
  3. Automatic with reduced feeds
  4. Supervised with hand on stop

What is working (afaik):

  • Program header
  • Formatting of code (NXXXX<space><space>G-code)
  • Optional stop implemented with M00
  • Linear interpolations
  • Circular interpolations
  • Tool change
  • Thread turning
  • Ending of program move to safe position, reset offsets and turn off spindle

What is missing or not working:

  • Tool change, Need some type sequence here, maybe M00 then move to safe position, make tool change and force new G00 to entry position
  • Ending of program move to safe position, reset offsets and turn off spindle
  • Drilling cycle
  • Thread turning
  • Tapping cycle
  • More cycles?
  • Update the description in the post
  • WCS above 1 does not seem compatible. Emco has WCS 1(G54) and 2(G55) in one modal group and 3-5(G57-59) in another. G53 cancels 1 and 2 and G56 cancels 3-5
Message 14 of 34

Do you know off hand if this post will work for a EMCO PC 55 turn, lathe?  I am running fanuc 21, emco seems to use "C" level gcode... I will give this a go regardless, but want you opinion. Thanks for your work on this!

Message 15 of 34
benscale160
in reply to: DaneelSE

Thank you for taking on this project. I acquired a 6p lathe with the T1 controller about 18 months ago. Tore it down and completely rebuilt it. Have learned a lot about this machine and am even starting to understand the manual programming. If there is anything I can do to help out, let me know as I have managed to acquire lots of documentation including a very dated but useful instructional video series shot during a class session at emco back in the 80s.

My software version is a few points behind yours. Ac 03.00 dc 03.00. Hopefully this will not make much of a difference with the PP.

Also are you having any issues with the alarm code 02 main drive not ready? I'm running a phsse converter as 3ø is not available at the house. Turns out I just had to adjust the spindle acceleration parameter.

Ben Renard
San Diego, CA.
Message 16 of 34

To be honest I don't know the answer to this. My gut feeling is that Fanuc 21 is very different and should be much more common and easier to find postprocessors for.

@nordicfabrication wrote:

Do you know off hand if this post will work for a EMCO PC 55 turn, lathe?  I am running fanuc 21, emco seems to use "C" level gcode... I will give this a go regardless, but want you opinion. Thanks for your work on this!


 

Message 17 of 34
DaneelSE
in reply to: benscale160


@benscale160 wrote:
Thank you for taking on this project. I acquired a 6p lathe with the T1 controller about 18 months ago. Tore it down and completely rebuilt it. Have learned a lot about this machine and am even starting to understand the manual programming. If there is anything I can do to help out, let me know as I have managed to acquire lots of documentation including a very dated but useful instructional video series shot during a class session at emco back in the 80s.

So far I haven't stumbled upon any roadblocks, but my activity during the winter is very low (actually zero) on this project. I think the most important is for people to safely and carefully try out the parts that seems to be working for me. I guess next step would be to try some small additions or changes them self and contribute working or non working ideas and code back to this thread.


@benscale160 wrote:
My software version is a few points behind yours. Ac 03.00 dc 03.00. Hopefully this will not make much of a difference with the PP.

Also are you having any issues with the alarm code 02 main drive not ready? I'm running a phsse converter as 3ø is not available at the house. Turns out I just had to adjust the spindle acceleration parameter.

I can't say exactly what changed between our revisions but someone else may. I have had some drive alarms but I can't remember them, or what caused them. The change of your acceleration parameters would be nice if you could document on how you did them. I can't see any harm in posting it in this thread.

Message 18 of 34
benscale160
in reply to: DaneelSE

I will be honest, I have not taken the time to look and see how the post processor actually works. I suppose with some study time it would all make sense.  

 

As for the spindle acceleration setting change, sure I will share the procedure.

 

As a little background, all the "software" is loaded from the MSD data that came with the machine. It is unique to each machine as the t1 controller is used for both the lathe and mill.

 

Every parameter can be manually edited by accessing the monitors. The monitors are divided into two categories. User and Guarded.  User parameters are ones that if changed would only cause small issues if entered incorrectly. One of the user monitors that I often times reset is the part counter. Guarded monitors are those that if modified could fundamentally change the way the machine operates.

 

How do you access each one? Simple. To Access the User Monitors, go into Edit mode and key in MON then enter

To access the guarded monitors, Key in MONITOR then enter.

 

Use the shift key to gain access to letters on the top half of the keys

 

Once in Monitor mode, the machine will prompt you with a Mo.  Asking  you for which monitor you want to amend.

 

In the case of the spindle acceleration parameter, it is a guarded monitor. Type in MONITOR and enter. When Mo is prompted enter M then enter

 

M0 will appear with a value. (this is not to be confused with Mo. M0 is the first monitor bit in the M monitor).

 

press store next and M1 will appear. this is the Spindle acceleration parameter.  press clear word and enter the desired value.

 

When I initially edited this value, I believe it was 8 or 9.  This value would cause the machine to alarm out when the spindle was started. With some experimenting, I found that a value of 3 or 4 works well.  I am running a phase converter, so this may have some effect as to how the spindle operates vs a machine on utility 3 phase.

 

On some of the newer software versions, the initial value may be something like 208, again, just decrease the value until the results are satisfactory.

 

Hope this helps

 

Ben 

Message 19 of 34
DaneelSE
in reply to: DaneelSE

I have made some updates to the post processor again...

I have as of version 21 at least succesfully used:

  • Drill
  • Drill with chip breaking
  • Parting
  • Dwell operations
  • Face turning
  • Profile turning outside
  • Profile turning inside
  • Tool Changes
  • Thread turning
  • Comments in numbered blocks

Changes:

This version has quite a few changes of the internals regarding G17, G18 (and G19). Although the Emco does not support these modes we still have to keep an internal state of this in the postprocessor to minimize the changes needed.

I have tried a few drilling operations, so far they seem fine but I expectr more work to be done in this area over time.

 

Summary as of version 21

At the moment the postprocessor is in early development and can be used with great care and at your own risk.

  1. Cut air
  2. Single step through with reduced feeds
  3. Automatic with reduced feeds
  4. Supervised with hand on stop

What is working (afaik):

  • Program header
  • Formatting of code (NXXXX<space><space>G-code)
  • Optional stop implemented with M00
  • Linear interpolations
  • Circular interpolations
  • Tool change
  • Thread turning (only external tested)
  • Dwell operations
  • Parting operations
  • Chip breaking and basic drill cycle
  • Ending of program move to safe position, reset offsets and turn off spindle

What is missing or not working:

  • Tool change, Need some type sequence here, maybe M00 then move to safe position, make tool change and force new G00 to entry position
  • Ending of program move to safe position, reset offsets and turn off spindle
  • Drilling cycle
  • Thread turning
  • Tapping cycle
  • More cycles?
  • Update the description in the post
  • WCS above 1 does not seem compatible. Emco has WCS 1(G54) and 2(G55) in one modal group and 3-5(G57-59) in another. G53 cancels 1 and 2 and G56 cancels 3-5

If you use this post and have any kind of experience from it, please let me and other readers know!

Message 20 of 34

Hi Daneel,

Thanks for making the Emco post, I'm using a 120P with a T1 control.

Can you tell me how you are creating your drilling cycles?  I'm getting some odd results in the post.

I would expect to get something like this

 

N46 T0808
N48 G97 S1000 M3
N50 G95
N52 G0 X0 Z46.
N54 G1 Z16.15 F300
N56 G0 Z46.
N58 X30. Z40.

 

But instead I'm getting this:

N0270 T0808
N0280 G54
N0290 G94
N0300 G97 S3000 M03
N0310 G00 X0. Z50.24
N0320 G00 Z40.08
N0330 Z50.24
N0340 Z40.08
N0350 G87 Z18.897 F1000.
N0360 G00 X0. Z50.24

 

In the simulation the drill toolpath is in the correct position, but in the post it is too far out in Z.

Any ideas?

Cheers,

Jacob

 

 

Can't find what you're looking for? Ask the community or share your knowledge.

Post to forums  

Autodesk Design & Make Report