Pressbrake CNC Control Setup Questions

More
5 years 4 months ago #213166 by PCW
What is intended to happen is that on index detection (hardware index when
index enable is true) is that the encoder position is reset to 0 and LinuxCNC
resets the commanded position to 0 when it detects the falling edge of index enable.

Please Log in to join the conversation.

More
5 years 4 months ago #213176 by EW_CNC
So it seems that the problem that I'm having is when the encoder position gets reset, the move to the new commanded position is not controlled by the home-search-velocity.
Would it be possible to change the press component to stop homing when the encoder gets reset to 0 and have a separate move, if we still need it, to move to the new 0 offset point?

Please Log in to join the conversation.

More
5 years 4 months ago #213178 by PCW
The reset should not cause a move. When the the search for index
is complete the motion should stop (obeying acceleration constraints)
and then move to the final home position with HOME_FINAL_VEL

Please Log in to join the conversation.

More
5 years 4 months ago #213189 by BigJohnT
You need to set HOME_FINAL_VEL in your ini file for each axis.
Code:
HOME_FINAL_VEL = 0.0 - Velocity in machine units per second from home latch position to home position. If left at 0 or not included in the joint rapid velocity is used. Must be a positive number.

JT

Please Log in to join the conversation.

More
5 years 4 months ago #213201 by EW_CNC
I should explain that the motion for this configuration setup is controlled by a custom component, press.comp. Thanks to andypugh!
 

Attachment not found

Please Log in to join the conversation.

More
5 years 4 months ago #213219 by andypugh
I need to look at the comp to make it behave like a LinuxCNC axis after home is found.

The .comp exists to keep the motion in the real-time layer. Where a press-brake differs from a CNC machine is that one axis is under entirely manual control, and faking that in a user-interface does not seem like the best idea.

I probably could have made it work a lot more easily inside the GUI, with a down command being a programmed move to the bend position, and sending an abort if the pedal is released. (which is exactly how GUI jogging works). But we do hear occasional stories of jogs not stopping because a key release has been missed, and such.

Back to the issue. Do you want the axes to stop when they find home, or to make a controlled move to a fixed position?

Please Log in to join the conversation.

More
5 years 4 months ago #213227 by EW_CNC

Do you want the axes to stop when they find home, or to make a controlled move to a fixed position?

With my setup, on all 3 axis, they could stop when they find home, but both ways would work.

Please Log in to join the conversation.

More
5 years 3 months ago #213458 by andypugh
I think that this might help.
Sorry, I have struggled to find any time for this.
(Don't forget that you need to halcompile the comp)

I think that this should just leave the axis where is homed to, but I can't really test it on my sim config. 

 

Please Log in to join the conversation.

More
5 years 3 months ago #213517 by EW_CNC
I have installed the comp and tried a few changes to it. It works best with my latest changes. 
Code:
case 0:                 if (axis_home_switch(axis)) {                     axis_pos_cmd_out(axis) = axis_home_offset(axis) * 2;                     axis_vel_cmd(axis) = axis_home_search_velocity(axis);                     home_state = 1;                 } else {                     axis_index_enable(axis) = 1;                     axis_pos_cmd_out(axis) = -1 * axis_home_offset(axis);                     axis_vel_cmd(axis) = axis_home_search_velocity(axis);                     home_state = 2;                 }                 break;             case 1: // searching down, Press Up                 if (! axis_home_switch(axis)){                     [color=#c0392b][u]axis_pos_cmd_out(axis) = 0;[/u][/color]                     home_state = 0;                 }                 break;             case 2: // searching up, Press Down                 if (! axis_index_enable(axis)){                     offset(axis) = axis_pos_fb_in(axis) - axis_home_offset(axis);                     [color=#c0392b][u]axis_pos_cmd_out(axis) = 0;[/u][/color]                     home_state = 0;                     state = 0;                 }                 break;

I still get the rapid move of the offset when it homes to the axis.
If I startup with the axis close to the home position with min. offset correction it works great, but greater distance I'm off of the index position the greater the jump.

Would it be possible to get it to stop at rising edge of the home switch, then apply a rough correction offset, then resume to final homing with the index? It seems to me it needs to apply offset correction while motion is stopped, but I might be wrong.

I looked over the homing.c file.

It's more than I can figure out. I feel like a 1st grader learning to read when it comes to programming.

Take your time Andy, don't feel like this project is a rush. I'm amazed at the time you spend with LinuxCNC.
EW

homing.c
Code:
case HOME_INDEX_ONLY_START:         /* This state is used if the machine has been pre-positioned            near the home position, and simply needs to find the            next index pulse.  It starts a move at latch_vel, and            sets index-enable, which tells the encoder driver to            reset its counter to zero and clear the enable when the            next index pulse arrives. */         /* is the joint already moving? */         if (joint->free_tp.active) {             /* yes, reset delay, wait until joint stops */             H[joint_num].pause_timer = 0;             break;         }         /* has delay timed out? */         if (H[joint_num].pause_timer < (HOME_DELAY * servo_freq)) {             /* no, update timer and wait some more */             H[joint_num].pause_timer++;             break;         }         H[joint_num].pause_timer = 0;         /* Although we don't know the exact home position yet, we            we reset the joint coordinates now so that screw error            comp will be appropriate for this portion of the screw            (previously we didn't know where we were at all). */         /* set the current position to 'home_offset' */         offset = H[joint_num].home_offset - joint->pos_fb;         /* this moves the internal position but does not affect the            motor position */         joint->pos_cmd += offset;         joint->pos_fb += offset;         joint->free_tp.curr_pos += offset;         joint->motor_offset -= offset;         /* set the index enable */         H[joint_num].index_enable = 1;         /* set up a move at 'latch_vel' to find the index pulse */         home_start_move(joint, H[joint_num].home_latch_vel);         /* next state */         H[joint_num].home_state = HOME_INDEX_SEARCH_WAIT;         break;

Please Log in to join the conversation.

More
5 years 3 months ago #213528 by PCW
Can you plot (with halscope) the commanded and feedback joint position
at the point where index enable goes low? This would give valuable information
as to what's going wrong.

Please Log in to join the conversation.

Time to create page: 0.195 seconds
Powered by Kunena Forum