I don't like G28
ngc/emc does it different from everyone else
I re-read the spec, and it isn't clear about whether all or only specified axes are supposed to move
oh that's interesting, maybe I should read that
but at least one axis word is required I think, which would imply that only those specified should move
I just figured emc worked according to it, but didn't look
ngc says at least one axis is required?
nope - it doesn't. nevermind that
nobody (except stuart) says what coordinate system the waypoint is in
at least, not in the user manual from the menu on Dapper
"All axis words are optional" (ngc)
I think someone (could have been Stuart) said that it's the current system, including relative/absolute
so, it says the opposite of that
conveniently enough, that's how emc does it too
right. I either read a different revision or remembered wrong
I'm betting on 2
to me everyone else's definition is goofy: the axis words are overloaded, they specify which axes to move home, and also which ones have a waypoint
well, one thing to think about going forward is whether the spec has the right thing to do in "modern times"
so you can't move straight up, then move them all home (like emc's G28 Z1)
yeah - if you can't do G28 XYZ, then it doesn't make much sense
but you could do G28 G91 X0Y0Z0 (or whichever is relative mode)
that doesn't move up first
that's just all-home, like our current bare G28
G28 G91 X0Y0Z1
but that's not a move to Z=1, you're forced to make it relative
personally I think the intermediate move part is silly
just use G0
and having to switch to relative mode to specify which axes to move is silly too
heh - how about a new feature that lets each axis be specified in relative or absolute mode. just use +- for relative plus, and -+ for relative minus :)
but, that's what everyone seems to want to do
or should that be -+ for plus and +- for minus?
"pull the quill up" = G91 G28 Z0 (silly?), or G0 G53 Z0 (sane?)
* cradek kicks SWPLinux
the "silly" way screws up a sticky mode
its not just "pull the quill up"
OT but somewhat related: are the current axis positions available as parameters?
yeah it is, that's the point of this I think
I think it was the latest email from stuart that says at least some controls DO a homing cycle
yeah but we're not going to do that...
that's definitely counter to the EMC manual
but it provides a function that can't be done any other way
if G28 is just G0 G53 X0Y0Z0, why even have it?
it goes to a predefined point, not 0,0,0
jmkasunich: < cradek> I don't like G28
steves_logging is now known as steve_stallings
I don't see how we can avoid breaking ngc programs and still solve this
we can keep the bare-g28 behavior...
I just looked up the Haas implementation. They will accept a G28 with no parameters as having no waypoint and go directly to machine X0Y0Z0, but if a parameter is present, only the axes called out will move.
but the behavior of g28z1 will be (very) different
steve_stallings: that's good to know
... and if EMC accepts a G28 this way it will not cause problems with Fanuc code since Fanuc code will never do this.
As best I can tell the Haas does not trigger and actual homing cycle, nor do I think EMC should.
I'm glad we all agree on that...
(that would be very messy to do)
For those poor soles with stepper systems that they do not trust, having a G code that would
trigger a homing cycle could be useful.
and that was "wet" computer between my ears, not a spell checker....
oh sorry, I figured it was a pun on purpose
OK, yea, thats what it was....
so, what is the problem with EMC's G28 as Stuart sees it?
Cradek - in G90 I believe the waypoint is in the current (active) coordinate system - but it is also an error to call G28 G90 if tool offset has not been canceled first (G49)
well I have always used bare G28/G30 and I think the change we're converting toward wouldn't change that behavior
steve_stallings: it changes the behavior of emc's e.g. G28 Z1
and EMC does what? stops with Z at machine 1.0?
no, it moves Z to 1 in the active coord system, then moves all axes to 0 in world coords
stuart's way would move Z to 1 (active) then Z to 0 (world)
ah, so the moves all axes is the problem, and I agree with Stuart (and Fanuc and Haas)
I sure accept that we're the rogue control here and we should get in line -- but I'm very unhappy every time we break everyone's old ngc programs
I guess that's what release notes are for
now that I know the behavior we want, I wonder if I can get it right
who can help me test this?
where is Stuart when you need him?
says he who doesn't even have an EMC sim machine at the moment....
From the last Digest I received it appears Stuart is saying each execution of G28 is doing a homing/index seek.
at the very end, he says some controls do and some don't, and he thinks emc shouldn't
I'm thinking that maybe other than at the program header he might want to use G30 in place of G28
yes g28 and g30 will definitely work the same
but does G30 do a index seek?
no gcode is going to do an index seek in emc
steve_stallings is now known as steves_logging
hrmm.. updated to latest TRUNK and after make it doesn't run for sim
will do a clean compil enext..
crap, same error..
does TRUNK sim run for any of you?
I'll try it in a bit. what does it do to you?
it fails creating shm for the toolSts channel
and io craps out
* alex_joni restarts the VM.. might be soem laftover shm
64-bit or 32-bit?
some leftover shm
ok, a restart made it work again
probably some forgotten shm's
it sure wouldn't hurt to take a look at removing all shm segments either before emcsvr is started or after it's stopped during shutdown
jepler: I am looking at adding support to read/change variables from the var file
am I correct that atm AXIS doesn't have any support for this?
ouch. I think that'll be a major concurrency problem (from all the talk I've seen about it)
I want to implement it through task
no direct access
and remove the direct-access from tkemc
ah - that's the key. I thought there were multiple holders of the information, but I didn't realize that it was 1 copy for the EMC core, and other random copies for UIs and that sort of thing
actually it's a file
which EMC reads and maintains
but tkemc sometimes opens it directly
then tells emc to re-read
which only leads to trouble imo
plus it makes remote-UI a problem
isn't the gile loaded into an internal array/buffer, and "periodically" written out?
it gets written out from time to time
of course - it's ASCII in the file and floats internally
right - I know it's a file, but that's not the form that's used internally
which means that the internal form and the persistent form need to be synchronized from time to time
latest at shutdown
anyway - I think your approach is a good one. are you planning on adding NML commands to get/set vars? (or using any that may already exist)
first I'm studying the existing code for a while
well, I see two major approaches - the simple one that would be easiest to write (EMC_NML_GET_VAR(int varnum, float *value) and corresponding SET message/function)
and then there's the generic, discoverable, extensible one :)
variables don't only have numbers now, they have names
there are also scoped variables
what is the goal here?
ok - names were another level up - something like GET_VAR_BY_NAME ...
wait - which EMC parameters (from the .var file) are scoped?
I should have used PARAM instead of VAR up there ...
SWPadnos: none of the things stored in the .var file are scoped
the var file can't store named variables either
jepler: in tkemc you can open a "variable editor"
ok - it's those parameters we're talking about
which allows you to modify the var file directly
which is not good imo
jepler: I don't understand why AXIS parses the inifile in search of PARAMTER_FILE either
alex_joni: axis makes a copy of the var file. Otherwise, "previewing" a gcode file could change the "real" var file just as though the program got run
that'll be a sticky problem, I think
jepler: I understand.. but I think this shouldn't be done through direct access to the file
there would need to be checkpointing or the ability to explicitly change the parameter file (with separate get name, set name, file_read and file_write commands)
I think named vars don't get saved into the var file
alex_joni: you're right, there's no provision for them to be saved
not sure if that's a feature, but so far no-one complained about it
I am sure that few people even understand that they can change the .var file to have other numbered variables be saved
the axis preview is actually a significant departure from the original EMC architecture - it essentially forks a separate interpreter for the preview, but needs to leave the state of the "real" EMC core alone
let alone wish that named variables could be saved
I think Ken mentioned something about saving named parameters as "to be done later"
cradek: you increased the MAX Joints for XYZABCUVW ?
but it's not a power of 2 any more!
at least it's a power of 3
SWPadnos: you sounds like some manga episode
more power to me!
the power of 3 will not be defeated by evil
gantrykins + xyzabcuvw is so nice
* alex_joni wonders why we have trivkins
alex_joni, have you ever heard ofa "delta pod"?
I think that was the name of the macione
loadrt gantrykins [TRAJ]COORDINATES would do just fine
delta pod? doesn't ring a bell
I'll see if I can find a photo
[15:07:12] <alex_joni> http://www.deltaenvironmental.com/ecopod.asp
I visited the Delta Tau booth at Semicon, and they hada robot that was similar to a hexapod, but used parallel struts for each of 3 legs
the manupulator platform always remained parallel to the base plane (the base was above the manipulator), but otherwise it's a lot like a Stewart platform)
only 3 axis though
3 DOF, that is
incidentally, something I found when at semicon was that more or less all of the manufacturers of machine controllers seem to have a $2000 unit
and the delta tau has user-definable kinematics (though I'm not positive that's in the $2k model)
look at tri-a-glide, there's other machines, very fast pick and place http://www.parallemic.org/WhosWho/Companies/Profile001.html
yep - that's the type of machine I saw. thanks
there's one called a flexpicker from abb
[15:24:36] <tomp> http://robotool.ifw.uni-hannover.de/pages/maschinen_pages/mikronTriaglide.html
Delta Tau probably just called a Delta Pod for marketing reasons :)
though theirs had fixed struts
[15:25:03] <alex_joni> http://www.globalspec.com/FeaturedProducts/Detail/ABBRobotics/IRB_340_FlexPicker_Parallel_Arm_Robot/19084/0
150 picks / minute
that's kind of slow
150/min is only 9000/hour, and I know older Fuji machines could do 18k parts/hour
but if that's per manipulator, it may be very good
(I think the Fujis had 3 or 6 heads)
that's picking it up and placing it somewhere
this is big, not for SMD parts
[15:26:42] <alex_joni> http://www.robots.com/movies.php?tag=97
hexaglide was the name i originally encountered, from 'indoor flyer' site http://www.ifr.mavt.ethz.ch/publications/honegger98b.pdf
i was looking for edm oprbiting head, and was pointed to this device used by AGie WEDM heads to taper.
the Delta Tau unit was cool - each strut had a joint similar to a luxo lamp, and the tor would change the effective length just by rotating the shoulder outward, so the elbow would have to bend in (and the wrist), effectively shortening the strut length
SWPadnos: check out the movie I posted..
yep - that's the construction
except for the rotator (which is neat)
in that video, it doesn't look like it maintains parallelism
but it could be me :)
there are longer movies on abb's site
another form is a delta mechanism http://www.csem.ch/detailed/a_611-microdelta.rm
[15:38:54] <tomp> http://www.csem.ch/detailed/a_611-microdelta.htm
haha large working space (200 mm x 200 mm x 50 mm)
so you dont run out of room right away at that speed ;)
SWPadnos: some nice videos : http://www.abb.com/Product/seitp327/262ce7c337e2b552c12570c9003ff7e6.aspx
is center strut just air pots?
tomp: for rotation
oh, with U-joints at top and bottom
[15:48:30] <alex_joni> http://library.abb.com/GLOBAL/SCOT/scot241.nsf/VerityDisplay/E3C20F5D647C80E3C1256B4B0044108B/$File/IRB%20340%208%20in%20a%20row%20Mildred.mpg
jepler: I like these touch-off changes
jepler: thanks for uncrapping it
jepler: hmm on the dialog could you make it have P1...G54 etc, like the menus? I suspect nobody knows what "P7" is without really thinking about it
tomp, that delta mech is what I saw, though it was bigger
I don't know what P7 is even with thinking about it :)
I bet that's why people want to use the gui to avoid using MDI G10
hrmm.. is there any reason why a printf doesn't show up in the console with sim?
no, I do that all the time
did you compile?
there was some problem with time/date.. so I'm doing a clean build now
alex_joni: mmmmm gipels cool movie,.
cradek: I think I nailed it, can you take a look?
well duh. if I had just searched for "delta robot" first, it would have been easy :) http://www.parallemic.org/Reviews/Review002.html
a reverse delta used as 3D input device ( half of a waldo ) http://www.indoor.flyer.co.uk/kinematics.htm
hmm.. this is interesting: http://www.indoor.flyer.co.uk/kinematic.pdf
that's Graham Stabler's site, isn't it?
yeh, he began to build some. he told me AGie uses them for uv heads on wedm
Mach has "equations" that you can use to generate motor positions. I think you have to write VB code to make the DRO show the world coordinates
joint to axis? mach displays joint?
hmmm. nope - it displays world only
(inthe PDF anyway)
and you can only jog in joint
it appears that there's no joint limiting
joint velocity / accel limiting, that is
Now the x and y DROs will react as expected as will the feed rate as long as the A and B axis can keep up.
^^^ from the PDF
may I grumble about task?
sure, grumble away
it sucks :D
c'mon - you can grumble better than that!
it's not fun to try to see things with DEBUG=0xffff
grep may be your friend, but sadly is needs you to know what you're looking for before it can find it :)
argh.. this is so frustrating
it only took 4 hours to track this down
now another half an hour to remove printf's
* alex_joni wonders how he ended up fixing bugs in task
what did you fix?
the step gets stuck
[19:30:37] <alex_joni> http://sourceforge.net/tracker/index.php?func=detail&aid=1680007&group_id=6744&atid=106744
alex_joni: you're my hero for fixing task problems
lots of heroes around
jepler is the ultimate one for doing docs work
only you (task) and jepler (lyx documentation)
you qualify for tp work :P
nah, I threw it out and rewrote it - nothing heroic about that :-)
hope I limited the number of new bugs I introduced with my fixes to under 10
jmkasunich, that A/D is one chip I want to be able to support with my SPI implementation
(for the mesa)
generic spi is gonna be "fun"
the spi logic might be generic, but the hal driver certainly needs to know what its talking to
yeah. I've been thinking about it a bit, and I see that at minimum, there needs to be a separate SPI clock source and input, output, and I/O modules
I/O may be doable as just an I and O block
I would think that "spi" could include clock and data lines in one module
only if you make the number of data channels a parameter
the idea is that something like that chip, or a dozen separate ones using a single clock, can work with different data words (parallel serial data connections :) )
I know - I was planning on one clock and N datas for my N single channel converters
so either a parameter for the number of ins and outs, or separate blocks
dunno which is worse to code - probably a single unit with multiple data channels is easier
hard to say
I haven't looked closely at generic SPI
I picked out an A/D and D/A that were compatible in terms of waveforms
both need 16 clocks with a select that goes active once per transfer
in terms of implementing it in an FPGA, I suspect that a monolithic approach is easier (like software, where defining interfaces gets buys you nothing in the short term)
yep - the data word size needs to be definable - some 16-bit chips take a 24-bit word that includes address info and other stuff
(the AD5764C is a quad 16-bit DAC that does that)
my "good design approach" thought was to have a module that generates the clock and a "word sync" signal - each of data shifters would then have outputs like chip select that would be active for as long as they're shifting data
they would all start at the same time, but possibly finish at different times depending on word size
separate word shifters for the varying word lengths?
each data channel is a shift register (clocked by the clock module), a data register (possibly double-buffered), and a control word
plus some other control lines to the outside world, most likely
thisis what I hope to implement on an airplane with a laptop this week :)
or at least get started
I'm going for kiss
supporting only specific devices
well, I have a paying customer that will need this stuff, so this is y job for the next month or so
and doing some other stuff in HW that is device specific
for example, the A/D will sample at or close to 1MHz
way to fast for the PC
but the FPGA is going to be aware that its a 12 bit A/D, not a generic SPI thing
I can get us something more generic, which hopefully won't take many more resources than the simple inflexible approach
so it will keep a running sum of samples and running count of samples
that makes it pretty easy for the driver to do block averaging over whatever the drivers sample rate is (some KHz, not Mhz)
yep - I was thinking that the A/D interface would have a parallel data bus, which the SPI poert would convert to serial
greatly reduces the anti-alias filter requirements
a parallel port would add R/W signals, etc.
I guess I need to know soon if I'm trying to bite off something waaaaaaaay bigger than I can do in the time allotted :)
what is your customer doing with this?
or is that a secret?
it's a big-ass power supply for ECM
to be perfectly honest, I'd aim for simple and specific
gotta do waveforms and that kind of thing
yeah, I may end up doing that. as I said - quick and dirty is generally much better in the short term
the customer did make one tactical error though - they said "price is no object at this point" in my presence :)
the infrastructure that I've been trying to do should allow simple and specific modules to be added to the generic driver
doesn't the stepgen have a single timebase and multiple output oprts?
I'd rather add modules like "AD7656" to it
instead of having an "SPI" module
sure - that makes sense
but there is still a need for synchronization across modules
right - pwmgen is a better example,
stepgen doesn't really share anything
but for a pwmgen, generating the "triangle" or other carrier is non-trivlal gate-count, and wants to be shared
if I have two of these chips, I want the sampling and clocking to be synchronous regardless of gate count
that is probably doable by sharing the reset lines or having a "global reset" capability
shared clock and chip select, individual data lines
but it seemed that factoring out the clock and word controller would be better
at least thats the approach I'm aiming for
on the ADS1100 (?) series, there aren't as many control pins to deal with
even for the 5i20, I/O pins are a more constrained resource than gates anyway
for the 5i22 its even more extreme
oh, there are parallel I/O pins?
control pins I mean
yeah - like I said before, 7.5x the number of gates, only 1.33x the number of pins
I've been looking at devices that have only clock, data, and chip select
CS, conversion start, standby if desired ...
right - most devices allow you to start a conversion on the firs tclock edge
the 7656 is also parallel capable
heh, 64 lead package
unfortunately, I don't think the board I'm making will be usable in the machining world, but with some additional protection (isolation, input buffers, etc), it may be
yeah - 64 leads, 1cm square :)
to be honest, the machining world probably doesn't need 15 bit
this chip isn't much more expensive than 14-bit, or 12-bit bipolar
though there are an additional 2 channels that most people wouldn't need, so the per-used-channel cost is higher
for machining, most people don't use A/Ds at all
DAC + encoder is the mainstream servo arrangement
the board will have both directions, so again, it's going to be more expensive than needed in this realm
it will be neato for HAL - imagine what halscope will be able to do :)
the plan is that the board will have a 50 pin connector on one end that mates to a 5i20?
(assuming some buffering in the FPGA)
one or two 50-pin connectors
halscope would have to be heavily revised if there is buffering
and screw terminals
right now it assumes that the timebase = the code execution rate
I ain't touching that change
after all, every other signal in the HAL will still be limited to the thread rate
it will be easier if the requested addition of save/load is done
I don't see that as making a difference
halscope lets you look at any hal thing, once per thread run
what you are describing would be used to look ONLY at external signals, at MUCH more than once per thread run
although you could start with halscope's code and hack it to work as a soft oscilliscope
halscope would only need to be used as the display / UI - something similar to halsampler can be the data source
save/load decouples the data from theRTenvironment, and that's lots of the work
now I'm really confused
I don't know what you are thinking with this scope thing
just an aside, really
halscope, the user app, isn't RT at all, so replacing scope_sampler with something else shouldn't be much of an architectural change to halscope (the app)
if its is "halscope", that means that it can capture any HAL variable (some of which might represent outside analogs), and ALL channels would be in sync, both internal and external ones
if you replace the RT part with something that acquires 100 samples every time it runs, instead of just one, it certainly could be used as a faster scope
but it couldn't be used to look at other stuff
it should be possible to make something that can mark regions of samples as having been between HAL thread runs
it would either be a memory hog, or have very short record lengths
ie, writes to a register on the FPGA generate a timestamp, which can later be compared to sample times
if the A/D rate is 20x the hal rate, you need 20x the memory depth to capture the same time interval
it would certainly be a memory hog on the FPGA
or 1/20 the time
so either you capture far fewer HAL samples, or craploads of external samples
anyway - that's a diversion - we don't need to confuse things with that at the moment
there are already software based analog scopes out there anyway
ROFL - topgear is soo funny
faster than 250 KHz too, but probably not at 6 channels/16 bits
british TV show
usually about fast cars and stuff
this time about tractors
heh - have you seen the Toyota Hi-Lux episode?
SWPadnos: few scope applications ever need (or can use) 16 bits
granted, halscope has a lot more dynamic range than most scopes
[20:11:51] <alex_joni> http://www.youtube.com/watch?v=UgdjK_z5E14
I can only go from 500 ps to 50 seconds / div horizontal. for shame
I was referring to vertical
yeah - 20 mV to 50V is pretty low compared to nano to mega-units
alex_joni: wtf are they blowing up?
they are plowing
using dinamite to get it done faster
jmkasunich: like I said.. crazy.. btu funny
I love when he drives that monster tractor to town
just got to that part
its not really that big
love the yellow tractor
that's a drag race
[20:20:33] <jmkasunich> http://www.youtube.com/watch?v=0EeHqED4kSg
that will move more than the farm tractors
hmm, long strings of driverless vehicles are a bit unstable
any idea when 'outgoing motion' is < 0 ?
jmkasunich: the middle tractor is like the D11 you pasted
but way bigger
the D11 is bigger you mean?
no, way smaller
not bloody likely
the one the guy rode into town was also with tracks
but had 4 tracks
and hydraulic articulation
cat D11 112t
its the size of a small house
I once got to drive a D7
stood next to a D10 - it was huge
D11 is even bigger - 2nd biggest dozer in the world
komatsu 575A-2 ?
my uncle has a few crawlers. 2 d9 and some smaller ones.
father finally sold this http://www.electronicsam.com/images/ebay/MVC-165V.MPG
it was nice to have - had a backhoe that we had mounted to it also.
Alex - smack down http://www.youtube.com/watch?v=4-DGMrLGnLg&mode=related&search=
[20:31:36] <jmkasunich> http://www.youtube.com/watch?v=0EeHqED4kSg
half way thru they flatten a pickup
jmkasunich: I think that was the d11 video again.
[20:33:10] <jmkasunich> http://www.youtube.com/watch?v=zlykNYrxoQA&mode=related&search=
sorry bout that
no problem. ;0
but this is a local drive for me... http://www.youtube.com/watch?v=foHRK73uG6M
( I was there to watch )
Skullworks-PGAB: in the videogame?
In fact I made the interior camera mounts for there 1990 run
no On Pikes Peak
they had 2 Bell Jet ranger helicopters chasing him to film
but @ 12-14,000 ft they can't keep up so they had to leapfrog
go straight up the side of the mountain and catch him coming out of the next urn
[20:42:30] <Skullworks-PGAB> http://www.youtube.com/watch?v=e-wMMKKoVKA&NR=1
I went to the race 12 years in a row - then had to be out of state for a wedding...
[20:48:43] <jmkasunich> http://www.youtube.com/watch?v=t9WSHS67zn4&mode=related&search=
what is M0 ?
isn't that stop ?
* alex_joni wonders why it shows up under active M-codes
in axis - it actually pauses the program so you can start where you left off.. (which is what I am used to)
argh.. I don't understand this
you don't want to know :P
[22:30:12] <alex_joni> http://sourceforge.net/tracker/index.php?func=detail&aid=1735431&group_id=6744&atid=106744
does verify have the same kind of "branch" problems that axis "preview" brings up? (like vars / modal words being set in verify and not getting unset later)
or would that be unrelated?
no, it actually tells task to run the file
but discards the output from the interpreter
does verify do a program reset at the end?
the odd thing is this:
verify then run works
verify then step works strangely
ok, just not step
but step is implemented as run, then set some falgs
doesn't "run" reset the program first though?
err - ok. I don't understand that :)
'step' is implemented internally as a call to 'run'
and diffing debug=0xFFFF logs doesn't turn up enough signal to overvcome the noise?
the odd thing is with step is that interp reads through the whole file then starts executing
hmmm. is that regardless of whether verify has been run?
no, only after verify has been run
without the verify it works ok
btw, 'verify' is 'run' with startline -1 :)
really twisted way of thinking
uh - yeah
not to mention the use of goto - label
lots of stuff was done with the premise that (a) CPU cycles are expensive and (b) this needs to act just like a paper tape machine
which jumps out of an if () else statement
that's relatively common, I think (for goto)
* alex_joni hates things like that
it can make it harder to trace when looking at the code
this is in motion (usrmotintf.*) ?
no, everything is in emctaskmain.cc
ah - ok
where's the place that run(-1) gets called to verify?
it calls emc_run with -1 as the argument
no wonder why I couldn't find it :)
emc_run is emcsh.cc with a call to sendProgramRun(-1) from shcom.cc
it's not even a task issue
* alex_joni whines
obviously, you're still looking at task code
ooooh - not task, eh?
emcsh and tkemc updating
(well, to me as an outside observer it's interesting. I'm sure to you it isn't)
well.. I hope I'm right about this one
I'm assuming that it would act the same in mini
dang I'm good :D
another one line fix, and 3 hours wasted :D
that's it for me today
good night guys
thanks for all the fixes today
glad I can still do this :)
petev sure has a way catching odd bugs
if it is any consolation - I cought one of the bugs he introduced a few weeks back ;)