chris@rover:~$ halcmd -s
unique to script mode?
scrut harder! :)
no, simple bug, halcmd -s does something wrong (it expects a command to be on the commandline, but there isn't)
oops. that's probably my fault
EMC: 03cradek 07TRUNK * 10emc2/src/hal/utils/halcmd_main.c: fix silly segfault on "halcmd -s"
embarassing how long it took me to fix that
getopt() is kind of obscure
that's an understatement
hey I even did what I set out to do, after that sidetrack
and what was that?
write a simple 'waitfor' script that exits when a hal signal gets to a certain state
for M1xx stuff?
some of the ladder on the lathe has a 'request' input, like request-low-gear, set by a M10x, and I wanted M10x to wait until LowGear actually happens, in this case after the spindle stops.
same for hi/lo gear, collet open/close
the interp waits for M10x to exit (successfully) before proceeding
so it ends up doing just what I want
what does it do if M10x returns failure?
M5; M10x (low gear); S300 M3
jmkasunich: aborts I think
probably not easy to implement "gearshift is stuck" detection tho
some stuff, like collet closer state, actually has feedback
but I have not hooked it up to anything yet
so you could detect "can't close the collet because there is no air pressure" for instance
so the collet closer does not use the waitfor script at the moment
yes it does, but only because I make it wait for the spindle to stop
but it doesn't waitfor "collet closed"
I think I wrote that, but it will rarely/never wait
I guess error detection in many of these cases would be a timeout
if 10 seconds and collet still open, something is wrong, return failure and abort program
the whole thing is a hack, but it's an easy hack and it does what I want
cradek: M66 could do that too, with a timeout
but that means putting it into g-code .. which is probably a pain
in today chechout trunk: stopping program cause error: can't do that (EMC_TRAJ_SET_TELEOP_ENABLE) in auto mode with the interpreter idle
selecting [machine->skip lines with '/'] while running program make this option inconsistent with preview
micges: the second is an expected behavior -- you have to reload after toggling that option for the preview to be accurate.
cradek: your revision 1.189 of axis.py causes the other behavior micges mentions
er, wait, I'm wrong about block delete + reload too -- there is an explicit reload there; it must also be broken by that same change
man. something has got to be done to make systems boot into the RT kernel after EMC2/RTAI installation
I think that's been 50% of the user problems lately, maybe more
I almost wish that we didn't have the install script.
Is there a way to expand that script to modify the bootloader?
I don't know if it's intentional that the RT kernel isn't selected, or if it's that the version is older and therefore isn't selected in the "normal" way
I know it can, since new kernels get selected usually
This box has that same issue.
there are downsodes to automatically switching though, since the extra modules aren't installed by default
so some people would lose video settings (many I think), and some will lose their net connection (wireless) ...
It looks like there are quite a few options in this menu.lst that I've not seen before.
there are "meta-options" and actual options
I think things with one # can be meta-options - settings that the scripts use to decide what to do
## should update-grub adjust the value of the default booted system
## can be true or false
## should update-grub add savedefault to the default options
## can be true or false
[13:56:23] <SWPadnos> https://bugs.launchpad.net/ubuntu/+source/grub/+bug/88507
apparently, the default noot image is only updated if vmlinuz and initrd.img are symlinks, which doesn't happen by default any more
I do see two generic kernels listed there. It would probably be instructive to see how a new kernel changes the default boot.
[13:58:55] <SWPadnos> http://ubuntuforums.org/showthread.php?t=809163
apparently, updatedefaultentry is there to keep the current kernel as the default when you install others - ie, it does the opposite of what we want
Right I see that in man update-grub
I think if we changed that and then a new generic kernel came along it would point to that rather than the rtai.
yeah, that's the danger of a stock install then EMC2/RTAI install
the generic kernel is still there, and is likely to get updated more often
We need some way of making the rtai replace the generic at position 0 in the list.
actually, if we'd change to the RT kernel as part of the install, then having updatedefault=true would keep the RT kernel selected
You lost me but I believe you.
jepler: what about block delete is broken?
I'm getting the teleop message too though. I thought it was an old bug that shows up on machines that take a long time to abort, but I must have at least made it worse
at first glance I don't see axis.py even sending that message - must be deeper.
but I don't see how it is called. I will study it more later.
cradek: well, I didn't test block delete myself, but micges says it's broken (doesn't reload? doesn't reload right?)
jepler: option is switched and preview is not reload while running
KimK_IA is now known as KimK_IA_AFK
(I thought maybe it wasn't automatically reloaded just because you switched the menu option, but I saw in that diff that it is reloaded there)
second problem is in set_mode_from_tab function in axis.tcl
jepler: while running selecting block delete switch that option but while running program the preview isn't reload at all
while clicking "block delete" option while running program the preview isn't reload at all
I have to admit I don't know what changing block delete while running should do, and if I knew that, I then wouldn't know how to make emc do that
in terms of the preview, about the only thing that would make sense would be to have "potentially deleted" blocks in a separate display list, and turn display of that list on and off with the switch
but it's still wrong, so why bother
no, with block delete you are choosing between two entirely different programs
can't it be changed while running?
and there's also the problem of the first move that isn't optional starting in an unknown place
if you can change it while running, you can choose between many many programs
one problem (I almost said "the" problem) is that while running you've already interpreted ahead
right, and the preview is the ultimate there - it previews the whole program with whatever conditions exist at load time
ok then didn't allow to toggle delete switch while runnig program
I'm pretty sure it's meant to be changeable during a program run
emc isn't prepare to allow such things (and much more) while running becouse long interp queue
that is the simplest fix that would give consistent easily-understood behavior
yeah - changes like that should cause a queue clear and re-interpret
emc should have to interp queueing but parameters to queued commands must be taken while running specific command - this will allow great imporve functionality and future developmnent
anyone know how to do that ?:)
I'm not sure I understood whatyou said ;)
emc should preload all gcode and interp should only execute block deleted command if block delete switch at the moment is off
else it should skip queued command
you can't do that, for the reason cradek pointed out
what if the optionally deleted block is a mode change (G90 or G91), or a units change, or a plane change?
so the question arises - does the block delete input get looked at when the interp is reading ahead and queueing, or when the blocks are getting executed?
should do the second
in that case, you can't do more than one block of lookahead
and if g90 is in block delete then it could be skipped
err - you can't queue more than one block, and even that may have to be re-interpreted if the switch changes
emc must allow such that I said
it doesn't do that now
the implication of what you said (if I understood it correctly) is that there can be no interpreter lookahead
which isn't necessarily a bad thing
why not ?
because g-code can change the expected machine state on every line, and that optional delete therefore gives 2^N possible programs (where N is the number of lines of lookahead)
can't it be that it will look ahead and execute queued block command only if switch is off ?
consider this: a program that makes a hexagon, but 3 sides are optionally deleted
the shape you get depends on how many of those optional blocks are deleted
actually, I'm not sure what the queued entities are - if they only contain the next endpoint, (like line to X,Y), then it could work
if they say "line from x1,y1 to x2,y2", then it can't, because x1,y1 depends on which blocks are deleted
and that's just geometry, let alone modal settings
And parameter assignments.
and then add the possibility that there may be 1000 optionally deleted blocks, and you have an interesting queue stalling problem :)
note: this may all work fine in practice, but in theory it looks pretty bad to me ;)
The state of the block delete switch should only change when the machine is stopped.
I don't know that that's the original intent
consider something like an optional tool change (skilled operator decides when the tool "sounds bad", and hits a button so it can be changed at the next opportune moment)
axis is never going to show you a preview with the block delete changed part way through. it's also not going to reload while the program is actually running.
So, the block delete switch would be kept ON until the operator wanted to change a tool.
The operator would turn OFF block delete so that the blocks containing the tool change were executed.
whichever sensitivity it needs, yes
Well, just feed hold the machine, jog to a good position and change the tool, etc. (Whoops -- we can't do that with EMC) :-)
lerman: that solution to change tool is much better that using delete swich
Except that the one with the delete switch would work right now.
it could have been useful on the Mazak also, when running those servo mounts
you do each station as a single optionally deleted call
maybe a pause between them also
when you're priming the assembly line, you hit the button to skip the second two stations
next time through, hit it after station 2 has started, but before the station 3 call
(it's harder when you're fluching the queue though - that's left as an exercise for the reader :) )
I think that's a pretty decent use for block delete.
in any case - it seems to me that allowing it to change during a run is desirable
Agreed. But notice that the pause between stations is desirable (if not strictly necessary).
sure. I don't know if there's a way to pause with G-code though
there's optional stop, but that's like M2 AFAIK
Doesn't M0 do that?
is that pause?
like you hit cycle start to continue?
cool then. I sit corrected
Or M1 (optional stop).
I use M0 to pause when I manually change tools. With a MSG to tell the user what is required.
good night all
see you micges
So. M0 (msg, Turn on BLOCK DELETE to skip station 1)
I like it. (I know, I already said that.)
EMC: 03jepler 07TRUNK * 10emc2/src/rtapi/rtai_ulapi.c:
EMC: fix segfault in halcmd when the usre locked memory value isn't increased
EMC: at some point, rtai_malloc seems to have started returning -1 for failure. accomodote both versions of rtai by checking for -1 and NULL.
EMC: 03jepler 07v2_2_branch * 10emc2/src/rtapi/rtai_ulapi.c: from TRUNK: fix for halcmd segfault on modern systems when locked memory is not available
how nice that this was obvious the next time I looked at it
I think block delete is an abomination whose time is long past
specifically, its time ended when "O100 if " was added
block delete gives the external system (HAL) or the operator the same kind of control
if "if" can check an input pin, then that's still there, of course
M60 can check an external pin
you even get to check one of several pins
so for example the mazak program could have a switch for each of the three stations
EMC: 03bigjohnt 07TRUNK * 10emc2/nc_files/probe-hole.ngc: add hole probe
EMC: 03bigjohnt 07v2_2_branch * 10emc2/nc_files/probe-hole.ngc: add hole probe
EMC: 03bigjohnt 07v2_2_branch * 10emc2/docs/src/ (Getting_Started.lyx Master_User.lyx): add hole probe and some updates
EMC: 03bigjohnt 07v2_2_branch * 10emc2/docs/src/common/ (user_intro.lyx userforeword.lyx): add hole probe and some updates
EMC: 03bigjohnt 07v2_2_branch * 10emc2/docs/src/examples/gcode.lyx: add hole probe and some updates
EMC: 03bigjohnt 07TRUNK * 10emc2/docs/src/examples/gcode.lyx: add hole probe
EMC: 03bigjohnt 07v2_2_branch * 10emc2/docs/src/Master_User.lyx: minor edit
KimK is now known as KimK_NE_AFK
it would be nice if you could change block delete while paused (M0)
I do not believe you need to be able to change it at any time
although I would be surprised if old controls without lookahead don't let you do that
I don't *think* BOSS does though, but probably only because it's on a button that's shared with a bunch of other functions