you guys still around? got a question
"override limits" allows a single jog command to override the limit switches (usually used to jog back inside the limits)
should the wheel do the same?
I'm thinking no, because the definition of a "single jog" is fuzzy
(when you are turning the wheel)
jmkasunich: I agree, I don't think the wheel needs to be able to jog on a limit override. if it does, the direction should be checked to make sure it's moving away from the limit and not further into it.
why would you only allow a single jog command?
override limits should mean just that
because otherwise the dumb user will hit the button to get off limits, and the limits will stay disabled forever
allowing him to crash the machine later
perhaps override limits should be reset on a mode change
I dunno how axis handles it, but on tkemc if you hit the override limits button it turns red
it goes gray again after you make a single jog
if you are still on limits, you can hit the button again
I think its safer that way, its been that way forever, and I'm not changing it
axis does the same thing but it uses a checkbutton instead of magic colors
magic colors is confusing but at least it gets your attention
don't care about how the GUIs do it
btw, "forever" = way back in emc1, not just emc2
yeah the one-jog-per-override is not a gui issue
* jmkasunich is using "goto"
(by another name - "continue")
OK, who wants to test this?
nobody? you guys are no fun!
* fenn hides
what am i not testing?
* jmkasunich looks at cradek
jmkasunich: it warms my heart to see those "-#if 0" in your patches
warm hearts are good
hey, how do I figure out what the address of my parport is?
I thought it was 0x0378, but no joy
jmkasunich: lspci and stare at the output?
(though on my laptop it doesn't appear on lspci)
nope, nothing resembling a parport
pretty sad, I'm a core developer and its been ages since I actually spun motors
dunno if I ever did it with this box
I wrote a whole user interface without hardware to call my own
cradek: I should get that first l298 board back from you...
cause if he comes out I'll ask him to test this
dammit, theres gotta be a way to find the port
HAL says the driver is loaded, and I can see the step and dir pins toggle with hal
but the don't seem to be toggling for real
(haven't got the real scope out yet)
hal just dumbly assumes there's a parport at the address you give it
if the port doesn't appear in lspci, it seems like it should be at a legacy address
looks like 278 and 3bc are some other legacy addreses
(glancing through parport_pc.c)
tried 0278, same result
wading thru /sys looking for clues
john@ke-main-ubuntu:~/emcdev/emc2head$ cat /sys/bus/pnp/devices/00:09/resources
state = active
dunno what it means, sure seems like 0x03f8 is the right addr tho
well, it ain't 3f8, "request_region(3f8) failed"
is parport_pc loaded?
lp was loaded, I rmmoded it
does /proc/ioports show something taking that region?
oops, I missed something
parport_pc isn't but parport is
duh, now I know why 3f8 sounded familiar
thats a legacy serial port addy
have you investigated whether the port is turned off in BIOS?
nuttin on 278 or 378
no, didn't want to reboot
guess its time to do that
bios says its 378
meter says the pins are changing state
only 3.5V for a high, but still thats a high
now it wors
didn't actually change anything
I just love computers don't you?
yippie kai yeh mother franker.
ubuntu 5.10 breezy, running the emc install script, and the stepper motor is reconnected.
still wonder why my internet isn't automagically DHCP with ubuntu...
hello?? :P Where is everyone?
where's my celebration party?
party at alpha's house!
must restart now
jmkasunich: ran around 5 amp though my little h-bridge using a basic stamp outputing pwm. the mosfets start to get warm at that current :)
I have updates... which updates are safe now? I know not the kernel images
alphaEMC: any but the kernel image should be fine
any of the updates are safe - atleast I have been installing whatever is shown - just don't click on the upgrade button ;)
85 megs. :(
was I wrong? what kernel image?
there's kernel image updates... that screw up the RTAI kernel.
I clicked the upgrade button, but am not updating the kernel/linux images.
don't click "Upgrade"!
did you click the button that says "a new version of Ubuntu is available - 6.06 LTS"?
at least, not the upgrade button shown at the bottom of this window: http://www.electronicsam.com/images/KandT/upgrade.png
SWPadnos, of course not. :)
that looks like the top of the window to me ;)
mine's the top too
phew - update then, not upgrade
I clicked it.. .but unchecked the linux images/kernels
SWPadnos: yes, the top
ok. that should be all right then
alphaEMC: I am not sure whether upgrading the kernel is harmful (it might make the realtime kernel not the default) but it is certainly a waste of your time to download it, since you'll never used it.
jmkasunich: what are you playing with?
thanks folks. :)
jogwheel, RT implementation
now... all I need to do... is double check the wiring, and do a test... maybe I'll do that tomorrow. :/
jmkasunich: cool. is it smoother?
very much so
anyone here play 3d scorched earth??
alphaEMC: what - you come this far !!! :)
damn neighbour... showed it to him, and he's ended killing 1.5hrs of my time, before I said I want my coffee now.
hmm, only axis 0 seems to work
duh, works better if you connect the pins
now they're all moving! ;)
you should have your fest cam setup again - so we can keep tabs on you
don't need big bro watching
remember, people working at home can be - um - improperly dressed ;)
hmm... this is firefox 1.08
I should really upgrade that to the newest.
not that important for a machine controller, I'd say
to run your machine - c'mon
I like to browse the web while machining circuit boards
new emc web interface, in RT!!!
okay... I'll check my pins...
it gives me a feeling of smug superiority
oh yeah, I should do an AJAX web interface for emc
jepler cradek got an issue here
that would kick boo-tay
you have to play MP3's and movies simultaneously, then you're a realy superior smug person ;)
axis switches the motion controller to auto mode when you start a g-code program
when you end (hit the stop button for instance)
you ungray the jog buttons
but you don't actually switch to manual mode until somebody hits one
yeah, everyone is complaining about that, now that halui is starting to take off
halvcp and halgui to the rescue
err - halui
if you don't switch the controller to manual, the jogwheel won't work
you should put a button on the panel, connected to the halui "manual_mode" pin
just a click on the axis jog button (any axis) and the jogwheel works again
"sudo locate -u" updates locate right?
(when builfing a real panel)
or building one
man, I hope this typing problem wears off before tomorrow
SWPadnos, it's called old age
I haven't even hit 40 yet!
and how close are you to 40?? ;)
anyway, the RT part works, I think I'm gonna commit it
omg... I went to a 30th birthday yesterdya
can anybody think of any other tests?
it was fun... but the number "30" scares me.
I assume it doesn't jog when in auto mode
what about MDI (or is that not an emc state?)
SWPadnos: if it did, jmkasunich wouldn't have complained about axis not switching into manual mode
that's what I figured ;)
mdi is "coord" mode for the motion controller, same as auto
what about when the machine is in estop
jmkasunich: what about incremental jog mode?
or is that a stupid question
I suppose it is
it doesn't care at all about NML jog commands
actually you can get some strange interactions if you try
what happens when you spin the wheel so fast you exceed the machine constraints?
man... I'm gonna need some help with this ini file.
so it just updates the target position when there's jogwheel motion?
now emc can be used as a tracer mill :)
the GUI jog commands include a speed, the wheel commands use max speed
if you spin it too fast, the machine falls behind
and keeps going after you stop spinning
what happens if you use some very large number for the increment, like 1"?
one click of the wheel and it moves an inch
when it falls behind will it ferror?
ok, max accel and vel for the inch(es) you move the wheel
spin the wheel and it moves to the limit
btw, my own philosophy is to commit early, as demonstrated by my earlier "merge segments" commit
so I won't fault you for doing it
commit early, commit often?
well, we may want to fiddle with some speed estimation later, but it sounds fine as is
no ferror, the move is generated by the same "tp" as regular jogs
I try not to commit totally busted stuff tho
if it builds and doesn't break anything, then commit
else wait ;)
* jepler taps his foot and waits for the amd "x2" processors to get cheaper
just need to wait for am2 to hit the street
A-L-P-H-A: any specific ini questions yet?
well, in the immortal words of Edna Mode, "Well, what are you waiting for?"
linear_units, that's the movement per step correct?
that's inch vs mm
5tpi, with a gear ratio of 30(motor):48(ball screw), 10uStepping, 1.8deg motor is... :/
1.0 = mm, 0.039370..... = inch
that is her name? from the encredibles?
what's my max velocity then?
steps per inch is handled in INPUT_SCALE
in the TRAJ section, and in the individual AXIS sections
you max velocity is in units per second -- you'd put .333 for 20ipm
INPUT_SCALE, OUTPUT_SCALE, MAX_VELOCITY, MAX_ACCEL ...
the incredibles even.
steps per units (steps per inch) is INPUT_SCALE
skunkworksz - yep. great movie
03jmkasunich 07HEAD * 10emc2/src/emc/motion/ (command.c control.c mot_priv.h motion.c motion.h): Realtime implementation of jogwheels. Seems to work quite well, very smooth. Needs more testing.
now he shows up, after I already tested it...
where were you when I was looking for a volunteer?
heh - good timing
out eating ice cream
while I was slaving away here writing code....
cycle time, do I need to touch that?
I have a silly question. when talking about semiconductor processes, there seem to be "standard" sizes: 90nm is popular right now, and 65nm is coming. Is everybody really using exactly 65nm, or is some company's fab doing 63nm and another doing 68? Or is there some physical reason that 65nm (and not 64 or 66) is feasible?
no physical reasons
I'll buy you an ice cream someday, just remind me
(I assume this is the smallest feature size on the semiconductor die, like "8 mil trace/space" in circuit boards, but I don't know much about it)
it's has something to do with the wave length of light or electrons... i forget.
cradek: ooh ice cream
jepler: they're open 'til 10
each generation of processing machinery has a lower limit, most fabs probably run near that limit, but its a tradeoff between getting the last few nm and having good yield, so theres probably a spread
hhhhhhhhhmmmmm... I kinda want some coffeecrisp icecream.
actually i had a bowl of ice cream earlier
hey - we could mill our own ic's - any one have a silicon waffer?
aren't they chem etched?
jmkasunich: did you hook up your jogwheel/stepper cube thing?
yes, thats what I tested with
I think they use specific "light" sources for the photo masking steps, so there would be specific feature sizes that are possible for a given source
I will happily test this soon
(the thing with three steppers, wheel, xylotex, and power supply)
(though they use X-rays for the lithography steps now)
is it the same idea I used in halui, but faster?
I need to pack (traveling all week, bummer)
MAX_ACCERATION is in what units?
units per second per second I assume
cradek, there are three new HAL pins on the motion controller for each axis
jog-counts: s32, connect to the counts pin of the encoder
jog-enable: bit, turn on to make it jog when the encoder turns
(if you have one wheel and 3 axis, you connect all three jog-counts to the same encoder, and enable only 1 to jog that one axis
jog-scale: float, distance it moves per count (you can set different for each axis if you are perverse, normally they'd all be tied to the same signal, that would either be constant, or come from a mux that selects between several values
jog-scale can be negative right?
I didn't test that, probably should
should also test jogging into the limits and such
but not tonight, I'll leave that to you
jmkasunich: hope the travel goes OK
its a stupid training course
"design for six sigma"
can't you tell them you already know everything?
I just wondered because it sounds like I could jog diagonally too then
well, you should be able to catch up on sleep then ;)
(that seems like a lot of sigmas)
you can jog diag if you want
sigma as in std dev?
set the scales under program control, and you have an off-axis straight line
or you can have multiple wheels, one per axis, etc
cradek: yeah, you could even set one jog-scale to sqrt(3)/2 and the other to .5 and jog at 60 degrees
cradek: btw I wrote "ckins" but don't really have any way to test it
are the moves done as a single move to a new target poinf, or as separate moves per axis?
Someone really needs to write a stepper configuration gui. Plug in the values of your machine, and out comes some code to save as an ini file. [I'm willing to write it]
in free mode all joints are completely independent
that could be a problem
okay... I'm at a loss...
A-L-P-H-A: actually I toyed with that but never used a generated configuration on a real machine
yeah, you wouldn't really get a 60 degree line
what are my input scale and output scale? Do I even need an input scale? I have no feedback
more like a staircase that ended up at the right point
A-L-P-H-A, yes, I think you still need it
A-L-P-H-A, for historical reasons you need input scale
but it's synthesized by the stepgen module
so leave that a lone.
A-L-P-H-A: you don't have to put any value on that line, but it may need to be there
what are your steps per rev - pullys and tpi?
OUTPUT_SCALE you leave alone
the only things you should need to change to get your machine running are INPUT/OUTPUT scale, and the pin connections. after that, it's all about tuning and maximizing performance
INPUT_SCALE = NNNN 0
where NNNN is steps per units
bye all, I'll have a laptop, dunno if the hotel has internet
OH! So I do need that.
have a good trip
see you later jmk
OUTPUT_SCALEshould be the same as INPUT_SCALE, unless you want following errors all the time
or has that changed?
so my input_scale should be... let me calculate that... 2000pulses = 1 rpm of motor, time 1.6 gear ratio = 3200pulses.
SWPadnos: well, this is what the example stepper_inch.ini has:
INPUT_SCALE = 4000 0
OUTPUT_SCALE = 1.000 0.000
INPUT_SCALE = 3200 0
4000 = WOULD BE A 10TPI, 1.8Degree motor, direct drive.
ah - stepgen outputs the "current position" for you, so OUTPUT_SCALE isn't needed
err - INPUT
A-L-P-H-A: you can beta-test my configuration generator if you want, but like I said I haven't tested it on a real machine. INPUT_SCALE = 4000 0
I think they're being used backwards, but that's OK
OUTPUT_SCALE = 1.000 0.000
the URL is: http://axis.unpy.net:8080/
I think 4000 would be a 20 TPI motor, direct connect, full steps
20 TPI screw, direct connect to a 200 step/rev motor
I forgotabout my microstepping.
yeah, it depends on whether you have half- or micro-stepping too
or 10 TPI, same motor, half stepping ...
jepler, what's the period supposed to be?
don't you have belt reduction also?
A-L-P-H-A: leave it at the default (50 microseconds)
what would be a safe acceleration?
I'm on page two... what would be the max/min limits of what?
the soft limits of the table
e.g., you designate some spot as X=0. how far can it move to the -ve direction before it reaches the end of safe travel, and how far can it move to the +ve direction?
you could enter -100 / 100 if you don't care about soft limits
for acceleration, I think 5 inch/sec2 is a conservative figure
one rev of your leadscrew is how much movement? not 1"?
1 rev = 0.2"
5threads per inch ballscrew
3200 pulses is .2 inch?
so you need 16000 steps / inch
A-L-P-H-A: I thought you also had a belt reduction
200pulses = 1 rev. 5revs per inch. 10000 revs = 1". geared 16000. yup
see - it's not all that hard if you just break it down and think about each piece
and using his gui. :D
and like 5 people double checking everything.
oh - well that never hurts
500 ppr encoders should have 2000 edges right?
[02:49:51] <A-L-P-H-A> http://pastebin.ca/64666
<-- if you could all be so kind as to take a look at it. Please ignore my Z axis... as I forget what the units are for it. I will check it now.
MAX_VELOCITY = 1
skunkworksz, yes, if that's "cycles" and not "pulses" per rev.
though the nomenclature isn't exactly uniform, so it still could be ;)
A-L-P-H-A: earlier you were talking about somewhere from 20-25 inches per minute. this is 1 inch per second, 60 inches per minute
I think you want 0.6666 there - for 40 IPM
pinout.hal is a file you made (or modified)?
I think 40ipm is above what you can do with base_period of 50 (16000 * 40/minute = 93.75 microsecond)
SWPadnos: pinout.hal is either a copy of standard or xylotex .hal file
ah - ok
whichever A-L-P-H-A chose
I'll go 0.3333 "/sec
make it the 20 i want.
if it works, I'll pump it up
you had a period of 24 microseconds in emc1. you can probably go to 30 or 25 with emc2
.625 would be the max - so less than that with headroom
Z is again... 1.6gear reduction... (30teeth on motor, 48 on Z handle/worm).
one rev of the Z worm = 0.1"
so 32000 INPUT_SCALE
yup. microstepping again
I remember this now - you were asking a long time ago if it was OK to have different scales for each axis, and also had some problem with Z not moving very fast at all
[02:55:18] <A-L-P-H-A> http://pastebin.ca/64667
.3125 max vel for that one - but you should be able to lower your base period
with the computer you have
yeah it's starting to look like you should choose a lower base_period
SWPadnos's advice of 30 or 25 is probably good
I'm happen with 18.75 ipm (0.3125"/sec)
not like Z moves all that far
.55 with z and that base period
0.15625 "/sec for the Z?
with the 50uS period
closer to .333, I think
10/32 = 5/16 = .3125
as skunkworksz said
I'll worry about Z later.
if you enter 0.15625 inch / second that will be well within the step rate for 50uS base period
crap...where'd my weekend go??
alphaEMC: I've been wondering the same about my own weekend
there was a weekend?
okay... copied the config over to my emc machine
thats ok - I spent part of the weekend de-crapifing a computer. (well I should be getting paid for it)
where should I copy it to?
alphaEMC: make the directory emc2/configs in your home directory if you haven't already
then unzip it in emc2/configs and rename the directory if you want
that name will appear on the list that you get when you run emc
is an ATA SAN slower then a SCSI?
see you later jepler
SATA that is :)
rootaccess, wrong emc ;)
but I'd say - yes, SATA will be slower, unless the storage server has very good caching
though I think you can use longer cables with SATA (not sure about that). FC-AL is probably still the best for distance and speed
I have a SATA EMC box and they told me its slower because it doesn't support parralell opperations :p
likely true - SATA is meant for a single drive, and they only added command queueing to SATA-II
oh well, $40,000 lesson learned
SCSI is a full disconnect/reconnect protocol, so many commands can be in-flight simultaneously
yea -- thank goodness it wasn't my call
one job, saved
I ran emc2... and after the splash screen nothing shows up.
open a terminal, run dmesg, and pastebin the result
[03:16:19] <alphaEMC> http://pastebin.ca/64672
I need a lottle more than that ;)
let me fix something first. :)
you can also run emc from a terminal, and you'll see some other info (at least the first thing that caused a problem)
[03:21:01] <alphaEMC> http://pastebin.ca/64675
[ 5488.613470] MOTION: bad traj period 1000000 nsec
hmmm - wonder why that is
[03:21:53] <alphaEMC> http://pastebin.ca/64676
<-- from command line
yep - as expected
is 64667 the corerct ini file?
what is your ini file again?
give me a sec... I'll post it in pastbin.ca
do you still have to copy the common directory (or whatever it is ) in your home directory?
[03:23:30] <alphaEMC> http://pastebin.ca/64677
<-- stepper.ini file
yes I have a copy of the common.
he used jepler's web-based config creator, so I think it gives a full dir of files (in a tgz)
it's in the sample-configs
it generated that period for you?
BASE_PERIOD = 45454
can the servo and traj period be the same>
now wait a second, it says this is in sample configs
yeah that was what was generator
should be able to do that, I think
I know... I copied it there.
you overwrote the sample config with the one from jepler's site?
you are a bad man
I have a backup of it.
shall I revert to the original state?
it couldn't hurt
you should have those samples available as they were
the file from jepler's site is meant to be expanded into your home directory under ~/emc2/configs/
SWPadnos: I think it tries to use a base period that can supply the requested step rate
the period is requested on page 1, but that could be
SWPadnos: if it doesn't do that (and the period is too large) you just get following errors because stepgen calculates its own maxvel
it may lower the period if necessary - I entered 25 (uS, I assumed), and that's what the ini shows
noentheless, 45454 gives 12 ns error if the traj period is 22x the baase
that should be within the allowed error (I think it's 1%)
okay... I have the config.zip contents in ~/emc/configs/stepper
how to I tell emc to use that config file?
when you start emc it will show it as an option
though I suppose it's possible that the SERVO_PERIOD was rounded up, and that the TRAJ period ended up being lower than SERVO_PERIOD, which would be an error
cradek, no it doesn't it shows me /etc/emc2/sample-configs/ only
if it still doesn't work, try changing TRAJ_PERIOD to 2000000
you have a directory level one too many or one too few
change that to emc2/configs, I think
chris@buster2:~/emc2/configs$ unzip /home/chris/Desktop/config.zip
oh right, emc2
[2594796.117053] MOTION: bad traj period 1000000 nsec
still dies with that config file... but works with axis sample.
I get this too
okay... so back to manually editing the config file. :|
try a 2 ms TRAJ period, or a 500 uS SERVO period
I'm on Windows ATM
what he said
BASE_PERIOD = 50000
TRAJ_PERIOD = 1000000
what can possibly be wrong with this?
SERVO_PERIOD = 1000000
the comments say that TRAJ period will be an even multiple of SERVO_PERIOD
I guess 1 is an even multible :)
if the 1.194304 MHz clock makes SERVO slightly longer than 1 mS, then TRAJ will be too low
I'm sure they can be the same
make TRAJ 1010000 ns
but 2000000 works
what's the actual period for each thread, from halcmd?
2011440, 1005720, 50286
ok - (partly) as I thought - the SERVO period was tounded up, so TRAJ was shorter, which is invalid
[03:37:57] <alphaEMC> http://pastebin.ca/64680
<-- new error I think.
same - need dmesg
unfortunately, the terminal messages aren't very descriptive
they're all "-1: operation not permitted" ;)
alphaEMC: did you change your TRAJ_PERIOD from 1000000 to 2000000? that fixes it for me
[03:39:14] <alphaEMC> http://pastebin.ca/64681
I changed it to 1010000
sadly, that doesn't work
I'll change it to 2000000
either that or SERVO_PERIOD goes down to 500000
2 000 000, two million right?
seems like that rounding needs some work
yeah, and it may be requiring a multiple >=2 as well
no I've set them the same lots of times
it's running axis... :D
now... lets see if anything moves. :)
oh wait... gotta check pinouts and stuff.
ready on the estop
I guess I should plug that in too then. :D
my acme stop button.
ideally nothihng would move if the button weren't plugged in ;)
what pin should the e-stop be on?
whateer pin you connect in HAL
whatever, that is
it's just looped back in software in the hal file you have
(assuming it's the same as I haev, from the config generator)
# create a signal for the estop loopback
linkpp iocontrol.0.user-enable-out iocontrol.0.emc-enable-in
argh, looks like it's time for bed - I still can't type today
yep - that's what it says
man... screw it... I can hit esc right?
change iocontrol.user-enable.out to something like parport.0.pin-11-in or something, then connect it to that port pin
you may need parport.0.pin-11-in-not, if the logic is inverted
(or use pin 13, on the end of the long row)
SWPadnos is now known as SWP_Away
good night. good luck A-L-P-H-A
oh... so much better.
VNC into the emc box.
in a comfy chair... not the workshop chair.
will test in the morning... it's late now.
cradek, jepler, thanks for the help :_
haha.. six sigma. how lame.
good day.... just thought I'd ask a question of the group
sure starts like a good day ;)
what CAM processor (if exists) would you recommend for linux?
[07:09:49] <alex_joni> http://wiki.linuxcnc.org/cgi-bin/emcinfo.pl/emcinfo.pl?Cam
any experience with the gCAD3D listed?
tried it once, but I wasn't quite impressed
didn't spend too much time on it though
although the features seem nice
screen shots look nice!
just looking for something to take in stl files (binary) as well as gerber files (pcbs) and generate nc files
what keys if any are the button in the tkemc gui maped to. examp: if I want to hit run/resume/pause/step w/ out useing mouse what keys do I hit?
aj, almost ready to test emc2.
i'll test it tomorrow when I wake up
im actually about to go to bed, but i will leave this running and check back in the morning - im so glad I have internet, ubuntu and emc2 in the shop now! this is great!
even though it's like 4am already... yikes.
there's not enough robin's.
wholepair: the keystrokes for axis are documented, and they were mostly modeled after tkemc. so you might have some luck trying them. http://axis.unpy.net/quickref
there's also tkemc help
some of it is incredibly out of date, but the key shortcuts are probably right
03cradek 07HEAD * 10emc2/docs/help/tkemc.txt:
remove/update the worst of the out of date stuff, someone who knows
tkemc better should review it.
see.. now it's not that incredibly out of date :D
anyone here ?
SWP_Away is now known as SWPadnos
do you know a lot about HAL ?
I'm pretty good with it
I'm using the sim config to test things
(though I may screw up some specifics, since I have no machine handy to check myself with)
and the sim HAL file uses the blocks component
but after emc has loaded I want to use the blocks component for my own stuff (jogwheel/halui)
and I get an error message when trying loadrt blocks
you need to specify all the blocks you want at the first load time, as you've noticed
insmod: error inserting '/home/etla/emc2/rtlib/blocks.ko': -1 File exists
HAL:2: ERROR: insmod failed, returned 1
did you make a copy of the sim config (in ~/emc2/configs)?
I'm running from ~/emc2
and the sim config I'm using is probably in /config/sim
you should make a directory in ~/emc2/configs, and modify that
is usart and i2c the same thing?
so the first time 'blocks' is loaded, I need to specify all the bits and pieces I want later on...
you can just add the items you need to the "loadrt blocks ..." command (probably in sim_load.hal or similar)
bodick: probably not
we're trying to figure out a way to dynamically create and delete "subcomponents", but it can't be done now
that's a 2.2 / 3.0 kind of change to HAL
SWP: that's not very elegant... blocks components can be used in motion, IO, halui etc. - wildly different places
Bo^Dick, some usarts can do I2C, but they're not the same thing
that's the way it is right now, unfortunately. there's no easy (or even somewhat hard) solution to the problem
what interface will i need for an ATmega8515?
SWP: OK, thanks for the explanation, I will have to load all blocks on one line then...
Bo^Dick, sign up on www.avrfreaks.com, it's a good place to get info about the AVRs
etla, yep. the split of motion / IO / whatever else was done long after HAL was written, but that split is artificial
Bo^Dick, no problem ;)
etla, I mean in terms of the config files
of course, emc has had the motion vs io split forever
yes, but it's kind of cute to have one self-contained .hal file with motion stuff, one for io, one for jogwheel etc...
one thing you can do is create a "hal_load" file, and put all driver / module loads in there
that keeps it all in one place, and the connections are still done in their respective files
I think ppmc may be that way now
wish there was an irc channel though
there probably is
i've tried "/list avr"
that's the way to search right?
I think so - too bad the list server is overloaded ;)
try #avr though
looks like #avr and ##microcontrollers are two channels you might find helpful
now my jog-increment rotary switch works!
any ideas on how to get the axis selection switch to work ?
it needs to output an int
floats are easy with the mux2/4 block, but I'd want a similar thing with ints ??
err - I guess someone needs to write one ;)
you may be able to use the weighted summer component though, if you can guarantee that only one input bit will be on at a time
I have three digital inputs which will switch between six different states
(and it's even separate from blocks, so you can load it later ;) )
are you using a new cvs checkout from today?
yesterday or the day before that I think
ok. jmk added jogweheel support to the motion controller (in RT)
there's a separate input for each axis, along with an enable
and a scale (or jog increment)
hmm... I'm using halui.jogwheel
what inputs does halui have for the jogwheel axis selection?
so it's something like axis.X.jog ?
halui.jog-wheel.axis which is an integer, don't know how many bits
why are DAC converters so expensive?
they're nearly free
unless you want a really good one
mention a typical price for a low cost one
SWP: do you know if the motion jogging issues jog NML commands, or is it all handled internally in emcmot ?
use a PWM output from the microcontroller, or make an R-2R ladder
etla, the new code is all internal to the motion module
no NML involved, which eliminates some smoothness issues
err - lack of smoothness issues ;)
well the cheapest from my dealer is 3$ for the "DAC 0800"
OK, makes halui.jog-wheel obsolete then...
Bo^Dick, do you have any pins available on the microcontroller?
etla, kind of. though halui.jogwheel may be useful for other things later
ok, thanks for the chat guys, gotta go.
SWPadnos: not really
well, then you can't talk to a DAC chip either ;)
SWPadnos: gonna use interrupts, usart and the built in A/D
you need 3 or 4 pins to use a DAC
if one of those can be a PWM, then an RC filter (two cheap components) is your DAC
are there usart interfaces out there?
what do you mean?
if one can buy an interface with lets say an 8-bit databus
oh, yes there are
maybe - I'm not sure I understand what you're trying to connect
my dealer doesn't appear to sell such interfaces. they sell i2c interfaces
i2c interfaces to what?
microcontroller -> (what protocol/connection) -> (some chip) -> (what I/O)?
fill in the blanks ;)
microcontroller <- i2c or usart <- data
data from what?
from jumper settings
ok. so you don't have enough pins on the microcontroller, so you can't connect jumpers directly to it?
or an 8-bit switch
that's the very situation yes
this is a smart solution
are you already using a serial protocol to talk to other chips?
[15:41:04] <alex_joni> http://www.play-hookey.com/digital/shift-out_register.html
no i haven't determined which protocol to choose
i'm gonna use an ATmega8515 however
...and it is said to support "usart"
[15:42:07] <alex_joni> http://www.allaboutcircuits.com/vol_4/chpt_12/3.html
sure - the USARTs can be configured as microwire and possibly I2C as well
you'll use 3 pins (TX, RX, and clock) for the chip
there are one wire comms
and I2C uses only 2 wires
so all i have to do is to buy me an I2C interface
only serial (usart) needs 3 wires
Bo^Dick: why isn't an par->serial shift register enough?
microwire also uses 3 wires - remember the chip select
it's practical to use an established standard solution such as I2C and usart
par/serial is way more standard than I2C and usart
at least for reading jumpers
and it's way simpler/cheaper
if you say so...
i'll need to use several devices on the same line so i'll be stuck with any of them, i2c or usart or whatever
there's a 74-series logic chip that's just an 8 bit parallel in -> serial shift out
yeah, but what about adressing several chips?
that's where the extra lines come in, unless you use I2C
you can cascade them
and read them all
assuming they're all parallel input chips
but the bottom line is, will an i2c interface work with usart or not?
Bo^Dick: not always
look at the datasheet, for crying out loud ;)
it depends on the microcontroller
MFG: MAJOR BRANDS
if i hadn't burnt my pic i could have gone with i2c but with the atmel chip i need to mess with usart
the atmel chip also has an SPI port
SPI is similar to I2C
never heard about SPI before
read the datasheet, then go to avrfreaks, then come here for motor-specific help ;)
and remember #avr also :)
yeah, it'll take time before i'll have my system running
not quite sure what you want to connect to the I2C (except the microcontroller).. but that's your problem I reckon'
hey, #avr exits!!
had no idea!!
didn't find it with "/list avr"
that's for sure
18:25 < jepler> looks like #avr and ##microcontrollers are two channels you
might find helpful
you need to list #avr
that was 30 minutes ago
must've missed it
the "/list" function sucks then
it's not a search, it just lists the exact channel you specify
though jepler did post a link to an irc search tool as well
SWPadnos: good morning. i have a few questions regarding the 5i20 and hal.
in the hostm54e.pin file which shows the map of signal to physical connectors on the 5i20 there are 'dir' signals listed for each axis. i have done a 'show' in hal to find the 'dir' signals but there are none listed.
do they exist or do i need to somehow create them or am i lost in space?
I don't think there should be.
the input is a velocity (I think), which can be negative
dir is set based on the sign of the input velocity (float)
just as the PWM duty cycle is set by the magnitude
so i have thought also. i have a small pwm amplifierd that takes a pwm frequency and a dir signal (hi or low) and drives an 18200.
can i use hal commands to create a dir signal?
yes, but you'll have to connect it to one of the digital outputs
halcmd newsig X-Dir
halcmd newsig X-Dir bit
ok, that looks pretty straightforward. i have been reading hal documentation, but it seems rather lean.....
how recent is your set of docs?
i have 3 versions of hal docs. the latestest is 31 may 2006
ok - that's pretty recent ;)
there has been a lot of work on the docs recently - just wanted to be sure
what is the document called, what do you find lacking?
please, i am not wining or bitching, just trying to figure it all out. i think everyone is doing great!!!!
(there are several places where this information resides, the docs have been reorganized recently)
I'm looking for ways to improve it, so suggestions (and patches ;) ) are welcome
within the 5i20 context, which component is loaded? stepgen, freqgen, and/or ...???
none - the 5i20 has a PWM output, which looks like (and is named as) a DAC
ok, with halcmd show i see a component 'hal_m5i20' is loaded. where is that file?
dpkg -L emc2 | grep hal_m5i20
any reason to be looking for it?
it depends on whether it's an installed (ubuntu) version, a BDI, or RIP though
* alex_joni assumed installed ubuntu
you never know with this guy ;)
sorry, was called away helping the girlfriend with some basic acad....
that's not something you hear too often ;)
i have a simple ubuntu 5.1 install
interior designer at a really high end firm in SF
Roguish: any reason to be looking for the m5i20 module?
(fwiw, that's 5 point ten, as in October 2005)
SWPadnos: no, it's 5.1 like the surround system
and the next one will be 7.1
but only next year :D
i need a 'dir' signal for my 18200 amp using the 5i20
trying to see what is already available in hal
it's there already - it's just controlled automatically
(not in HAL, on the card)
ok, how do i know that and how do i access it? halcmd newsig X-Dir?
you can't access it - it's generated by the 5i20 card
in the actual card driver?
in the actual FPGA
so the fpga program is generating my DIR signal?
is that through peterv's driver?
I didn't see any reference to the direction pin in the driver - I'm looking at the VHDL right now
ok. the PWM is set to signed mode in the driver, so the DIR pin is controlled by the FPGA (in unsigned mode, the pin would be an input)
ok, in m5i20.h i see a #define M5i20_pwm_ctl_direction
the direction var is a mask for when the DIR bit is input in unsigned mode, I thikn
ok, 2 lines above. are all those 'defines' hal signals?
I don't see any HAL related stuff in m5i20.h
that's the register map and other definitions for the card itself
look at the function Device_ExportDacPinsParametersFunctions in hal_m5i20.c
ok, is 'loadrt hal_m5i20' in m5i20_motion.hal
should be "i see" not is
that makes more sense ;)
and i found 'hal_5i20.ko'
what is it you're looking for?
what, where, how, do i know what signals are available in hal?
halcmd show sig
done that. no 'dir' signals.
correct - dir is an automatic function of the m5i20 hardware
so you can't control it through HAL
is there a problem with your 5i20 driving your motors?
it doesn't seem like i am getting that dir signal on the physical connector pin. i will keep testing. i definitely get the pwm signal. shows on the scope.
the dir should go high and low? correct?
and you're sending both positive and negative numbers to the DAC signals?
i'm trying a simple test system on the desk before going to my larger machine. also, trying to figure this whole emc2 thing out
i hate testing on full size machines.
have you gone thtrough the hal/halcmd tutorial in the hal manual?
heh - good plan (unless E-Stop is known working)
you should be able to set up a simple HAL, by just loading m5i20 and siggen
connect a siggen output to one of the 5i20 DACs, and see what happens
(on a scope)
gave a proposal the other day to replace my client's 'burned up' machine. $75k
they want to use emc2
figure i better know what i'm talking about
in regard to the physical connector pin map for the 5i20, i am trying to check each one.
ok. that's more of an m5i20 issue than emc2 itself.
obviously, things would be different with a different servo card
if the signals are not listed in 'show sig' then they are at the board level.
well, sort of
use halcmd show pin to see what things *could* be connected
that's the "pinout" of the component
signals are only there if they've been explicitly created
does the 5i20 do pwm and direction?
how hard would it be to make it like the freqgen pwm+pwm
on connector 1, there are the usual encoder inputs, with pwm, dir, and enable for each axis
it's set up more like a DAC at the moment, but it could be done. not sure if it's worth the effort though
(I guess it would only take a few componants to do that.)
SPW: thank you for you help. i will keep testing. i go slow as to not blow things up. (which i'm really good at doing)
I am just thinking out loud - my servo drives are controlling the h-bridge - I would need 2 pwm signals
I would think a few logic chips would do that. (if I needed it)
separate PWM for each phase of a 3-phase motor, or 2 opposing PWMs?
think what jepler is doing with his etchosketch
same thing - except I am using a larger h-bridge
ok - the up/down outputs?
you don't want them both on at the same time though, right?
although it would not do anything catostrofic (I think)
ok. there's some sort of synchronization flag in the 5i20 FPGA, I'm not sure what it does
I think it might try to short out the power supply, so it could be catastrophic ;)
I would think it would just turn on the 2 high mosfets -
ok - that would be all right - just a braking mode
with the ir2111 I don't think you could ever get both high and low mosfets turned on at once.
although alex may have gotten it to :)
right - it's a single pin for each par, with 2 pair making an H-bridge
I think I have seen circuits that take pwm+dir and convert it to pwm+pwm. If I thought about it hard I could probabaly figure it out :)
I'm not so sure it's that easy
it may be - just invert the PWM signal for one side, and 50% duty cycle becomes "no motion"
* alex_joni heads home
na - I was thinking dir pin would transfer the pwm signal from one bridge to another
see you later
I think alex_joni h-bridge circuit that I had seen does this - but it has been a while
like 2 and gates with one input on one of the gates inverted.
direction go to both as does the pwm signal
direction then toggles between the and gates
if that makes sense
yep - that would work
except that you need to invert the direction signal for one of the and gates
otherwise they always output the same thing ;)
right ^ <skunkworks> like 2 and gates with one input on one of the gates inverted.
oh - right
more like 3 NAND (or XOR) gates, in discrete logic
that is where I get fuzzy - my logic is very old.
heh - DeMorgan is easy to forget (or block from memory)
one NAND gets both inputs connected to DIR, causing it to act like an inverter. otherwise, it's just as you described
just taking a break
was looking at jeff's segment joining thing
it looks good to me
I guess that implied the queue still starves
I'm not sure, actually. Matt Timmermans sent an interesting mail to the list on that subject
oh really where is it?
err - on the list ;)
always for me the queue would starve...it would pause and fill it again the motion would resumes
I missed it
have to check back
it's from 10:25 AM today
in reply to Jeff's post (on the developer lilst)
let me look
he just questions whether queue startvation was actually happening on the particular files (3d_chips) that Jeff used
not that the solution is only for that file though
if the queue length is a known parameter, maybe the GUI could show it all the time ?
you should take a file of yours that used to cause starvation (maybe some of the ones that you and Paul tested with), and see what happens
les_w: I saw queue starvation recently (on a program made bad on purpose) and improved segment throughput by a factor of 10 with a 1-line fix, I doubt you'd have trouble anymore.
the GUI isn't realtime, so it might not show if starvation occurs
you could easily plot queuelen=1 in a different color with axis (like I had the blends colored)
but even without jeff's fix, I think the problem is pretty much gone
well - whatever fix that was, plus Jeff's combining segments, would take care of it for sure ;)
jeff's change mostly makes it so you can run through the program at higher speed with the current planning algorithm
I need some time to try this stuff!
booked solid though
you need to hire someone to try this stuff ;)
that's what everyone wants these days
les_w: I bet there are a lot of things in emc2 that could help you.
Seems likely i'll have to dive into factory automation very soon
That may be a time I can look at it
I also agree that the problem of queue starvation may be fixed without my changes.
was that my psyco program?
but there's still the problem with segments so slow there's no cruise phase, and merging segments can improve that
yes there's no doubt your changes will help keep speed up
er, "segments so *short* there's no cruise phase"
cradek: besides your factor-of-10, there's the factor-of-3 from merging the move, accel, and vel messages into a single message.
jepler: right, forgot about that
normally there should be no problem with no cruise phase segments....but of course there was a math bug with that
now we've got hundreds of moves a second throughput from the interp
cradek: which change was the "factor of 10" one? is that the .ini change, or something else?
jepler: the CYCLE_TIME
jepler: yes the TASK CYCLE_TIME was being ignored (and the default was low)
my programs commonly aked for several hundred segments per second
les_w: sounds like "debateable" CAM ;)
les_w: that was a real problem then, not long ago the throughput was about 10 seg/sec
or the settings
yeah that must be some terrible gcode, no debate there
some work requires that.. rthough...
no, it's just the combination of high accuracy and high speed both at the same time
the gcode probably isn't (bad by definition), just the CAM seems .. odd
les_w: how about arcs?
My programs use arcs some, but of course two tangwnt arcs blended have infinite jerk....
was the CYCLE_TIME being ignored in emc1?
you could blend a straight line between them
some times point to point is the only option when the intol/outlol is controled by the CAM system ie apt
SWPadnos: I'm probably not sure
that's what les is using now, so we can't be sure that the fix would represent a change for him
yes, in fact even a cubic would make a tiny flat spot at tangent arc intersection
les_w: you're not even using an up-to-date emc1 are you?
Imagine something like a small parabola with .02 mm chordal error
but cut at 400 ipm
only 3 pts
no tin g-code!
you would need to drop feedrate by 1/10 to get thru that parabola
les_w: what's the machine's acceleration?
it can do 0,5 g in x, about 4 in y and z
5.6 Kva servo
throwin' a ton around..
it must warp time and space while it is moving ;)
% units 4*gravity inch/sec2
is this the right number?
that seems pretty darn high
cradek: shouldn't it be 0.5*gravity ?
but seems correct
oh.. that's y & z
1 g is 384 in/sec^2
so do you run it at 100? 200?
you ARE trying to ROCK and ROLL a MOUNTAiN brother... go big or stay home
i love it
with some hard numbers one of us could plug them into emc2 and see how it does
and even plot the results
since I was using the old software I was limited to about 180 ipm and only 30 inches?sec^2
cradek: right, maybe les can send an ini
les_w: can you say what theoretical values the machine should handle?
and heating up the drives to run it like that i bet??
600 ipm max
and the g figures I mentioned
complex conjugate pole pair in x at about 20 Hz
q is about 5-10
y and z are very low q
MAX_VELOCITY = 10
MAX_ACCELERATION = 1544
BACKLASH = 0 ?
this is servo.. right?
les_w: debateable ;)
* alex_joni runs some 5-10kW AC servos too
oh gosh it was pretty big with emc1
I agree it's pretty big ;)
FERROR = 0.01
that's min ferror
MIN_FERROR = 0.01
Ferror a little higher
.02 seems low to me
that's the allowed ferror at full speed
ok - that's high then ;)
no it's multiplied by the speed somehow
cradek: shouldn't be
right - if MIN_FERROR exists, then that's the min, and FERROR is the allowed error at max vel
FERROR is multiplied by vel/max_vel to get the actual value used
maxferror = (speed/fullspeed) * FERROR + MIN_FERROR
Max and min ferror work like this: limiting ferror is
determined by slope of ferror line, = maxFerror/limitVel ->
limiting ferror = maxFerror/limitVel * vel. If ferror <
minFerror then OK else if ferror < limiting ferror then OK
I can knock most all of it out with feedforward, but that causes the TP errors to be violent, so I don't
I think min_ferror is a clamp, not an offset, but yeah
yeah it's a clamp
sorry for the bad paste ;)
anyway the biggest limitation on the machine is bandwidth of the servo loop
because of those 20 hz poles
you should have ~500 Hz with the stock settings - have you needed to set the SERVO_PERIOD lower?
(or the emc1 equivalent)
I can knock em out (put zeros over them) with a dynamic absorber...but did not because emc1 really is not fast enough to excite them except for transients
servo period is as fast as you can go with stg2
were you at 2 KHz?
which is way too slow
seems like it shouldn't be
that can be solved by using the motenc though
at full speed. that's 2000 updates in 10 inches
one every .05 in?
but I know the motenc can do 5 times that
so no problem there
just change ythr csrd
the motors should be enough of a damper to be OK with that update rate, though very segments wouldn't survive intact
what is a very segment?
very short segments (so short you can't see the word ;) )
so really the biggest issue with arbitrary motion is the poles at 20 hz
EMC has no band reject comprnsation filter
so 180 phase shift at the poles
no, but it would be pretty easy to write one, and stick it after the PID
something like an 8-tap or so FIR filter would do the trick, I bet
but a FIR filter is a double loop
slow it down?
it should be a single loop - it's a 1-d dot product I think
I think I talked to fred about that once
at the time the group delay was too much
well - generating the constants is the hard part. calculating with them is easy
you should be able to fiddle with group delay when generating constants
maybe I'm thinking of IIR filters - who knows ;)
the filter coefficents are easy too....calculate to put zeros on the poles
FIR is constant group delay
anyway....most machine controllers have a band reject filter in the PID. Guess its a want list item. (for me)
However feedforward things like dynamic absorbers are always better
they put zeros on the poles, but make more poles elswhere.
lower q ones though.
right - just outside the bandwidth of the system
well one of them is
anyway I think the boxes these days could do an 8 pt FIR pretty fast
64 multiplications per servo cycle
I'm pretty sure that's just 8 multiplications: sum(coeff(n) * sample(n))
it's a convolution.....
and you rotate the samples through
hmmm - I must be thinking ofa different kind of filter then ;)
anyway - float multiplies are ~3 cycles, I think
no you're right
I think youend up with a convolution, but not in a single period
see yuo mr low blood sugar
* alex_joni passes SWPadnos a power bar
great - the pressure is off of me :)
alex - are you actually testing les's settings?
skunkworks: not now
right now I'm cursing some strange ladder format
IEC 61131-3 :-X
cradek and I were looking at some halscope plots for a 4" parabola made from 4000 G1 moves and the simulator tweaked to be like les's specs
it looks .. weird .. in emc2
I think there's still a bug for cradek to solve
and also one for me
jepler: did you take a snapshot?
[19:11:10] <jepler> http://emergent.unpy.net/files/sandbox/halscope-parabola.png
this is with g64 p- so many of the segments are merged together
the top two plots are accelerations, the bottom are velocities
we don't have a clue why the X velocity would be so "sawtooth"
do you have a pic of the toolpath ?
[19:13:36] <jepler> http://emergent.unpy.net/files/sandbox/toolpath-parabola.png
what we really need is a plot of tangential velocity
that can be computed from X and Y ?
etla: yes, but right now there's no way to get the plot of it easily
etla: and sin
do you get the same thing with a circle?
alex: could you advise on how to get cvs acces for updating the manual
what's the feedrate?
ok. so it's 4000 0.001 moves along a parabolic path?
yes something like that
which gets downsampled to 15-20 moves
[19:21:08] <jepler> http://emergent.unpy.net/files/sandbox/sim-les.ini http://emergent.unpy.net/files/sandbox/parabola.ngc
the other difference in my local copy of emc is that I increased the number of segments that can be merged compared to the setting in HEAD
--- src/emc/task/emccanon.cc11 Jun 2006 21:17:22 -00001.60
+++ src/emc/task/emccanon.cc12 Jun 2006 19:26:59 -0000
@@ -499 +499 @@
- if(chained_points().size() > 100) return false;
+ if(chained_points().size() > 1000) return false;
Ghana go, go go! Go for it Ghana!
what do the plots look like if you reduce the feedrate to ~350 IPM?
what you are seeing in the plot is the 20 or so segments
hmmm - it might be better to look at that with a scale that shows one sample per pixel or thereabouts
right now, roughly 4 samples are collapsed into a single horizontal pixel
I suppose I should just fire up my machine snd look for myself ;)
SWPadnos: did you eat?
not really - just some cheese and peanut m+m's ;)
heh - unfortunately, the nice organic Spanish spicy chorizo sausage I bought tastes like shit :(
i wonder why
SWPadnos: You haven't figured out by now that "organic" == "tastes like shit"
it should taste like spicy spanish organic shit
maybe you can trade your chorizo for a nice loaf of sourdough, or some lentil soup
mmm or falafel
I'm heating some nice clam chowder, thank you ;)
falafel would be good
this si amazing - the neighbor is mowing or weedwhacking, and the cat still manages to sleep on the deck
they have a special talent for that
this one especially
in D&D, cats would have a +20 cloak of sleeping or something
bad return value from emcTrajSetAxes
emc/ini/iniaxis.cc 226: bad return from emcAxisSetBacklash
emc/ini/iniaxis.cc 226: bad return from emcAxisSetBacklash
emc/ini/iniaxis.cc 226: bad return from emcAxisSetBacklash
huh, I wonder what this is about
"I didn't change anything!"
something must be wrong with my new 'hypot' component
jepler: jmk removed some stuff last night
might be related?
no, it is working unless I attach my 'hypot' thread
what happens if you run the program without the hypot - what is the max feed it will go and what does it look like?
aha, found a possible mistake
I have emc2 running, and can draw my parts.
yo dog, whaddap?
wot? that fast?
davidf: something is surely still wrong:D
OKIt's running. :)
Yes, there is.
alex_joni: you had any doubt?
of course, or you wouldn't be here
I'm having trouble with radius comp.
davidf: what trouble?
Next time I pop a beer I'll check in just because. OK?
Any tool radius set in .tbl file causes gouging error.
did you select that tool?
I put these lines in G code:
at the top.
Then G41 D1
The fisrt tool is radius 0.125
But any non zero radius causes the gouging error.
davidf: tried the manual?
* alex_joni grins
davidf: I suspect you have an angle in your file
Yes. I did. Been trying for an hour to get it right.
Rather than an arc, huh?
So the tool won't fit.
no, an angle less than 180degrees
yeah, that's what I mean
not sure how that's called
I think the other one is obtuse
but that's < or > 90 degrees
(acute vs. obtuse)
ok, then twice that
SWPadnos: back me up on this?
I understand I think. Any angle with straight lines meeting has zero radius at the corner.
you can have angles
but the tool needs to be outside
right - just listen to Alex - he really knows what he's talking about ;)
SWPadnos: not what I bargained for.. but it's ok
davidf: I remember reading about this in the user Handbook
but this was quite some time ago.. let me refresh my memory
G41 is left hand side compensation
I get it, but I checked the code. It seems ok. If you think that's the problem I'll have a closer look at the drawing I started with.
can you pastebin the code?
Yes, G41 = Left G42=Right.
davidf: page 128
[19:58:18] <alex_joni> http://www.linuxcnc.org/EMC2_User_Manual.pdf
davidf: it has pictures :D
better explained that I ever could ;)
ah - I'm looking at rs274ngc_3.pdf, and there are only 121 pages ;)
The error says 'Near line 2 - Gougeing etc. So can I just paste the first few lines, or could the actual gouge be anywhere down the list?
SWPadnos: THE manual ;)
I have the manual on my box.
paste in a couple dozen lines at least
"In particular, the interpreter treats concave corners and concave arcs into which the circle will not
fit as errors, since the circle cannot be kept tangent to the contour in these situations. This error
detection does not limit the shapes which can be cut, but it does require that the programmer
specify the actual shape to be cut (or path to be followed), not an approximation."
hm thats annoying
fenn: what is?
that it doesn't just round the corner
I programmed the actual shape to 4 dec. places.
fenn: I wouldn't want it to do that
Right. I think it would be nicer if you got a warning with option to proceed rather than a balk.
you'd rather it wuss out and make you scramble your gcode all to hell?
fenn: honestly? :D
it's not always possible to calculate the correct path from the G-code
consider that it might have to go back 20 segments to find a spot from where a tangent arc can be started
fenn: patches happily accepted
I have actually programmed in anti vibration a couple of times
tool comp shouldnt be in the motion control anyway
it works, but is hard on ballscrews
to hell with those idiots that sharpen their tools
Here's the G code
fenn: it's not, it's in the interp.
G00 X0.1250 Y0.0000
G01 Z-0.2600 F6.0
G02 X0.1250 Y0.0000 I-0.1250 J0.0000
the interp is part of "the motion control"
G00 X2.2957 Y0.0423
G02 X2.3163 Y0.0717 I0.0312 J0.0000
G01 X2.3492 Y0.0837
G03 X2.3697 Y0.1145 I-0.0107 J0.0294
G03 X2.3585 Y0.2576 I-2.3697 J-0.1145
G03 X2.3334 Y0.2849 I-0.0311 J-0.0034
G01 X2.2990 Y0.2915
G02 X2.2741 Y0.3173 I0.0060 J0.0307
G01 X2.2609 Y0.4009
G02 X2.2766 Y0.4332 I0.0309 J0.0049
G01 X2.3072 Y0.4501
G03 X2.3226 Y0.4838 I-0.0152 J0.0273
G03 X2.2891 Y0.6234 I-2.3226 J-0.4838
G03 X2.2601 Y0.6464 I-0.0302 J-0.0082
G01 X2.2251 Y0.6476
I always do tool comp in the cam....just less chance of errors and crashes for me
G02 X2.1965 Y0.6692 I0.0011 J0.0312
G01 X2.1703 Y0.7497
G02 X2.1808 Y0.7840 I0.0297 J0.0097
G01 X2.2084 Y0.8055
G03 X2.2184 Y0.8412 I-0.0192 J0.0246
but it could be in the control I guess
G03 X2.1634 Y0.9738 I-2.2184 J-0.8412
G03 X2.1311 Y0.9920 I-0.0285 J-0.0128
G01 X2.0964 Y0.9877
G02 X2.0647 Y1.0045 I-0.0038 J0.0310
you just need to see the tool path before you run it
emc can di that
a few dozen lines at http://pastebin.com
would have been better ;)
sorry I BROKE IN THERE
I have a file with the ofset drawn, ie, the tool path rather than the material path.
Oh, sorry. I didn't understand the pastbin thing (Thought it was a typo for paste in. oops.)
are you trying to get a full circle in that girst G2 move?
heh - np
first, not girst
see - I never make typos
ooo its a gear
or a timing pulley maybe
Yes. The first cut is a 1/4 inch circle for and axis hole.
The part is a 4.7475 inch timing pulley.
with a 1/4# cutter, that results in no motion
1/8th inch diameter cutter.
no - 1/2 radius, I think
.125 is the radius in the tool file, isn't it?
The tool I specified in the tool table is .1250 inch diameter.
ok. you had said radius before
The table askes for diameter, not radius, I believe.
radius is .0625 just to be clear.
I can't even put a .01 dia tool in the tool table without error.
can I post a dxf at pastebin.com?
if it's text
Oh. I just thought it might help to see the part.
* fenn is trying to run axis and mini at the same time
and failing miserably i might add
But it's just a timing pulley with .375 inch pitch if you can picture that.
fenn run mini remotely =)
i can see the outline in axis' preview
I can just go out and look at one if I need to ;) how many teeth?
It has 1/16th inch radii at the tooth-gap corners, inside and out.
4.7475 inch diameter.
fenn: that should work!?
Or something like that. It's a standard size listed in Machinery's Handbook.
alex_joni: if i start axis first, tkemc/mini hogs all the cpu and never starts... if i start mini/tkemc first, axis throws this error: File "/usr/lib/python2.3/lib-tk/Tkinter.py", line 1130, in _configure self.tk.call(_flatten((self._w, cmd)) + self._options(cnf)) _tkinter.TclError: bad menu entry index "Show EMC Status"
fenn: that's weird. I have often started tkemc first and axis later, but maybe not lately
SWPadnos, When I drew the pattern, I used the fillet tool everywhere to put smooth arcs at the intersections of all the lines.
those 1/16 arcs - if you made them slightly larger, it might work
it could be a slight floating point error
IE, I drew one tooth and one gap with straight lines. Then filleted the corners to a 1/16 radius. Then I copied with rotate, all the way around the circle with 40 teeth. Everthing looks good even at hishest zoom.
no it gouges even with a .001" diameter tool
ok. try .07 instead of 0.0625 for the fillet radius
oh yeah - right ;)
That's what I thought too, bu I can't even use a tiny radius. So alex_joni 's idea re an angle sounds like it might be right.
oh wait G41 D1 doesnt that mean diameter 1?
Well, the manual says it means radius, even though it would seem logical that D meant Diameter. But again, thats why I tried a tiny number in the tool file. That should work either way.
It means tool 1. Yes.
And nothing but zero will work in tool one pocket.
Can't be a bug or everyone would have this problem.
* alex_joni is gone to bed
good night alex
By the way, I did not explode the drawing first. It is all joined, lines and arcs. Could that be a problem?
davidf, I suspect there's something simple going on, but since I've never used cutter comp, I can't tell what it is ;)
Good Night alex. Thanks.
Hmm.. Maybe it is a bug then. I can just draw the tool path. Thats not a big deal. It would just be nice to use radius comp so I can try different bits, and also use it to size up or down to tweak the tooth dimensions.
maybe you should ask for help on the emc-users list
(if there's a bug we'll fix it)
OK. I would think it would have shown up by now, no?
you know - I think I remember someone adding a parameter for radius comp tolerance or sometihng similar. does that ring a bell with anyone?
all I can think of is the r-format arc endpoint tolerance
that could have been it
it's possible lerman put in something for radius comp
Oh, yeah, that reminds me - I never quite understood the FERROR etc in the ini.
Oh you mean maybe that new code broke it? Or what?
there are two options for ferror: first is constant ferror, the other is velocity-sensitive ferror
I don't know how many of his changes are in the modern emc2 - he put them in emc1 very late in the game
That's clear as mud to me... :)
if you specify only FERROR, that's a constant tolerance, regardless of feedrate
ferror I mean.
Oh, Feedrate error.
no - following error
Oh. Oh yeah that's only for servos or steppers with feedback right?
yes, for the most part
I remember now. So I didn't change the defaults.
Well, I don't want to be a big pita. I'll check the emc user's list or just program tool paths. It works fine with no cutter compensation.
if you can narrow down your program to the simplest possible that shows the error, and post it to the list, I bet someone will help
I think a lot of users don't use cutter comp, we need to find one who has used it a lot
yah - never was able to use cutter comp before - (old machine) we always offset the actual cad program
that's what I do too since I don't sharpen tools
it's also useful for roughing / finish passes
it would come in handy though now - for long running parts.
yes I'm sure not saying it's not useful
set the diameter to 0.0001 over the actual tool for roughing, then to the actual tool diameter for the finish pass
I am talking for my self :)
Yeah, and I'm planning on making some very large (10 inch dia) timing pulleys, so I may want to tweak the radius to fake changing the part size slightly.
Anyway, I'll be glad to try and narrow down the problem as above. That's at least something I could maybe give back that might be of help.
Probably I'll just succeed in figureing out what bonehead mistake I made though.
something something "entry move" something something I'm sure
even that could be helpful, if you create/edit some wiki pages on the subject
I'll try just two lines connected by an arc & experiment to see if I can make it not work, & why.
I don't understand the something something entry move etc. thing cradek .
is that the beginning of the program that you posted?
It's 318 lines long.
I think you have to have a move before turning comp on - you could be anywhere otherwise
one other thing - just for the heck of it, put in a G20
then the first move after turning comp on is the "entry"
yes always put a g20 or g21
Oh, and it doesn't have % at beginning and end. But It ran ok with no comp so I figured that was ok.
I think it may be the cirst move that causes X or Y motion - do Z only moves count?
first, not cirst
I'll do the above.
doubt it, no radius compensation in Z
That seems like a good idea. & I'll look up the G20 / 21 thing too & add it.
I think you have to be very careful about your entry move
did you go over that section in the manual? I can find it for you
yep - according to some manual I read on it, you have to be sure that the entry move is tangent to the first "real" compensated move
Ah! That reallky sounds like that's it. I started at 0,0 with the first move perpendicular to the side of a circle.
[20:45:46] <cradek> http://www.isd.mel.nist.gov/personnel/kramer/pubs/RS274NGC_3.web/RS274NGC_38a.html#999476
in the manual that alex linked to, start ar page 139 or so
OK! Thanks loads. Think you guys got it figured out.
yeah, but now you have to do the hard part!
G17 can also help, according to the manual
what fixed it?
oops - had a "reado"
Think I'll add a line to the drawing tangent to the starting point for bout the inner axis hole & the first tooth top. Sound right?
A reado. Thats cute. :)
03jepler 07HEAD * 10emc2/src/hal/components/blocks.c:
add new "hypot" component. Use it to calculate the tangential velocity in the
simulator configurations (signal "XYZvel")
03jepler 07HEAD * 10emc2/configs/common/core_sim.hal:
add new "hypot" component. Use it to calculate the tangential velocity in the
simulator configurations (signal "XYZvel")
I thikn you need to do that for each compensated path
so if you cut the center hole, then the tooth profile, that's two paths
though I could be wrong about that
Right. I can see why. Otherwise it makes it's own hard corner coming in. With zero radius.
Makes perfect sense.
Thanks a lot. I'll go play some more now.
See ya. I'll let you know how it goes. 'Bye.
blind leading the blind?
hopefully blind leading the blinder ;)
jepler: does that help the les_test
* robin_sz is back in the UK
as opposed to where?
I sent someone elese to the USA, I couldnt be bothhered to go
unfiortyuenaltey he had a bit of an accident while he was there, so I had to do a week in Geneva to cover for him
'accident'? He was arrested for prostitution? He was hold on 'terrorism charges'?
[22:44:19] <giacus> http://www.med.harvard.edu/AANLIB/cases/caseNA/pb9.htm
open source brain
I read "transaxial" as "transexual"
grab dinner, and then testing the mill out
hopefully nothing blows up.
skunkworks: the "hypot" change is just for visualizing the machine speed in halscope, nothing to improve performance.
skunkworks: now you can get a display of sqrt(dx*dx + dy*dy + dz*dz), e.g., the speed of the machine, not just the speed of one axis
jepler: nice. thanks
hypotnus in 3d. :)
Try this http://www.ochenk.com/entry.php?id=63
I can hear with headphones 21000Hz.
14000 on my speakers...
I don't think the response range is good that good on my headphones though.
who's around, and wants to play a simple game? http://www.scorched3d.co.uk/downloads.php