Trying to read clamp unclamp signals from atc spindle.

This is where you talk about Macros, show examples of your macro scripting and SHARE handy segments of script code as examples.

Trying to read clamp unclamp signals from atc spindle.

Postby k7matrix » Thu Sep 29, 2022 5:44 am

Trying to setup a safe m6 macro that grabs the clamp unclamp signal from the spindle.
I have modified a macro and so far and have my dust boot and tool rack moving.
so far I haven't been able to get the pnp signal to work.


Code: Select all
while(!AS3.GetLED(131))      // check Collet has opened
while(AS3.GetLED(131))      // check Collet has closed
while(AS3.GetLED(132))      // check tool has locked
{



I greatly appreciate the help.

Code: Select all
//STEPCRAFT linear toolchanger code

// (1) STEPCRAFT port definition
int Chuckopenport = 4;
int Chuckopenpin = 14;
int Toollockcheckport = 2;
int Toollockcheckpin = 5;
int Checkcolletopenport = 2;
int Checkcolletopenpin = 4;
int Atcslidefwdport = 4;
int Atcslidefwdpin = 9;
int Dustshoeport = 4;
int Dustshoepin = 7;

double[] ToolX = new double[11];
double[] ToolY = new double[11];
ToolX[0] = 0; // Tool0 X position
ToolY[0] = 0; // Tool0 Y position

// (2) STEPCRAFT tool holder XY positions
ToolX[1] = 5; // Tool1 X position
ToolY[1] = 10; // Tool1 Y position
ToolX[2] = 10; // Tool2 X position
ToolY[2] = 10; // Tool2 Y position
ToolX[3] = 15; // Tool3 X position
ToolY[3] = 10; // Tool3 Y position
ToolX[4] = 1228.7; // Tool4 X position
ToolY[4] = 119.9; // Tool4 Y position
ToolX[5] = 1228.7; // Tool5 X position
ToolY[5] = 153.6; // Tool5 Y position

// (3) STEPCRAFT optional tools
ToolX[6] = 1228.7; // Tool6 X position
ToolY[6] = 186.4; // Tool6 Y position
// ToolX[7] = 100; // Tool7 X position
// ToolY[7] = 180; // Tool7 Y position
// ToolX[8] = 100; // Tool8 X position
// ToolY[8] = 180; // Tool8 Y position
// ToolX[9] = 100; // Tool9 X position
// ToolY[9] = 180; // Tool9 Y position
// ToolX[10] = 100; // Tool10 X position
// ToolY[10] = 180; // Tool10 Y position

// (4) STEPCRAFT basic parameters for tool change
double SafeZ = -1;
double Ztoolrelease = -3;
double Ztoolpickup = -3;
double Ytooloffset =  -1; //STEPCRAFT tool position offset for Y
double Ztooloffset = -1; //STEPCRAFT tool position offset for Z

int Newtool = exec.Getnewtool();
int Currenttool = exec.Getcurrenttool();

if(Newtool == -1) // If new tool number is -1 means a missing T code, so we need to stop here...
return;

// (5) STEPCRAFT max. number of tools possible
if(Newtool <0 || Newtool >6) // Tool number is out of range, so we need to stop here...
return;

if(Newtool == Currenttool) // Same tool was selected, so do nothing, stop here...
return;

if(!exec.GetLED(56)||!exec.GetLED(57)||!exec.GetLED(58)) // If machine was not homed then it is unsafe to move in machine coordinates, stop here...
{
  MessageBox.Show("The machine was not yet homed, do homeing before executing a tool change!");
  exec.Stop();
  return;
}

while(exec.IsMoving()){}

// Get current XY machine coordinates to return to this position at the end of the macro

double Xoriginalpos = exec.GetXmachpos();
double Yoriginalpos = exec.GetYmachpos();

// Stop spindle if running and Move Z up

exec.Stopspin();
exec.Code("G00 G53 Z"+ SafeZ); // Move Z up
while(exec.IsMoving()){}

if(Currenttool!=0)
{
  // Move to old tool position on XY plane
 
  //  dust shoe up
  exec.Setoutpin(Dustshoeport,Dustshoepin);
  exec.Wait(1000); // Wait one 1000msec
 
  // STEPCRAFT
  exec.Code("G00 G53 X" + ToolX[Currenttool] + " Y" + (ToolY[Currenttool] +Ytooloffset));
  while(exec.IsMoving()){}
 
  //atcfwd
exec.Setoutpin(Atcslidefwdport,Atcslidefwdpin);
exec.Wait(2000);
  // end of atcfwd

  // Drop current tool
  exec.Code("G00 G53 Z"+ Ztoolrelease); // Move Z axis down to tool holder position

  // STEPCRAFT
  exec.Code("G01 F500 G53 Y" + ToolY[Currenttool]); // Move Y axis to tool holder position

  while(exec.IsMoving()){}
  exec.Setoutpin(Chuckopenport, Chuckopenpin); // Open the chuck with pneumatic valve
  exec.Wait(1000); // Wait one 1000msec
 
  // STEPCRAFT
  exec.Code("G01 F500 G53 Z"+ (SafeZ + Ztooloffset)); // STEPCRAFT Move Z up for tool change
  while(exec.IsMoving()){}
}

if(Currenttool==0)
{

  // STEPCRAFT open chuck if tool = 0
  exec.Wait(200);
  MessageBox.Show("No tool in chuck. Correct?"); // STEPCRAFT safety question
  exec.Setoutpin(Chuckopenport, Chuckopenpin); // Open the chuck with pneumatic valve
  exec.Wait(1000); // Wait one 1000msec
}

if(Newtool!=0)
{
  // Move to new tool position on XY plane
  exec.Code("G00 G53 X" + ToolX[Newtool] + " Y" + ToolY[Newtool]);
  while(exec.IsMoving()){}

  // Pick new tool
  exec.Code("G01 F1000 G53 Z"+ Ztoolpickup); // Move Z axis down to tool holder position

  while(exec.IsMoving()){}
  exec.Clroutpin(Chuckopenport, Chuckopenpin); // Close the chuck with pneumatic valve
  exec.Wait(1000); // Wait one 1000msec
  exec.Clroutpin(Atcslidefwdport,Atcslidefwdpin);   // atc slide back
  exec.Wait(1000);


  while(exec.IsMoving()){}
  if(!exec.Ismacrostopped()) // If tool change was not interrupted with a stop only then validate new tool number
  {
  exec.Setcurrenttool(Newtool); //Set the current tool -> the new tool
  //MessageBox.Show("Tool change done."); // STEPCRAFT no message required
  }

  // STEPCRAFT
  exec.Code("G01 F1000 G53 Y" + (ToolY[Newtool] +Ytooloffset)); // Move Y axis to tool holder offset position

  exec.Code("G00 G53 Z"+ SafeZ); // Move Z up
  while(exec.IsMoving()){}
}

if(Newtool==0)
{
  // Move Z/axis up with open chuck
  exec.Code("G00 G53 Z"+ SafeZ); // Move Z up

  while(exec.IsMoving()){}
  exec.Clroutpin(Chuckopenport, Chuckopenpin); // Close the chuck with pneumatic valve
  exec.Wait(1000); // Wait one 1000msec

  while(exec.IsMoving()){}
  if(!exec.Ismacrostopped()) // If tool change was not interrupted with a stop only then validate new tool number
  {
  exec.Setcurrenttool(Newtool); //Set the current tool -> the new tool
  //MessageBox.Show("Tool change done."); // STEPCRAFT no message required
  }
  while(exec.IsMoving()){}
}
 
 
// Move back to start point

exec.Code("G00 G53 X" + Xoriginalpos + " Y" + Yoriginalpos);
while(exec.IsMoving()){}

// Measure new tool will go here....
// Getting the tool offset of the new tool
exec.Code("G43 H"+Newtool); // Load new tool offset

//  Dust shoe down
exec.Clroutpin(Dustshoeport, Dustshoepin);
exec.Wait(1000); // Wait one 1000msec


exec.Wait(200);

while(exec.IsMoving()){}
if(exec.Ismacrostopped()) // STEPCRAFT interruption
{
  exec.StopWithDeccel();
  MessageBox.Show("Tool change was interrupted by user!");
}
Attachments
M6.txt
(5.93 KiB) Downloaded 309 times
k7matrix
 
Posts: 2
Joined: Sun Apr 03, 2022 5:27 am

Return to Macros

Who is online

Users browsing this forum: No registered users and 9 guests