Advanced Search

Search Results (Searched for: )

  • rodw
  • rodw's Avatar
Today 03:16

Technical questions about CIA402 and homecomp.comp on A6

Category: EtherCAT

the cis402 state machine looks something like this:
    // STATE TRANSITIONS
    switch (state) {
        
        case 0x0000: 
        case 0x0040: // Switch On Disabled
            d->control.raw = 0x0006; // CMD: Shutdown
            break;

        case 0x0021: // Ready to Switch On
            d->control.raw = 0x0007; // CMD: Switch Onif (homed && !data.prev_homed) {
            break;

        case 0x0023: // Switched On
            d->control.raw = 0x000F; // CMD: Enable Operation
            break;

        case 0x0007: // Quick Stop Active
            d->control.raw = 0x0000; // CMD: Disable Voltage (Reset the stop)
            break;

        case 0x0027: // OPERATION ENABLED
            d->control.raw = 0x000F; // Maintain Enable
            return 1;                // Signal: "Drive Ready for Motion"

        default:     
            d->control.raw = 0x0000; // Safety Fallback
            break;
    }
    return 0; // Still transitioning to on state

state is the status register. d->control.raw is the control register. This is in a separate procedure that eventually returns true (1) if the machine is turned on.

Then you can proceed to homing etc if you are using internal homing.. Something like this
    // 4. Drive Logic: Only command motion/homing if Operational AND Mode is correct
    if (drive_ready) {
        if (homing) {
            opmode_out = 6;
            
            // --- DYNAMIC TORQUE LIMIT ---
            // Use the HAL pin 'torque_limit', but maybe you want to 
            // force it lower specifically for homing?
            // Usually, we just use the pin value set by the user.
            drive_torque_limit_out = (int32_t)(homing_torque_limit * torque_scale);

            if (opmode_display_in == 6) {
                if (!data.status.bits.op_error) 
                    data.control.bits.op_specific1 = 1;
            }
        } else {
            opmode_out = default_opmode;
            data.control.bits.op_specific1 = 0;
            
            // Set normal torque limit (100% or as defined by HAL)
            drive_torque_limit_out = (int32_t)(torque_limit * torque_scale);

            if (mode_verified) {
                drive_target_position = (int32_t)(target_position * data.s_pos_scale);
                drive_target_velocity = (int32_t)(target_velocity * data.s_vel_scale);
            }
        }
    } 
    else {
        // Drive not ready (Faulted, Timeout, or Powering up)
        opmode_out = default_opmode;
        data.control.bits.op_specific1 = 0;
        drive_torque_limit_out = 0; // Safety clamp
    }

this attempts to limit the torque when homing, you can see we receive a homing signal and we wait until we can read it back to confirm it stuck, then wait until homing completes or errors.

The status word looks something like this (homing bits are also used by manufacturers when not homing
typedef struct {
    union {
        unsigned short raw;
        struct {   
            unsigned short ready_to_switch_on :1; // Bit 0
            unsigned short switched_on        :1; // Bit 1
            unsigned short op_enabled         :1; // Bit 2
            unsigned short fault              :1; // Bit 3
            unsigned short voltage_enabled    :1; // Bit 4
            unsigned short quick_stop         :1; // Bit 5
            unsigned short sw_on_disabled     :1; // Bit 6
            unsigned short warning            :1; // Bit 7
            unsigned short manufacturer       :1; // Bit 8
            unsigned short remote             :1; // Bit 9
            unsigned short target_reached     :1; // Bit 10
            unsigned short internal_limit     :1; // Bit 11
            unsigned short op_specific        :1; // Bit 12 (Homing Attained)
            unsigned short op_error           :1; // Bit 13 (Homing Error)
            unsigned short manufacturer_1     :1; // Bit 14
            unsigned short manufacturer_2     :1; // Bit 15
        } bits;
    } status;
 
  • Mekanoid
  • Mekanoid
Today 03:02
Replied by Mekanoid on topic No movement, stepconf and MX4660

No movement, stepconf and MX4660

Category: General LinuxCNC Questions

Thank you for the suggestions.
i got the machine to move but its not correct,
on the MX4660, the enable LED is difficult to see due to the way they mounted it.
I turned the charge pump switch to "on" meaning that the MX4660 will not look for the 10 kw signal, set pin 16 to unused in stepconf, and the machine now moves, only mostly wrong.

Joint 0 and 1 should be the X axis using 2 motors ( X and X tandem for the gantry using Mx4660 X and A drivers), with joint 1 turning the opposite direction ( rack and pinion, there's a negative value for joint 1 Scale in the.ini file)
Joint 2 should be the y axis, and joint 3 the Z Axis.

What I'm actually getting though is Joint 0 does nothing, Joint 1 moves X only, joint 2 moves X tandem, and Joint 3 moves Z as it should.

Kind of strange. I will go back and double check all the wiring to the drivers and motors.

I will also check the parallel cable signals, I only have a multimeter, but I should see whats coming out signal wise, thanks again for that idea!.
  • dbtayl
  • dbtayl
Today 02:50
DMM DYN 4 spindle servo tuning tip was created by dbtayl

DMM DYN 4 spindle servo tuning tip

Category: General LinuxCNC Questions

Want to get information out there that might help somebody. Short version: If you're having trouble with a DMM DYN4 used as a spindle getting "lost phase" errors and not being able to hit the top rated RPM, lowering the gains might help.

Longer version:

My little baby BT30 benchtop mill is set up with a DMM DYN4 servo as the spindle- drive is DYN4-H01, motor is the 1 kW 86M-DHT-A6MK1. I'm using it in position mode with quadrature inputs. I don't have an index pulse on it, so I haven't tried rigid tapping. The spindle is driven with a 28:44 motor:spindle pulley ratio, using GT3 belts.

DMM was very helpful in getting it set up- provided a tuning procedure and debugging help. Great customer service. Despite that, performance was disappointing- notably the "lost phase" errors, which occurred at high speeds (4000 motor RPM and above, or thereabouts) or under anything but light cuts. Checking the drive's diagnostics page, I could also see the "on position" signal getting inconsistent as RPM increased, even under no load.

I figured it needed more gain- not holding position under no load -> needs more gain. That made things worse, if anything. Adjusting the torque constant (current smoothing) and integration gain settings (two things DMM clearly instructed NOT to change) maybe kinda helped a little bit, but still far from what I expected.

I eventually got fed up and decided to try LOWER gains... works great. Totally unintuitive to me. The chatter I was experiencing cutting 304 stainless also seems to have been resolved. I'm still working up to pushing the limits of the machine, but so far I haven't seen anything to indicate those gains will be too low under heavy cuts.

Every machine is probably different, but FWIW IIRC I ended up with a main gain around 20 and a speed gain around 15. IIRC the integration gain is back at 1 and the torque constant at 127 (per DMM recommendations for this application), but I'm not at the machine to check any of those numbers right now.

Hope that helps somebody! Mods feel free to move if this belongs somewhere else.
  • Lcvette
  • Lcvette's Avatar
Today 01:41
Replied by Lcvette on topic Some problems with probe basic lathe

Some problems with probe basic lathe

Category: QtPyVCP

What is your screen resolution?
  • MRx
  • MRx
Today 23:32 - Today 03:02
Replied by MRx on topic Mitsubishi SSCNET

Mitsubishi SSCNET

Category: Installing LinuxCNC

I also ordered some Ethercat boards to play around with it, for now I just use regular Ethernet. I will suspend working on it until after chinese new year since I need connectors.
I also hope I can get hands on more Mitsubishi/possibly other machinery in Taiwan.

Chaining up multiple boards with Ethercat seems to be interesting, especially for the peripheral part.

The Zynq is definitely super powerful, I was able to get away with a microcontroller and accurate timings, but the MDS-B series only needs 3.55ms framing, not 0.222, jitter is around 20ns (while the measured jitter on the Meldas M65 controller is 40-60 ns .. of course all relatively due to my non certified measurement equipment).
I have an old DE2 FPGA board (with ethernet), and a couple of LatticeSemi LFE3/5 boards (also with Ethernet) here which I almost wanted to use for it. I think I will just stick with various microcontrollers and small FPGAs if needed to keep it simple in the future.
  • NWE
  • NWE's Avatar
Today 22:45

Ursviken Pullmax Optima 130 press brake retrofit with 4 axis backgage

Category: Show Your Stuff

Finally, got to test drive the pullmax_optima component with closed loop PID, only p set to 5. Left and right side sync nicely, but with loud groaning noise. This machine runs smooth and quiet when I run it open loop. I think what I'm seeing in halscope is a combination of untuned PID and non-linear hydraulics.

chan. 1 pwmgen.04.value = controls left ram servo valve (driven by j3.vel_pid.output)
chan. 2 pwmgen.05.value = controls right ram servo valve (driven by j4.vel_pid.output)
chan. 3 pwmgen.06.value = controls tonnage proportional valve; ultimately comes from a slider on my test gui.
chan. 4,5,6,9 are the discrete spool valve coil power outputs (cr-200 to cr-203)
chan. 7 j3-motor-pos-cmd ultimately comes from a slider on my test gui. This is the input to the pos_pid.command
chan. 8 j3-motor-vel-cmd is signal connecting pos_pid.output => vel_pid.command

I was hoping velocity PID will allow me to skip the low frequency dither these valves like; but now I'm thinking my lack of that dither is what is fighting my PID. I will try lowering the p value first in case 5 is actually too high, next step is adding that low frequency dither, probably via siggen or a custom component.
  • PCW
  • PCW's Avatar
Today 21:46 - Today 21:47

7i80HD+7i48+7i42TA+7i84 Mesa firmware request (morbidelli author 503 retrofit)

Category: Driver Boards

It should be possible with hm2_modbus,
(as long as the devices sharing a link have the same baud rate)
mesa-modbus only supports one device (per host UART)
 
  • PCW
  • PCW's Avatar
Today 21:44

Retrofit 7 ton HOMAG with Rexroth motors and drives - mesa 7i97t

Category: General LinuxCNC Questions

No, if you set all PID values to 0 in the .ini file, run linuxcnc
and set LinuxCNC into the machine-on state, all PWM values will be 0
and the PWM enables should all be true (at least for the joints enabled in the hal file)
  • Nkbhvid
  • Nkbhvid
Today 21:35

Retrofit 7 ton HOMAG with Rexroth motors and drives - mesa 7i97t

Category: General LinuxCNC Questions

“Also insure the all PWM enables are true, and all PWM values are 0”
Should I define this in HAL?
  • freemoore
  • freemoore
Today 21:31

7i80HD+7i48+7i42TA+7i84 Mesa firmware request (morbidelli author 503 retrofit)

Category: Driver Boards

Great, that's got the sserial and pktuart ports appearing and working, thank you for the quick response.

We have 3x identical modbus cards to communicate with. Using mb2hal it was possible to address each one but I can't see how to do that using mesa_modbus - is there a way to talk to different addresses over a single pktuart port? This may be a question for Andy Pugh...

Is this possible in hm2-modbus?
  • PCW
  • PCW's Avatar
Today 20:45

Retrofit 7 ton HOMAG with Rexroth motors and drives - mesa 7i97t

Category: General LinuxCNC Questions

OK that looks good.

The next test is to set all PID pins to 0 (P,I,D,FF0,FF1,FF2) in the ini file
and start LinuxCNC, then enable motion, at this point, PWM should be enabled on all axis
but the PWM value should be 0 on all axis. Again measure all the Analog outputs.

Also insure the all PWM enables are true, and all PWM values are 0

 (test done with nothing connected to the 7I97T except 5V power and Ethernet)
 
  • Hakan
  • Hakan
Today 20:19

IndraDrive + LinuxCNC – PDO configuration problems

Category: EtherCAT

Have a look in syslog "sudo dmesg" and if you find the word EoE that is a problem.
Typically that interferes with the linuxcnc lcec component, which can not handle EoE.

There is a way to read out the eeprom content from the drive, flip a bit and write the eeprom content back.
However, it is much better to compile the ethercat master yourself with eoe disabled.
It has been recommended before in the forum, please search (I don't have it readily available).

See how far that takes you. 
  • Nkbhvid
  • Nkbhvid
Today 20:11

Retrofit 7 ton HOMAG with Rexroth motors and drives - mesa 7i97t

Category: General LinuxCNC Questions

Axis0 11mv
Axis1 9mv
Axis2 10mv
Axis3 9mv
Axis4 10mv
Axis5 9mv
  • tommylight
  • tommylight's Avatar
Today 20:06
Replied by tommylight on topic QtPyVCP Mill Touch Screen

QtPyVCP Mill Touch Screen

Category: QtPyVCP

@Kell,
Do not send reports asking for help, you will be banned for doing that again.
-
From your error report:
Can't execute DISPLAY program qtpyvcp
So did you install QtPyVCP as per the howto on their github?
  • tommylight
  • tommylight's Avatar
Today 20:03
Replied by tommylight on topic Joint following error all axis

Joint following error all axis

Category: General LinuxCNC Questions

You are welcomed, always.
Displaying 1 - 15 out of 19206 results.
Time to create page: 0.324 seconds
Powered by Kunena Forum