Advanced Search

Search Results (Searched for: )

  • 3404gerber
  • 3404gerber
26 Feb 2026 20:17
Replied by 3404gerber on topic CiA 402 Folder Missing

CiA 402 Folder Missing

Category: EtherCAT

According to github, that's a part of the feb 15 2025 commit:

-  hal_bit_t *request_cia402_homing;   // output requests homing (connect to cia402.n.home)
-  hal_bit_t *is_cia402_homing;        // input verifies custom homing (connect to cia402.n.stat_homing)
-  hal_bit_t *cia402_homing_finished;  // input from servo drive after homing (connect to cia402.stat_homed)
+ hal_bit_t *request_custom_homing;   // output requests homing (connect to cia402.n.home)
+ hal_bit_t *is_custom_homing;        // input verifies custom homing (connect to cia402.n.stat_homing)
+ hal_bit_t *custom_homing_finished;  // input from servo drive after homing (connect to cia402.n.stat_homed)

So if your example is older than this and that you compiled the comp from source, yes you have to use the current name. And if HAL tells you the pin doesn't exist, then it very likely doesn't exist.
  • NWE
  • NWE's Avatar
26 Feb 2026 20:10
Replied by NWE on topic Robot Arm and Controller

Robot Arm and Controller

Category: CNC Machines

The specs they list for that mini control box makes me think it is a servomotor amplifier. I see ratings of 48VDC 42A max and 48VDC 104A max on several models of the control box shown at your second link.

Interesting possibilities.
  • DerKlotz
  • DerKlotz
26 Feb 2026 20:09

Need to install newest Linux Debian Bookworm with the newest Linuxcnc preempt-rt

Category: Installing LinuxCNC

So is it normal? As i remember from my old PC there were mm shown... and G21 is mm, right?
  • T_D
  • T_D
26 Feb 2026 20:08
Probleme mit NativeCam was created by T_D

Probleme mit NativeCam

Category: NativeCAM

 Hallo zusammen, ich habe NativeCam auf meinem System installiert, jedoch läuft es bei mir bisher nicht wie erwartet. Konkret: Im Verfahrbereich / Geometry Tab sehe ich beim Ändern der Geometrie keine Änderungen. Wenn ich ein neues Werkstück hinzufüge, wird nicht einmal die Blockform angezeigt. Ich kann zwar Code erstellen, aber sobald ich diesen starten will, erscheint immer der Fehler: Word O gesuchtbzw. der G-Code scheint generell einen Fehler zu verursachen. Ich habe bereits geprüft, dass die Installation abgeschlossen ist, konnte den Fehler jedoch nicht finden. Hat vielleicht jemand von euch ähnliche Probleme gehabt oder kennt eine Lösung für dieses Verhalten? Jede Hilfe oder jeder Hinweis wäre super! Vielen Dank schonmal!



Hi everyone, I have installed NativeCam on my system, but it is not working as expected. Specifically: In the motion/geometry area, I don’t see any changes when I modify the geometry. When I add a new workpiece, the block form is not displayed at all. I can generate the code, but when I try to start it, I always get the error: Word O expected or the G-code seems to cause an error in general. I’ve verified that the installation completed successfully, but I haven’t been able to identify the problem. Has anyone experienced similar issues or knows a solution for this behavior? Any help or advice would be greatly appreciated!
 
  • PCW
  • PCW's Avatar
26 Feb 2026 19:48
Replied by PCW on topic Trying to set up position control mode

Trying to set up position control mode

Category: HAL

The wiring does not look right to me, Don't those drives have differential inputs?

If they are differential, the 7I95 Step/Dir connections are wrong.
  • Konstantin
  • Konstantin
26 Feb 2026 19:31
Replied by Konstantin on topic CiA 402 Folder Missing

CiA 402 Folder Missing

Category: EtherCAT

The cables I use are standard CAT5e patch cords, 1.5m long and the excess length is in loops.

The topology is as follows - one cables from the computer is connected to the first servo drives and all the others are daisy chained.

About the name of pin that @3404gerber mentioned. I was thinking if should I change the pin name from 'cia' to 'custom' but you have a working configuration with 'cia' in the name. Why should it be different with my cia402 home component? Perhaps, the name was updated after you got it working.
  • jblanscett
  • jblanscett
26 Feb 2026 19:23
Replied by jblanscett on topic Trying to set up position control mode

Trying to set up position control mode

Category: HAL

I checked on the drive side and it looks clean as well.
  • tommylight
  • tommylight's Avatar
26 Feb 2026 18:44

After Month of machining without any problems -Positionerror and no more moving

Category: General LinuxCNC Questions

You are welcomed, always.
Be mindful of the wiring and shielding, since your machine was working fine, i doubt you have interfernce from VFD/spindle as they do produce a lot of EMI, so try to arrange spindle and high voltage wiring as far from low power/signal wiring, also use ferrite beads on the spindle motor wires near the VFD.
  • tommylight
  • tommylight's Avatar
26 Feb 2026 18:37
Replied by tommylight on topic Maho MH-400 Retofit

Maho MH-400 Retofit

Category: Deutsch

Apparently not, despite having the same model.
The one you linked has motors on all axis and ballscrews, the one here from explanation has a single motor and a gearbox to switch between axis.
Can you post some pictures of the machine?
  • Jensner
  • Jensner
26 Feb 2026 18:26

After Month of machining without any problems -Positionerror and no more moving

Category: General LinuxCNC Questions

OK sounds nice.
I also didn`t think that this cards realy break.
So i will test this card on my new mill if it`s ready and hope it will work in a new envirement.

Thanks Tommy 
  • tommylight
  • tommylight's Avatar
26 Feb 2026 18:20
Replied by tommylight on topic Trying to set up position control mode

Trying to set up position control mode

Category: HAL

We have also looked at the signals from an oscilloscope and are getting nice clear step waves.

Check at the drive side.
  • tommylight
  • tommylight's Avatar
26 Feb 2026 18:19

After Month of machining without any problems -Positionerror and no more moving

Category: General LinuxCNC Questions


So it's a new experience that MESA cards can also break down sometimes. 
 

No they do not break, at least none of over 70 or 80 or more i have in daily use, they never break, never fail, in over 15 years.
Most of them are on huge industrial machines, some on plasma machines that are the worst environment regarding EMI, i have Mesa 7i92 wired through 6 meters of cable to plasma source with no BOB, directly to Mesa inputs, etc etc.
They always, always fail due to miss wiring or lack of proper shielding/grounding.
  • Bari
  • Bari's Avatar
26 Feb 2026 18:17
Robot Arm and Controller was created by Bari

Robot Arm and Controller

Category: CNC Machines

www.frtech.fr/

www.frtech.fr/Robotcontrolsystem

I heard that this controller runs on Linux. I only saw the web based interface to the controller so I did not reach a command line to be able to check. The robot arm is very jittery through some motions. I read on some other forum that the way they fixed it was to replace the motors and drives and run it with LinuxCNC. I can easily do this but I am wondering if anyone else here has worked with these robots or controllers before and what their experiences were. Does this actually run Linux?
 
  • andrax
  • andrax's Avatar
26 Feb 2026 17:33

Technical questions about CIA402 and homecomp.comp on A6

Category: EtherCAT

I have continued to work on this issue.
Since I don't know “C,” I asked chatgpt for help. Unfortunately, with limited success. On the one hand, chatgpt provides good suggestions for implementation, but on the other hand, it suffers from Alzheimer's. It constantly forgets important components when creating the code. 
So it's useless as a programming aid.
Nevertheless, after many attempts, I managed to create a code that basically corresponds to my ideas of the logical sequence. Unfortunately, it cannot be created and crashes with massive errors. 
Could someone please help me troubleshoot this?
component cia402_safety_homecomp "cia402 homing module";

description """
A homing module for cia402 devices buildable with halcompile.
This module should be used with the provided cia402.comp

\\fBHOMING_BASE\\fR must be #defined and must point to a valid homing.c file,
an example of a customized homing module is built. This module
creates input hal pins joint.n.request-cia-homing that enables an
alternate joint homing state machine for requested joints. A hal output
pin joint.N.is_cia-homing verifies selection"

If \\fBHOMING_BASE\\fR is not #defined, an actual homing scheme is
\\fBnot\\fR implemented but all necessary functions are included as
skeleton code. (All joints are effectively homed at all times and
cannot be unhomed).

See the source code file: src/emc/motion/homing.c for the baseline
implementation that includes all functions for the default \\fBhomemod\\fR
module.

This cia402 homing component can be built and installed with
halcompile and then substituted for the default homing module
(\\fBhomemod\\fR) using:
Sor by inifile setting: \\fB[EMCMOT]HOMEMOD=user_homecomp\\fR

\\fBNote:\\fR If using a deb install:
1) halcompile is provided by the package linuxcnc-uspace-dev
""";

pin out bit is_module = 1; // required by halcompile
pin out bit homing_error; // new pin to signal homing error
pin in float cia_homing_timer1; // Timer for homing start timeout
pin in float cia_homing_timer2; // Timer for movement check timeout

license "GPL";
author "me and chatgpt";
option homemod;
option extra_setup;


/* To incorporate default homing.c file from a local git src tree:
** enable #define HOMING_BASE set to the path to the current homing.c file.
*/

#define HOMING_BASE /home/ich/linuxcnc/Sicherung/cia402/homing.c
#define STR(s) #s
#define XSTR(s) STR(s)

#include "motion.h"
#include "homing.h"

static char *home_parms;
RTAPI_MP_STRING(home_parms, "Example home parms");

// EXTRA_SETUP executed before rtapi_app_main()
EXTRA_SETUP()
{
    rtapi_print_msg(RTAPI_MSG_ERR, "HomeComp Started\n");
    return 0;
}

//=====================================================================
#ifdef HOMING_BASE
#define USE_HOMING_BASE XSTR(HOMING_BASE)

// Disable duplicate symbols from homing.c
#define CUSTOM_HOMEMODULE
#include USE_HOMING_BASE

// CIA Status Word
typedef union
{
    struct
    {
        unsigned char ReadyToSwitchOn : 1;
        unsigned char SwitchOn : 1;
        unsigned char OperationEnabled : 1;
        unsigned char Fault : 1;
        unsigned char VoltageEnabled : 1;
        unsigned char QuickStop : 1;
        unsigned char SwitchOnDisabled : 1;
        unsigned char Warning : 1;
        unsigned char keep1 : 1;
        unsigned char Remote : 1;
        unsigned char TargetReached : 1;
        unsigned char bit11 : 1;
        unsigned char HomingCompletedOutput : 1;
        unsigned char keep2 : 1;
        unsigned char keep3 : 1;
        unsigned char HomingComplete : 1;
    } b;
    hal_u32_t Word;
} Status_t;

typedef struct
{
    bool request_cia_homing;
    bool is_cia_homing;
    bool start_cia_homing;
    // CIA402 pins
    Status_t Status;
    float timer1; // Timer for start timeout
    float timer2; // Timer for movement check
    int step;     // safety state machine step
} cia_home_local_data;

static cia_home_local_data ciaH[EMCMOT_MAX_JOINTS];

// Data for per-joint CIA-Homing HAL pins
typedef struct
{
    hal_bit_t *request_cia_homing;
    hal_bit_t *is_cia_homing;
    hal_bit_t *start_cia_homing;
    hal_bit_t *homing_error;
    hal_u32_t *statusword;
    hal_float_t *timer1;
    hal_float_t *timer2;
} cia_one_joint_home_data_t;

typedef struct
{
    cia_one_joint_home_data_t cia_jhd[EMCMOT_MAX_JOINTS];
} cia_all_joints_home_data_t;

static cia_all_joints_home_data_t *cia_joint_home_data = 0;

//-------------------------------------------------------------
static int cia_makepins(int id, int njoints)
{
    int jno, retval;
    cia_one_joint_home_data_t *addr;

    cia_joint_home_data = hal_malloc(sizeof(cia_all_joints_home_data_t));
    if (!cia_joint_home_data)
    {
        rtapi_print_msg(RTAPI_MSG_ERR, "HOMING: malloc failed\n");
        return -1;
    }

    retval = 0;
    for (jno = 0; jno < njoints; jno++)
    {
        addr = &(cia_joint_home_data->cia_jhd[jno]);

        retval += hal_pin_bit_newf(HAL_IN, &(addr->request_cia_homing), id,
                                   "joint.%d.request-cia-homing", jno);
        retval += hal_pin_bit_newf(HAL_OUT, &(addr->is_cia_homing), id,
                                   "joint.%d.is-cia-homing", jno);
        retval += hal_pin_bit_newf(HAL_IO, &(addr->start_cia_homing), id,
                                   "joint.%d.start-cia-homing", jno);
        retval += hal_pin_bit_newf(HAL_OUT, &(addr->homing_error), id,
                                   "joint.%d.homing-error", jno);
        retval += hal_pin_u32_newf(HAL_IN, &(addr->statusword), id,
                                   "joint.%d.cia-statusword", jno);
        retval += hal_pin_float_newf(HAL_IN, &(addr->timer1), id,
                                     "joint.%d.homing-timer1", jno);
        retval += hal_pin_float_newf(HAL_IN, &(addr->timer2), id,
                                     "joint.%d.homing-timer2", jno);
    }
    return retval;
}

//-------------------------------------------------------------
static void cia_read_homing_in_pins(int njoints)
{
    int jno;
    cia_one_joint_home_data_t *addr;
    for (jno = 0; jno < njoints; jno++)
    {
        addr = &(cia_joint_home_data->cia_jhd[jno]);
        ciaH[jno].request_cia_homing = *(addr->request_cia_homing);
        ciaH[jno].Status.Word = *(addr->statusword);
        ciaH[jno].timer1 = *(addr->timer1);
        ciaH[jno].timer2 = *(addr->timer2);
    }
}

//-------------------------------------------------------------
static void cia_write_homing_out_pins(int njoints)
{
    int jno;
    cia_one_joint_home_data_t *addr;
    for (jno = 0; jno < njoints; jno++)
    {
        addr = &(cia_joint_home_data->cia_jhd[jno]);
        *(addr->is_cia_homing) = ciaH[jno].is_cia_homing;
        *(addr->start_cia_homing) = ciaH[jno].start_cia_homing;
        *(addr->homing_error) = homing_error; // global error flag
    }
}

//-------------------------------------------------------------
static int cia_1joint_state_machine(int joint_num)
{
    typedef enum
    {
        CIA_IDLE = 0,
        CIA_BEGIN = 1,
        CIA_START_WAIT = 2,
        CIA_RUNNING = 3,
        CIA_FINISHED = 4,
    } cia_home_state_t;

    static cia_home_state_t chomestate[EMCMOT_MAX_JOINTS] = {0};
    static float t_start[EMCMOT_MAX_JOINTS] = {0};
    static float t_run[EMCMOT_MAX_JOINTS] = {0};
    cia_home_state_t nextcstate;

    if (H[joint_num].home_state == HOME_IDLE)
        return 0;

    if ((H[joint_num].home_state == HOME_START) && (chomestate[joint_num] == CIA_IDLE))
    {
        H[joint_num].homing = 1;
        H[joint_num].homed = 0;
        chomestate[joint_num] = CIA_BEGIN;
        ciaH[joint_num].step = 0;
        t_start[joint_num] = 0;
        t_run[joint_num] = 0;
        homing_error = 0;
    }

    switch (chomestate[joint_num])
    {
    case CIA_BEGIN:
        // initialize parameters
        rtapi_print("CIA homing: init parameters\n");
        t_start[joint_num] = 0;
        t_run[joint_num] = 0;
        chomestate[joint_num] = CIA_START_WAIT;
        break;

    case CIA_START_WAIT:
        t_start[joint_num] += H[joint_num].servo_period;
        // check if CIA402 bit9 (Remote) set to start homing
        if (ciaH[joint_num].Status.b.Remote)
        {
            chomestate[joint_num] = CIA_RUNNING;
        }
        else if (t_start[joint_num] > ciaH[joint_num].timer1)
        {
            rtapi_print("CIA homing: start timeout\n");
            homing_error = 1;
            H[joint_num].homing = 0;
            H[joint_num].home_state = HOME_IDLE;
            chomestate[joint_num] = CIA_IDLE;
            return 0;
        }
        break;

    case CIA_RUNNING:
        t_run[joint_num] += H[joint_num].servo_period;
        // safety check: axis movement
        if (!H[joint_num].joint_moving) // Example: joint_moving needs to be replaced by real check
        {
            rtapi_print("CIA homing: axis not moving, error\n");
            homing_error = 1;
            H[joint_num].homing = 0;
            H[joint_num].home_state = HOME_IDLE;
            chomestate[joint_num] = CIA_IDLE;
            return 0;
        }
        // check for CIA homing completion
        if (ciaH[joint_num].Status.b.HomingCompletedOutput &&
            ciaH[joint_num].Status.b.HomingComplete)
        {
            chomestate[joint_num] = CIA_FINISHED;
        }
        else if (t_run[joint_num] > ciaH[joint_num].timer2)
        {
            rtapi_print("CIA homing: movement timeout\n");
            homing_error = 1;
            H[joint_num].homing = 0;
            H[joint_num].home_state = HOME_IDLE;
            chomestate[joint_num] = CIA_IDLE;
            return 0;
        }
        break;

    case CIA_FINISHED:
        rtapi_print("CIA homing complete\n");
        ciaH[joint_num].start_cia_homing = 0;
        H[joint_num].homing = 0;
        H[joint_num].homed = 1;
        H[joint_num].home_state = HOME_IDLE;
        chomestate[joint_num] = CIA_IDLE;
        return 0;

    case CIA_IDLE:
    default:
        break;
    }
    ciaH[joint_num].is_cia_homing = (chomestate[joint_num] != CIA_IDLE);
    return 1;
}

//-------------------------------------------------------------
// Augment base functions
int homing_init(int id, double servo_period, int n_joints, int n_extrajoints, emcmot_joint_t *pjoints)
{
    int retval = base_homing_init(id, servo_period, n_joints, n_extrajoints, pjoints);
    retval += cia_makepins(id, n_joints);
    return retval;
}

void read_homing_in_pins(int njoints)
{
    base_read_homing_in_pins(njoints);
    cia_read_homing_in_pins(njoints);
}

void write_homing_out_pins(int njoints)
{
    base_write_homing_out_pins(njoints);
    cia_write_homing_out_pins(njoints);
}

// do_homing with CIA safety
bool do_homing(void)
{
    int joint_num;
    int homing_flag = 0;
    bool beginning_allhomed = get_allhomed();

    do_homing_sequence();
    for (joint_num = 0; joint_num < all_joints; joint_num++)
    {
        if (!H[joint_num].joint_in_sequence) continue;
        if (!GET_JOINT_ACTIVE_FLAG(&joints[joint_num])) continue;

        if (ciaH[joint_num].is_cia_homing)
            homing_flag += cia_1joint_state_machine(joint_num);
        else
            homing_flag += base_1joint_state_machine(joint_num);
    }

    homing_active = (homing_flag > 0) ? 1 : 0;

    if (!beginning_allhomed && get_allhomed())
    {
        homing_active = 0;
        return 1;
    }

    return 0;
}

//=====================================================================
// EXPORT_SYMBOLS
EXPORT_SYMBOL(homeMotFunctions);
EXPORT_SYMBOL(homing_init);
EXPORT_SYMBOL(do_homing);
EXPORT_SYMBOL(get_allhomed);
EXPORT_SYMBOL(get_homed);
EXPORT_SYMBOL(get_home_is_idle);
EXPORT_SYMBOL(get_home_is_synchronized);
EXPORT_SYMBOL(get_home_needs_unlock_first);
EXPORT_SYMBOL(get_home_sequence);
EXPORT_SYMBOL(get_homing);
EXPORT_SYMBOL(get_homing_at_index_search_wait);
EXPORT_SYMBOL(get_homing_is_active);
EXPORT_SYMBOL(get_index_enable);
EXPORT_SYMBOL(read_homing_in_pins);
EXPORT_SYMBOL(do_home_joint);
EXPORT_SYMBOL(do_cancel_homing);
EXPORT_SYMBOL(set_unhomed);
EXPORT_SYMBOL(set_joint_homing_params);
EXPORT_SYMBOL(update_joint_homing_params);
EXPORT_SYMBOL(write_homing_out_pins);

// Clean up optional
#undef XSTR
#undef STR
#undef HOMING_BASE
#undef USE_HOMING_BASE
#undef CUSTOM_HOMEMODULE

#endif // HOMING_BASE
Displaying 76 - 90 out of 18592 results.
Time to create page: 0.419 seconds
Powered by Kunena Forum