Advanced Search

Search Results (Searched for: )

  • andypugh
  • andypugh's Avatar
11 Apr 2025 12:59
Replied by andypugh on topic Strange behaviour of custom component

Strange behaviour of custom component

Category: Advanced Configuration

I think we need to see the code.
  • Aciera
  • Aciera's Avatar
11 Apr 2025 12:44

Planning to Retrofit a Mazak Integrex200Y Mill-Turn Machine

Category: Advanced Configuration

The easiest way to find out if your kinematic is gibberish is to try to compile and install it using 'halcompile'. Verifying the kinematic model is of course more difficult and usually requires either a vismach model of the machine or the machine itself.
  • JT
  • JT's Avatar
11 Apr 2025 11:04
Replied by JT on topic Flexible GUI

Flexible GUI

Category: Other User Interfaces

Any chance of adding a "save" button for the code viewer? I see the "save_as_pb", I'd rather just overwrite the existing file without a prompt if it's possible.
 

I never thought about that but it makes sense because you can edit the nc file in Flex you should be able to save your edits then reload.

Save menu item and button added.

JT
  • 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.
Displaying 3691 - 3705 out of 26044 results.
Time to create page: 0.329 seconds
Powered by Kunena Forum