#linuxcnc-devel Logs
Apr 05 2018
#linuxcnc-devel Calendar
10:07 AM -!- #linuxcnc-devel mode set to +v by ChanServ
12:01 PM jgnoss: I just finished building a rotary table and set it up for testing with a parport 4 axis
12:02 PM jgnoss: going to the mdi and give g01 a1440.0000 z-19
12:02 PM jgnoss: I expected to get a synchronized move between z and a
12:03 PM jgnoss: but z spins at jogspeed while z moves at F set feedrate
12:04 PM jgnoss: sorry a spins at jogspeed and z moves at given feedrate
12:04 PM seb_kuzminsky: jgnoss: i bet a spins at whatever speed it needs to, in order to complete its motion in the same time as Z's move at the commanded F-word feed rate
12:04 PM seb_kuzminsky: http://linuxcnc.org/docs/devel/html/gcode/machining-center.html#sub:feed-rate
12:05 PM jgnoss: that is what I was expecting, but it doesnt seems to be that way
12:05 PM seb_kuzminsky: does A finish before or after Z finishes?
12:06 PM jgnoss: you are right, not sure right now but I think they finish together
12:07 PM seb_kuzminsky: ok cool
12:07 PM seb_kuzminsky: that's how it's supposed to work
12:07 PM jgnoss: as it should be
12:07 PM seb_kuzminsky: :-)
12:07 PM seb_kuzminsky: it's nice when something works as intended
12:07 PM jgnoss: yes, I love linuxcnc
12:10 PM jgnoss: I have a knot in my head
12:13 PM jgnoss: how do I get a result like a helical circular cut on a 3 axis machine by using the AZ axis?
12:15 PM seb_kuzminsky: you'd program G1 with a Z target equal to the depth of the helix, and an A target equal to the number of degrees of helix that you want
12:15 PM seb_kuzminsky: so in your example above you'd get a helix -19 deep, over 4 full revolutions
12:16 PM seb_kuzminsky: a depth of 4.75 per revolution
12:16 PM seb_kuzminsky: you'd have to do some math to set the F-word so that the speed of the cutter through the work becomes what you want it to be
12:16 PM jgnoss: yes, that's what I tried to achieve
12:16 PM seb_kuzminsky: that speed will depend on where along the radius of your rotary axis your cutter is positioned
12:17 PM seb_kuzminsky: (i said "speed" but i meant "feed")
12:20 PM jgnoss: A lot of machanics in the last day so I was to lazy to do the math, and just tried with feed down to 30, but the table still was spinning a lot to fast
12:21 PM jgnoss: (for the cutter, not the machine)
12:22 PM jgnoss: OK, so my brain is still right, but I have to observe what's exactly happening on the machine
12:23 PM seb_kuzminsky: google tells me the length of a helix is sqrt(height^2 + circumference^2)
12:25 PM seb_kuzminsky: if you know what effective feed rate (in the "tool through material" sense) you want, divide the helix length by that feed rate to get the desired time for the whole move
12:26 PM seb_kuzminsky: then set the F-word to just the Z distance, divided by that total time
12:26 PM seb_kuzminsky: make sense?
12:31 PM jgnoss: yep sure
12:38 PM jgnoss: So I'll make some food to give some glucose to my brain cells, then to the shop bothering the new machine.
12:38 PM jgnoss: thank's a lot seb
05:46 PM hazzy-dev: It seems like this might be one of those few situations where G93 (Inverse Time Feed Rate) might be useful
06:04 PM homicidlbrainiac: Hey guys, I'm trying to wrap my head around NML. I have read basic descriptions, still can't seem to get it completely.
06:04 PM homicidlbrainiac: Could someone state it in another way?
06:05 PM homicidlbrainiac: So it's just a type of messaging API, right? How does this work in practice? Does it absolutely require C++, or could a C version be done?
06:06 PM homicidlbrainiac: Are there lower level drivers that deliver messages to different instances of LinuxCNC?
06:06 PM homicidlbrainiac: say over ethernet or canbus?
06:06 PM seb_kuzminsky: yes, nml is a messaging api, and a set of messages to pass across it
06:06 PM seb_kuzminsky: there are low-level drivers for shm and tcp
06:07 PM seb_kuzminsky: we usually use shm, but there's a linuxcncrsh-tcp test that shows how to run nml over tcp
06:07 PM homicidlbrainiac: OK, I am starting to get it, thanks
06:07 PM homicidlbrainiac: OK, one other thing
06:07 PM seb_kuzminsky: it doesn't require C++, that's just how the current implementation is written
06:08 PM homicidlbrainiac: Could NML be used to split up linuxCNC into different instances, say one that does trajectory planning and another that does step generation/interpolation?
06:09 PM seb_kuzminsky: the answer there is "a qualified yes"...
06:09 PM homicidlbrainiac: or maybe a different instance for each independent joint, which runs interpolation/step generation (all on different CPU cores)
06:09 PM seb_kuzminsky: have you seen this: http://linuxcnc.org/docs/devel/html/code/code-notes.html#_architecture_overview
06:09 PM seb_kuzminsky: nml connects the GUIs to Task, and connects Task to Motion, and Task to IO
06:09 PM homicidlbrainiac: Yes, I have, but as you can see, the flow of NML has question marks at some points
06:10 PM seb_kuzminsky: so any of those interfaces are natural splitting points
06:10 PM seb_kuzminsky: oh, right
06:10 PM seb_kuzminsky: Task to Motion is not NML iirc, it's a different shm messaging interface
06:11 PM homicidlbrainiac: So SHM is shared memory right?
06:11 PM seb_kuzminsky: but inside the Motion ("EMCMOT") box you can see Axis 1..N, which these days have been split out from Motion and live in separate modules connected via HAL
06:11 PM seb_kuzminsky: yes, shm is shared memory
06:11 PM homicidlbrainiac: OK starting to get it better
06:12 PM seb_kuzminsky: HAL does *not* use message-passing, it uses shared memory in a more direct way
06:12 PM seb_kuzminsky: by basically sharing individual variables between different components
06:13 PM homicidlbrainiac: So this is crazy, but I always wanted to make a machine controller using Z80s. One Z80 for the UI/HMI/trajectory generation and one Z80 for each joint.
06:13 PM seb_kuzminsky: so Motion has a variable for where it wants Axis 1 to be, and if you have a stepper driving Axis you'd have a stepgen component in HAL reading that variable directly out of shared memory
06:13 PM seb_kuzminsky: no tcp is currently available here unfortunately
06:13 PM homicidlbrainiac: It's somewhat related, started my inquiry into how NML works
06:13 PM homicidlbrainiac: Yeah I think I mostly get HAL now
06:13 PM seb_kuzminsky: cool
06:13 PM homicidlbrainiac: still, it looks like HAL is also used to instantiate processes that run the various components
06:14 PM homicidlbrainiac: so I'm trying to figure out the RTAPI as well
06:14 PM seb_kuzminsky: the "easiest" way to split linuxcnc up would be to put the GUI on one machine, and everything else on a different machine, and connect them with NML-over-TCP
06:14 PM homicidlbrainiac: brilliant
06:14 PM homicidlbrainiac: that's kinda what I was wondering
06:14 PM seb_kuzminsky: that's not something people generally do, so it's poorly tested and probably has a bunch of hurdles to get it working
06:14 PM homicidlbrainiac: glad I'm proving to have somewhat good intuitions.
06:14 PM homicidlbrainiac: OK I'll do that
06:15 PM seb_kuzminsky: :-)
06:15 PM homicidlbrainiac: and if I figure it out I'll talk to you and see if it's up to snuff
06:15 PM seb_kuzminsky: look at tests/linuxcncrsh-tcp to get an idea of how it's supposed to work
06:15 PM homicidlbrainiac: So I have a few PCs that miss being in the game
06:15 PM homicidlbrainiac: they don't have parallel ports
06:15 PM seb_kuzminsky: and send us PRs to fix all the problems you run into ;-)
06:15 PM homicidlbrainiac: so what's the quickest/dirtiest/cheapest way to expose HAL to the real world?
06:15 PM homicidlbrainiac: parallel port PCI/breakout?
06:16 PM homicidlbrainiac: Sorry for my ignorance, what is PR?
06:16 PM seb_kuzminsky: parallel port is a relatively easy way to get HAL bits into the real world, yeah
06:16 PM homicidlbrainiac: OK, I think I can do this.
06:17 PM seb_kuzminsky: oh, PR means Pull Request, it's how we ask that you send us bug fixes and stuff
06:17 PM homicidlbrainiac: As you probably realize, I'm doing this whenever I get a free bit of time, which is sporatic
06:17 PM seb_kuzminsky: https://help.github.com/articles/about-pull-requests/
06:17 PM homicidlbrainiac: ah got it
06:17 PM seb_kuzminsky: sure, that's how we all do it
06:17 PM homicidlbrainiac: I need to get better at revisioning systems.
06:17 PM seb_kuzminsky: no one has it as their job to work on linuxcnc, we all just pitch in here and there as we find time and interest
06:17 PM homicidlbrainiac: cool, well I really appreciate your patience with me (and from everyone else for that matter)
06:17 PM seb_kuzminsky: welcome :-)
06:18 PM seb_kuzminsky: good luck on your project
06:18 PM homicidlbrainiac: Thanks!
06:18 PM homicidlbrainiac: The idea is to learn linuxCNC by trying to re-implement it on ridiculously smaller systems.
06:18 PM homicidlbrainiac: It's the only way I know how to learn.
06:19 PM homicidlbrainiac: By the time I do that, I should be able to make contributions back to linuxCNC in the process
06:19 PM seb_kuzminsky: i first started learning linuxcnc by writing HAL components, then branched out from there
06:19 PM homicidlbrainiac: It's a brilliant piece of work
06:20 PM homicidlbrainiac: Gotta go run to dinner with the family. I'll be back (terminator voice)
06:20 PM seb_kuzminsky: awesome :-)
06:20 PM homicidlbrainiac: Have a good one! And thanks again!
06:53 PM Tom_itx: i don't need preempt just to run mesaflash to interrogate an ethernet card do i?
06:53 PM Tom_itx: or load a bitfile to it..
06:54 PM seb_kuzminsky: nope, mesaflash doesn't need any realtime
06:54 PM Tom_itx: i didn't think it should
06:56 PM pcw_mesa: mesaflash will run on windows...
06:56 PM Tom_itx: i'm using the one from github
06:56 PM Tom_itx: are they the same?
06:57 PM Tom_itx: btw, thanks pcw_home
06:57 PM seb_kuzminsky: yeah, they're the same
06:57 PM seb_kuzminsky: use the v3.3 branch
06:58 PM Tom_itx: probably need to find a windows ver i don't need to compile
06:58 PM Tom_itx: until i get a box set up
06:59 PM Tom_itx: ahh i found it in the zip..
07:02 PM pcw_mesa: The one in the zip is ancient, probably best to built the latest
07:03 PM Tom_itx: i've got the latest on the linux box
07:03 PM Tom_itx: do you use gnuc on windows to compile it or something else?
07:04 PM Tom_itx: i'd have to set up that environment for windows..
07:06 PM pcw_mesa: I cant remember, its been ages
07:06 PM Tom_itx: does the old one not support ethernet?
07:06 PM Tom_itx: i'll just wait until i get preempt set up on something
07:07 PM pcw_mesa: it does but its missing a lot of features
07:12 PM Tom_itx: do you happen to know what the wire tacked to the FPGA is for? testing i presume...
07:12 PM Tom_itx: i'll probably remove it unless it needs to go somewhere
07:44 PM pcw_home: Yeah I was testing something about suspend
09:42 PM jepler: reboot coming up on forum, should just take a moment
09:45 PM jepler: and we're back