Advanced Search

Search Results (Searched for: )

  • jochen91
  • jochen91
11 Apr 2025 10:25 - 11 Apr 2025 10:34

Planning to Retrofit a Mazak Integrex200Y Mill-Turn Machine

Category: Advanced Configuration

I've played around with ChatGPT and got at least in my limited knowledge a usefull locking Kinematics file out of it.I used the millturn example and added switchable TCP functionality from the 5Axis demo. I still did not add die virtual Y axis. I would be realy thankfull if somebody could provide feedback if the supplied code is not 100% gibberish.

Since i'm still in the phase of feasibility study i dont have many great pictures of the machine. I live roughly 3hours away from it. If everything goes well, i hope i can post pictures in the upcoming months (if I'm lucky weeks). But here at least is a picture of the 40 Tool KM63 ATC. Best i can do so far ;)

#include "rtapi_math.h"
#include "kinematics.h"

static struct haldata {
    // Declare hal pin pointers used for xyzcb_tdr kinematics:
    hal_float_t *tool_offset_z;
    hal_float_t *x_offset;
    hal_float_t *z_offset;
    hal_float_t *x_rot_point;
    hal_float_t *y_rot_point;
    hal_float_t *z_rot_point;

    //Declare hal pin pointers used for switchable kinematics
    hal_bit_t   *kinstype_is_0;
    hal_bit_t   *kinstype_is_1;
    hal_bit_t   *kinstype_is_2;
} *haldata;

static int xyzcb_millturn_setup(void) {
#define HAL_PREFIX "xyzcb_millturn"
    int res = 0;
    // inherit comp_id from rtapi_main()
    if (comp_id < 0) goto error;
    // set unready to allow creation of pins
    if (hal_set_unready(comp_id)) goto error;

    haldata = hal_malloc(sizeof(struct haldata));
    if (!haldata) goto error;

    // hal pins required for xyzcb_millturn kinematics:
    res += hal_pin_float_newf(HAL_IN, &;(haldata->tool_offset_z), comp_id, "%s.tool-offset-z", HAL_PREFIX);
    res += hal_pin_float_newf(HAL_IN, &;(haldata->x_offset), comp_id, "%s.x-offset", HAL_PREFIX);
    res += hal_pin_float_newf(HAL_IN, &;(haldata->z_offset), comp_id, "%s.z-offset", HAL_PREFIX);
    res += hal_pin_float_newf(HAL_IN, &haldata->x_rot_point, comp_id, "%s.x-rot-point", HAL_PREFIX);
    res += hal_pin_float_newf(HAL_IN, &haldata->y_rot_point, comp_id, "%s.y-rot-point", HAL_PREFIX);
    res += hal_pin_float_newf(HAL_IN, &haldata->z_rot_point, comp_id, "%s.z-rot-point", HAL_PREFIX);

    // hal pins required for switchable kinematics:
    res += hal_pin_bit_new("kinstype.is-0", HAL_OUT, &;(haldata->kinstype_is_0), comp_id);
    res += hal_pin_bit_new("kinstype.is-1", HAL_OUT, &;(haldata->kinstype_is_1), comp_id);
    res += hal_pin_bit_new("kinstype.is-2", HAL_OUT, &;(haldata->kinstype_is_2), comp_id);

    // define default kinematics at startup for switchable kinematics
    *haldata->kinstype_is_0 = 1; // default at startup -> Milling Mode without TCP
    *haldata->kinstype_is_1 = 0; // -> Turning Mode
    *haldata->kinstype_is_2 = 0; // -> Milling Mode with TCP

    if (res) goto error;
    hal_ready(comp_id);
    rtapi_print("*** %s setup ok\n", __FILE__);
    return 0;
error:
    rtapi_print("\n!!! %s setup failed res=%d\n\n", __FILE__, res);
    return -1;
#undef HAL_PREFIX
}

EXPORT_SYMBOL(kinematicsType);
EXPORT_SYMBOL(kinematicsSwitchable);
EXPORT_SYMBOL(kinematicsSwitch);
EXPORT_SYMBOL(kinematicsInverse);
EXPORT_SYMBOL(kinematicsForward);

static hal_u32_t switchkins_type;

int kinematicsSwitchable() { return 1; }

int kinematicsSwitch(int new_switchkins_type) {
    switchkins_type = new_switchkins_type;
    rtapi_print("kinematicsSwitch(): type=%d\n", switchkins_type);
    // create case structure for switchable kinematics
    switch (switchkins_type) {
        case 0:
            rtapi_print_msg(RTAPI_MSG_INFO, "kinematicsSwitch:TYPE0\n");
            *haldata->kinstype_is_0 = 1;
            *haldata->kinstype_is_1 = 0;
            *haldata->kinstype_is_2 = 0;
            break;
        case 1:
            rtapi_print_msg(RTAPI_MSG_INFO, "kinematicsSwitch:TYPE1\n");
            *haldata->kinstype_is_0 = 0;
            *haldata->kinstype_is_1 = 1;
            *haldata->kinstype_is_2 = 0;
            break;
        case 2:
            rtapi_print_msg(RTAPI_MSG_INFO, "kinematicsSwitch:TYPE2\n");
            *haldata->kinstype_is_0 = 0;
            *haldata->kinstype_is_1 = 0;
            *haldata->kinstype_is_2 = 1;
            break;
        default:
            rtapi_print_msg(RTAPI_MSG_ERR, "kinematicsSwitch:BAD VALUE <%d>\n", switchkins_type);
            *haldata->kinstype_is_1 = 0;
            *haldata->kinstype_is_0 = 0;
            *haldata->kinstype_is_2 = 0;
            return -1; // FAIL
    }
    return 0; // ok
}

KINEMATICS_TYPE kinematicsType() {
    static bool is_setup = 0;
    if (!is_setup) xyzcb_millturn_setup();
    return KINEMATICS_BOTH; // set as required
}

int kinematicsForward(const double *j, EmcPose *pos, const KINEMATICS_FORWARD_FLAGS *fflags, KINEMATICS_INVERSE_FLAGS *iflags) {
    (void)fflags;
    (void)iflags;
    double x_rot_point = *(haldata->x_rot_point);
    double y_rot_point = *(haldata->y_rot_point);
    double z_rot_point = *(haldata->z_rot_point);

    double dz = *(haldata->z_offset);
    double dt = *(haldata->tool_offset_z);

    double sc = sin(j[3] * TO_RAD); // Replaced A-axis with C-axis
    double cc = cos(j[3] * TO_RAD); // Replaced A-axis with C-axis
    double sb = sin(j[4] * TO_RAD);
    double cb = cos(j[4] * TO_RAD);

    // Define forward kinematic models using case structure for switchable kinematics
    switch (switchkins_type) {
        case 0: // Milling Mode without TCP
            pos->tran.x = j[0];
            pos->tran.y = j[1];
            pos->tran.z = j[2];
            pos->c = j[3]; // Replaced A-axis with C-axis
            pos->b = j[4]; // B-axis
            break;
        case 1: // Turning Mode
            pos->tran.x = j[2];
            pos->tran.y = -j[1]; // Invert Y-axis
            pos->tran.z = j[0];  // Swap X and Z for Turning Mode
            pos->c = j[3]; // C-axis
            pos->b = j[4]; // B-axis
            break;
        case 2: // Milling Mode with TCP
            double px = j[0] - x_rot_point;
            double py = j[1] - y_rot_point;
            double pz = j[2] - z_rot_point - dt;

            pos->tran.x = cb * px + sc * sb * py - cc * sb * pz + cb * dz + sb * dz + x_rot_point;
            pos->tran.y = cc * py + sc * pz + y_rot_point;
            pos->tran.z = sb * px - sc * cc * py + cc * cc * pz + sb * dx + cb * dz + z_rot_point + dt;
            pos->c = j[3]; // C-axis
            pos->b = j[4]; // B-axis
            break;
    }
    pos->u = 0;
    pos->v = 0;
    pos->w = 0;
    return 0;
}

int kinematicsInverse(const EmcPose *pos, double *j, const KINEMATICS_INVERSE_FLAGS *iflags, KINEMATICS_FORWARD_FLAGS *fflags) {
    (void)iflags;
    (void)fflags;
    double x_rot_point = *(haldata->x_rot_point);
    double y_rot_point = *(haldata->y_rot_point);
    double z_rot_point = *(haldata->z_rot_point);

    double dx = *(haldata->x_offset);
    double dz = *(haldata->z_offset);
    double dt = *(haldata->tool_offset_z);

    double sc = sin(pos->c * TO_RAD); // Replaced A-axis with C-axis
    double cc = cos(pos->c * TO_RAD); // Replaced A-axis with C-axis
    double sb = sin(pos->b * TO_RAD);
    double cb = cos(pos->b * TO_RAD);

    double qx = 0;
    double qy = 0;
    double qz = 0;

    switch (switchkins_type) {
        case 0: // Milling Mode without TCP
            j[0] = pos->tran.x;
            j[1] = pos->tran.y;
            j[2] = pos->tran.z;
            j[3] = pos->c; // Add C-axis here
            j[4] = pos->b; // Add B-axis here
            break;
        case 1: // Turning Mode
            j[0] = pos->tran.z;  // Swapping X and Z axes for turning mode
            j[1] = -pos->tran.y; // Negating Y-axis for turning mode
            j[2] = pos->tran.x;  // Swapping X and Z axes for turning mode
            j[3] = pos->c; // Add C-axis here
            j[4] = pos->b; // Add B-axis here
            break;
        case 2: // Milling Mode with TCP
            qx = pos->tran.x - x_rot_point - dx;
            qy = pos->tran.y - y_rot_point;
            qz = pos->tran.z - z_rot_point - dz - dt;

            j[0] = cb * qx + sc * sb * qy - cc * sb * qz + cb * dx - sb * dz + x_rot_point;
            j[1] = cc * qy + sc * qz + y_rot_point;
            j[2] = sb * qx - sc * cc * qy + cc * cc * qz + sb * dx + cb * dz + z_rot_point + dt;
            j[3] = pos->c; // Add C-axis here
            j[4] = pos->b; // Add B-axis here
            break;
    }
    return 0;
}
 
  • vre
  • vre
11 Apr 2025 10:14 - 11 Apr 2025 10:22
Replied by vre on topic Un-lobotomizing a Maho MH600T

Un-lobotomizing a Maho MH600T

Category: CNC Machines

I haven't open thread for my machine.
I have also some small changes to your crowbar interpolator circuit:
added parallel to C2 capacitor 1uF
replaced the diode D3 with 5v6
replaced R2 with lower value i think 270R or 330R
and put soldered fuses 1A.
What changes have you done ?
Is this the updated shematic you have done or not uploaded yet ?
github.com/finngineering/sincos_interpol...master/schematic.pdf
  • PCW
  • PCW's Avatar
11 Apr 2025 02:43
Replied by PCW on topic 2. Spindle how is to do, to get it?

2. Spindle how is to do, to get it?

Category: HAL

Do you have one spindle working?
Can you post you hal/ini files?
  • richcolvin
  • richcolvin's Avatar
11 Apr 2025 00:37
Replied by richcolvin on topic 2. Spindle how is to do, to get it?

2. Spindle how is to do, to get it?

Category: HAL

Did you figure it out? I’m having the same issue
  • tcbmetalworks
  • tcbmetalworks
10 Apr 2025 21:23
Replied by tcbmetalworks on topic 10.5 x 25 cnc plasma table retrofit

10.5 x 25 cnc plasma table retrofit

Category: Computers and Hardware

I got the gantry together was alot of work  and planning to make sure it was all straight. It rolls pretty nicely you can feel the hop between rails a little but I think with the size of the machine the vibrations will smooth out. If it appears in the cut quality I will switch to linear rails. We are painting it right now looks like a brand new machine! A friend of mine may have some brushless dc motors hes getting from work for me, we will see otherwise likely going to go with china brand servo motors. Still alot of work ahead of me on this project, im hoping it will be a reliable machine cut around the clock without issues. 

  • PCW
  • PCW's Avatar
10 Apr 2025 19:44
Replied by PCW on topic Is my 7I97T broken?

Is my 7I97T broken?

Category: Driver Boards

That unfortunately  means that the Ethernet chip has been damaged
by large enough ESD that a spark jumped from the RJ45 housing to the
LED pin. This is why it's very important to ground the frame ground
connection, especially when testing and plugging/unplugging cables.

This is repairable by replacing the Ethernet chip.
 
  • Marc_P
  • Marc_P
10 Apr 2025 19:37
Replied by Marc_P on topic Is my 7I97T broken?

Is my 7I97T broken?

Category: Driver Boards

Yes, after the changes I've power cycled the card and also changed die IP address on the host.
With noch ethernet cable connected, the right LED of the RJ45 port light steady yellow.
  • PCW
  • PCW's Avatar
10 Apr 2025 19:23
Replied by PCW on topic Is my 7I97T broken?

Is my 7I97T broken?

Category: Driver Boards

Note that if you change jumper positions you must power cycle the 7I97T for the changes to take effect.

Also if you change the 7I97T card address, you must also change the host IP address.

Do you get any lights on the RJ45 connector when the cable is unplugged?
  • Marc_P
  • Marc_P
10 Apr 2025 19:16
Is my 7I97T broken? was created by Marc_P

Is my 7I97T broken?

Category: Driver Boards

Hello.
I've a problem with the connection to my 7i97t. 
This card is two weeks old and I'm still test and configure the card with LCNC.
At the beginning all works fine. I connected the card with the adress 10.10.10.10.
But today suddenly the connection didn't work anymore.
Actually nothing is connected to TB1-TB5. Only the ethernet cable on the 5V is connected. And only the LEDs CR9, CR23 and CR27 are on (yellow).
I've tested so far
- the jumper positions of W11,W12 (DN,DN / DN,UP / UP,UP)
- changed the ethernet cable
- changed the pc
But all with the same result: no answer with the ping command.
The two LEDs of the ethernet port are on (left green and right yellow) and when I ping the green LED is flashing simultaneously with the ping command.
Is the card really broken or is there still a possibility to make the card running?
Marc
  • my1987toyota
  • my1987toyota's Avatar
10 Apr 2025 18:56
Replied by my1987toyota on topic The dumification of humanity through internet

The dumification of humanity through internet

Category: Off Topic and Test Posts

Better make it a carrot. At least there's some irony with that.
  • langdons
  • langdons
10 Apr 2025 15:35

Inexpensive hardware setup: N95 Mini PC, Mesa 7I92T (Ethernet) and G540

Category: Computers and Hardware

Avoid Amazon whenever you can.

Their stuff is overpriced and often low-quality.


I recommend you install LinuxCNC from the official ISO image: www.linuxcnc.org/iso/linuxcnc_2.9.4-amd64.hybrid.iso
XFCE can be annoying tho.

NOTE: Chrome seems to download files really slowly, I recommend using cURL, wget, JDownloader, or Firefox.
  • Ismacr63
  • Ismacr63
10 Apr 2025 15:07 - 10 Apr 2025 15:07
config tool setter was created by Ismacr63

config tool setter

Category: QtPyVCP

I'm having a problem with the tool setter configuration. I don't know if it's just me or if it's a known problem, although I haven't found anything similar on the forum.

When I modify a tool setter parameter, I click "update tool setter parameters" and it's saved. When I close Probe Basic and reopen it, the configuration changes to the previous one, and spidnle in the var file is reset to zero.
As a result, the milling machine has already crashed several times, until I realized that for some reason the configuration was out of order.

I'm also getting the error shown in one of the images when I turn Probe Basic on and off.

The error in the image shows the tool setter settings I entered, and the other image shows the settings that are set when I close and reopen Probe Basic.

I'm on the stable branch.
  • tommylight
  • tommylight's Avatar
10 Apr 2025 14:26
Replied by tommylight on topic test post

test post

Category: Off Topic and Test Posts

E-mails are not working today, last i got was last night around 10PM my time.
It's 16:26PM now.
  • tommylight
  • tommylight's Avatar
10 Apr 2025 14:24
Replied by tommylight on topic Linux conversion for MDX540???

Linux conversion for MDX540???

Category: General LinuxCNC Questions

I know i would.
Displaying 2956 - 2970 out of 26373 results.
Time to create page: 0.319 seconds
Powered by Kunena Forum