Please Help - How to Configure a 5 Axis Head-Head
- IronManDylan
- Offline
- Premium Member
- Posts: 115
- Thank you received: 19
Here's another two ideas that comes to mind though. If I am just using the 4th axis for indexing, and not simultaneous stuff, I could use g54,g55,g56... like you suggested. Or, I could manually place a line of gcode to set the 4th at the desired location at the beginning of the gcode (or even use MDI honestly).
Or, if I am using it simultaneously with the head, instead of having a different LCNC set up, I can have a different machine set up in F360, and in that set up just have one head axis available for use. So in other words, the head joints are B and C (thats what bridgemill calls them), so in this Fusion Machine Builder set up, I would select all of the B and C axis to operate as the C axis (don't set a B axis at all), then set the A axis as the 4th/table axis. Then fusion will be required to pick the correct axis as that is the only options. And then the gcode outputted to the C axis shoulddd work in TCP mode, and the code sent to the A axis should not be and should just be your normal position and angle code operating without reverse kinematics.
At least that is what I would think would happen. One very important question is wether bridgemill can handle this. Like what will it do when it gets position data for an A axis that isn't in its kinematic model? Do you have any idea what it will do or how to figure this out? I guess I could send bridgemill some test gcode and watch vismach, but there won't be any visualizer for the 4th axis in the vismach setup so it will be hard to gauge...
What do you think about all this?
Please Log in or Create an account to join the conversation.
What do you think about all this?
I think you'll be fine - eventually. Your setup will, I suspect, take a fair amount of time to get it working the way you want, especially since you don't have a ton of experience with your 'dream machine' - and, frankly, neither do most people.
Regarding the 'forum' I was referring to the Autodesk forum, not here in LCNC-ville. Yes, I've seen some posts go unanswered, but I've also had pretty good success with my own questions or searching there.
Please Log in or Create an account to join the conversation.
- IronManDylan
- Offline
- Premium Member
- Posts: 115
- Thank you received: 19
The first one seems to be a post issue. I have programmed a simple contour on a semi circle with a 2 inch diameter. The tool should come in, hold its position, and turn the part about 220 degrees with the 4th axis, then retract. Instead what I am getting is nearly 200 lines of code in which the Z and X axis are moving by as much as 20 inches, which makes zero sense. A full circumference of that circle isn't even 20 inches...
The second forth axis issue is, I am posting the 4th axis (table axis) as the A axis. This is because the Bridgemill uses B and C as the head axis/joints. When I try posting 4th axis code to bridgemill I get the error "bad character 'a' used". I need to figure out how to add another axis to the bridgemill. Shouldn't be too hard as the axis shouldn't require reverse kinematics if the WCS is at the center of rotation of the A. But I need it to not throw a flag and also be able to program steps/rev and acceleration and stuff like that. Does anyone know how to add an axis to Axis GUI?
Lastly, if anyone has any documentation on how to get LCNC talking nicely with the Mesa boards, I could use that information as well. Obviously I have the Mesa manuals, but if there is anything specific to LCNC I should look at feel free to point me that direction please. The Mesa boards arrived yesterday and I am going to go get them installed in their box right now.
Thank you for your help.
Please Log in or Create an account to join the conversation.
Looking at /src/emc/kinematics/5axiskins.c it seems that you should be able to just add an A axis in the ini:When I try posting 4th axis code to bridgemill I get the error "bad character 'a' used". I need to figure out how to add another axis to the bridgemill. Shouldn't be too hard as the axis shouldn't require reverse kinematics if the WCS is at the center of rotation of the A. But I need it to not throw a flag and also be able to program steps/rev and acceleration and stuff like that. Does anyone know how to add an axis to Axis GUI?
// optional letters (specify with coordinates module parameter)
P.a = (JA != -1)? pos->a : 0;
So try to alter these lines in your bridgemill ini file:
[DISPLAY]
GEOMETRY = XYZCBAW
[TRAJ]
COORDINATES = XYZABCWY
[KINS]
JOINTS = 8
KINEMATICS = 5axiskins coordinates=xyzabcwy
Please Log in or Create an account to join the conversation.
Note: this is for a head-head machine with a work side C-rotary table using a rotating-nutating head so your machine is actually a simpler case in that all your rotation matrices will be of the simple form. You can ignore the experimental Tilted Work Plane section at the end.
If you are keen to try building your own I would suggest to install a jupyter and ipython and I can send you the jupyter notebook of the above example so you don't have start from scratch.
Attachments:
Please Log in or Create an account to join the conversation.
- IronManDylan
- Offline
- Premium Member
- Posts: 115
- Thank you received: 19
I tried altering the ini file as you suggested. There were a few places where I added to the xyzabcw config that weren't where you suggested. As well as moved a few other things around in the axis configuration file, mostly with setting up the joints and axis. But I ended up getting an error when I tried to launch that configuration. I have attached a picture of the error below as well as the full ini file. Note: I did not add the first line of code you specified as I did not know where in the initiation file to place it, perhaps this is the issue.
I do not consider myself a shy person, but I also have been working on this machine for so long and really just want to see it running right now if thats possible, even if it is a little hacked together. I have plans to build a more substantial machine in the future and would like to get deeper into writing kinematics then.
Wiring issues:
I have most of the board wired up. I have 5 of the 6 axis wired into the 7I96S. Have all my sensor wired into the inputs of the 7I96S (and written down so I know what goes where). I ordered the wrong cable to attach the 7I96S to the 7I85S so will get a replacement on Monday.
I do not know where to wire in the last axis into the 7I85S. The manual on this is very sparse. Its states "Note that actual signal functions depend on FPGA configuration" but gives no data on the different config or how to change the config. I need to know how to change the output of these pins to Step/dir and which pins are the ones I need to use. Also, I assume something needs to be done to the config to make it talk nicely to the 7I96S. Note: the only thing that I am plugging into the 7I85S is one stepper driver.
Lastly, I need to know how to wire my Huanyang VFD into the 7I96S. First off, I have set my VFD to receive between 1-5 volts input for spindle speed control (factory setting is supposed to be 0-10v but since 7I96S is a 5v board I figured this needed to be modified) by adjusting parameter PD070 according to my manual. From my last attempt at getting everything running I had the FOR (forward run pin), VI (analog frequency reference input), and ACM (GND) pins of the VFD wired into 5v, spindle output, and GND of my old board respectively. However, the 7I96S manual is being characteristically vague and only provides spindle , spindle out, spindle - as descriptors for the pins. I can take a guess on these and see how they work, but does anyone know how this should be wired? Also, there is a jumper that needs to be adjusted to change speed control from the onboard potentiometer of the VFD to the inputs I referenced, so I am aware of that.
Thank you.
Please Log in or Create an account to join the conversation.
and stepgens 5..8 are on the 7I85S stepgen outputs 0..3
You can verify this with:
mesaflash --device 7i96s --addr 10.10.10.10 --dbname3 7i85s --readhmid
The spindle connections for a typical VFD are:
VFD +10V --> 7I96S SPIN+
VFD ANALOG_IN --> 7I96S SPINOUT
VFD ANALOG_COMMON --> 7I96S SPIN-
The 7I96S basically replaces the potentiometer
POT TOP = SPIN+
POT WIPER = SPINOUT
BOT BOTTOM = SPIN-
Digital pins like FWD and REV are driven by 7I96S SSR outputs
Please Log in or Create an account to join the conversation.
- IronManDylan
- Offline
- Premium Member
- Posts: 115
- Thank you received: 19
About the VFD. Okay that makes sense I’ll wire that. Plugging 10v into the 5v mesa won’t fry anything right?
About the 7I85S, I’m confused. Are you saying that drivers 5-8 come out of the 7i85s? But how do I know which pins are the step/dir pins for motor 5? There’s like 2 dozen pins on the 7i85s and the manual doesn’t list which pin are step and dir. It looks like mesaflash is software I need to download on my computer? I’ll looks into this thing evening when I have a moment. Can I see what pins are step/dir using this software? Sorry, very new to Mesa boards.
Please Log in or Create an account to join the conversation.
and the spindle connections. The 7I96S SPIN+ to SPIN- voltage
can be from 5V to 20V.
Mesaflash is included with LinuxCNC distributions, though depending
on the specific distribution it may need to be updated.
Here is the result of the suggested mesaflash command:
Attachments:
Please Log in or Create an account to join the conversation.
- The first line of code I posted is from the kinematic file indicating that an A axis can be added, so this is purely informative.I tried altering the ini file as you suggested. There were a few places where I added to the xyzabcw config that weren't where you suggested. As well as moved a few other things around in the axis configuration file, mostly with setting up the joints and axis. But I ended up getting an error when I tried to launch that configuration. I have attached a picture of the error below as well as the full ini file. Note: I did not add the first line of code you specified as I did not know where in the initiation file to place it, perhaps this is the issue.
- Note that in the hal and ini files any line starting with a '#' is a comment.
- The error in your screenshot indicates that a remap file was not found. Not sure as to why that happened but starting linuxcnc from the terminal ($ linuxcnc) may give you more information in the form of terminal output.
Below is a modified ini file for the bridgemill simulation that adds an A-axis as tested on my system (using master version but should also work in 2.9):
VERSION = 1.1
MACHINE = Sim-5Axis Bridge Mill (xyzbcw)
DEBUG = 0
[DISPLAY]
GEOMETRY = XYZCBAW
OPEN_FILE = ./5axisgui.ngc
INCREMENTS = 10 mm, 1 mm, .1 mm
JOG_AXES = XYZC
GEOMETRY = XYZCBW
DISPLAY = axis
CYCLE_TIME = 0.200
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
MAX_FEED_OVERRIDE = 2.0
PROGRAM_PREFIX = ../../nc_files/
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5
TOOL_EDITOR = tooledit z diam
#EDITOR = geany
PYVCP = 5axis.xml
[RS274NGC]
SUBROUTINE_PATH = ./remap_subs
HAL_PIN_VARS = 1
REMAP = M428 modalgroup=10 ngc=428remap
REMAP = M429 modalgroup=10 ngc=429remap
REMAP = M430 modalgroup=10 ngc=430remap
PARAMETER_FILE = 5axis.var
[EMCMOT]
EMCMOT = motmod
COMM_TIMEOUT = 1.0
SERVO_PERIOD = 1000000
[TASK]
TASK = milltask
CYCLE_TIME = 0.010
[HAL]
HALUI = halui
HALFILE = LIB:basic_sim.tcl
HALFILE = 5axisgui.hal
HALCMD = net :kinstype-select <= motion.analog-out-03 => motion.switchkins-type
POSTGUI_HALFILE = 5axis_postgui.hal
[HALUI]
# M428:bridgemill (kinstype==0 startupDEFAULT)
# M429:identity kins (kinstype==1)
# M430:userk kins (kinstype==2)
MDI_COMMAND = M428
MDI_COMMAND = M429
MDI_COMMAND = M430
[TRAJ]
COORDINATES = XYZABCWY
LINEAR_UNITS = mm
ANGULAR_UNITS = degree
MAX_ANGULAR_VELOCITY = 360.0
DEFAULT_LINEAR_VELOCITY = 200.0
MAX_LINEAR_VELOCITY = 346.0
MAX_LINEAR_ACCELERATION = 800.0
DEFAULT_LINEAR_ACCELERATION = 800.0
MAX_ANGULAR_VELOCITY = 360
[EMCIO]
EMCIO = io
CYCLE_TIME = 0.100
TOOL_TABLE = 5axis.tbl
[KINS]
# Note: Supported coordinates are XYZBCW but the W coordinate
# motion is incorporated into the X,Y,Z axes.
# Use of the W coordinate requires a joint (5)
# in order to allow display of W values.
# Use immediate homing for this joint (JOINT_5)
# Note: 5axiskins is misnomer
# (xyzbcw uses 6 joints)
# (xyzbcwy uses 7 joints)
# xyzbcw
# type0:5axiskins, type1:identity, type2:userk
# x:joint0,y:joint1,z:joint2,b:joint3,c:joint4,w:joint5
# JOINTS = 6
# KINEMATICS = 5axiskins
# illustraed below is complex example with duplicate
# coord letters for y, 7 joints total):
# type0:5axiskins, type1:identity, type2:userk
# x:joint0
# y:joint1 AND joint6
# z:joint2
# b:joint3
# c:joint4
# w:joint5
JOINTS = 7
KINEMATICS = 5axiskins coordinates=xyzabcwy
[AXIS_X]
MIN_LIMIT = -500
MAX_LIMIT = 500
MAX_VELOCITY = 200
MAX_ACCELERATION = 800
[AXIS_Y]
MIN_LIMIT = -500
MAX_LIMIT = 500
MAX_VELOCITY = 200
MAX_ACCELERATION = 800
[AXIS_Z]
MIN_LIMIT = -500
MAX_LIMIT = 100
MAX_VELOCITY = 200
MAX_ACCELERATION = 800
[AXIS_A]
MIN_LIMIT = -3600
MAX_LIMIT = 3600
MAX_VELOCITY = 60
MAX_ACCELERATION = 200
# B is one-to-one to JOINT_3
[AXIS_B]
MIN_LIMIT = -120
MAX_LIMIT = 120
MAX_VELOCITY = 60
MAX_ACCELERATION = 200
# C is one-to-one to JOINT_4
[AXIS_C]
MIN_LIMIT = -36000
MAX_LIMIT = 36000
MAX_VELOCITY = 60
MAX_ACCELERATION = 200
# W motion is incorporated in Z motion
# but a joint (JOINT_5) must be configured
# to support display of W values
[AXIS_W]
MIN_LIMIT = -100
MAX_LIMIT = 500
MAX_VELOCITY = 200
MAX_ACCELERATION = 800
[JOINT_0]
TYPE = LINEAR
MAX_VELOCITY = 200
MAX_ACCELERATION = 800
MIN_LIMIT = -500
MAX_LIMIT = 500
HOME_SEARCH_VEL = 0
HOME_SEQUENCE = 0
[JOINT_1]
TYPE = LINEAR
MAX_VELOCITY = 200
MAX_ACCELERATION = 800
MIN_LIMIT = -500
MAX_LIMIT = 500
HOME_SEARCH_VEL = 0
HOME_SEQUENCE = -1
# joints 1 and 6 used for y
[JOINT_6]
TYPE = LINEAR
MAX_VELOCITY = 200
MAX_ACCELERATION = 800
MIN_LIMIT = -500
MAX_LIMIT = 500
HOME_SEARCH_VEL = 0
HOME_SEQUENCE = -1
[JOINT_2]
TYPE = LINEAR
MAX_VELOCITY = 200
MAX_ACCELERATION = 800
MIN_LIMIT = -500
MAX_LIMIT = 100
HOME_SEARCH_VEL = 0
HOME_SEQUENCE = 0
[JOINT_3]
TYPE = ANGULAR
MAX_VELOCITY = 60
MAX_ACCELERATION = 200
MIN_LIMIT = -120
MAX_LIMIT = 120
HOME_SEARCH_VEL = 0
HOME_SEQUENCE = 0
[JOINT_4]
TYPE = ANGULAR
MAX_VELOCITY = 60
MAX_ACCELERATION = 200
MIN_LIMIT = -120
MAX_LIMIT = 120
HOME_SEARCH_VEL = 0
HOME_SEQUENCE = 0
[JOINT_5]
TYPE = ANGULAR
MAX_VELOCITY = 60
MAX_ACCELERATION = 200
MIN_LIMIT = -36000
MAX_LIMIT = 36000
HOME_SEARCH_VEL = 0
HOME_SEQUENCE = 0
# immediate homing for JOINT_5 (w coordinate)
[JOINT_6]
TYPE = LINEAR
MIN_LIMIT = -100
MAX_LIMIT = 500
MAX_VELOCITY = 200
MAX_ACCELERATION = 800
HOME_SEARCH_VEL = 0
HOME_SEQUENCE = 0
Please Log in or Create an account to join the conversation.