all your real time tasks, that is.
Ah... In a previous life, I build systems using Sun Solaris. It allowed user tasks to be specified as having real time priority. It worked pretty well with the slight "quirk" that a RT task could hang in a loop which would hang the system. To prevent that while we were debugging, we were careful to run a process at highest priority that looked for an abort signal.
build s/b built
there's a big difference between soft realtime and hard realtime
when things being late can result in damage to property or loss of life, you want hard realtime.
icee how many pins are you using for addressing? 3?
Well, the big issue is whether the context switch time is bounded. Then it's a matter of degree in the sense that the time might be 25 usec or 250 msec. Both can be hard realtime systems, but the later probably isn't good for many hard real time projects.
to talk to the dsp
l: The question is whether on the soft realtime system it is really bounded at all
l: if there's anything that disables interrupts or deals with locks in the wrong way.. it's not.
to pick which dsp you want to talk to i mean, since there are (n) dsp's present on the bus
l: do you want to bet your system on a massive monolithic kernel like linux being correct for all those lines?
fenn: TBD; the axis protocol uses 5 bits for a register id, 3 bits for a 'board id'
You can disable interrupts, but the time must be bounded (and preferably, known).
it's to be determined whether all the DSPs pretend to be one 4 axis board or 4 1 axis boards
lerman: and you need to know that for all paths, and for all combinations of interrupts that can happen
and then adding those up, along with the timing information for higher priority tasks, tells you whether you'll be able to guarantee achieving the timing requirements for a particular task
fenn: though 4 one-axis boards is likely.. why?
er, the 'pico protocol', not axis protoocl
icee: that's a good argument for running with an external dedicated processor. I often go out to my shop and find that my EMC system has crashed overnight. (Well, it could be that the multiple emacs sessions I'm running are causing problems, but I don't really know.
icee: so you are specifying "this variable on that dsp" in one instruction right?
fenn: we're using the EPP addressing protocol. IEEE 1274.
so an address cycle to set the current register
then read/write cycles
with autoincrement of address
it just adds one to the address each cycle?
I am planning on using some of the unused pico registers to implement a more efficient protocol, btw
so you can do an address cycle with data '5'
then read (location '5'), read (location '6'), write (location '7'), etc.
If we do the 'one axis per board'. i'm planning on this register layout (all hex):
i'm pretty new at all this.. why do we need a variable greater than 8 bits?
14: read- flags (fault state), 15: read- encoder byte 0, 16: read-encoder byte 1, 17: read- encoder byte 2, 18 write: direction, MSBits of duty cycle,
19 write: lsbits of duty cycle, 20 write: flags/commands
so one axis update looks like
address cycle (14), read, read, read, read, write, write
7 EPP parallel port cycles to read the flags, encoder, and write the new duty cycle
well, we want more than 8 bits of precision on the duty cycle/effort level
because more precision is better, and we have 10 bits of ADC and can have even more precision with how we adjust the 'leading pahse' angle and dithering
and with the encoder, we can have as many as a million counts per second.
ok so it's based on the resolution of your feedback
well, not just the resolution of the feedback
i meant the resolution of the a/d converter
even if we're running a control loop to keep current at '304', there's a difference between 304 leading the rotor by 10 degrees and 20 degrees
as to the encoder stuff.. you can get 1 million counts per second or more
if you're updating at 1KHz, that means you need at least 2000 possible values to avoid ambiguity
arent we updating at less than 1khz?
we're hoping to update at 10KHz, actually.
each servo loop it checks all (n) encoder readouts?
so that's 7*4 parallel port cycles for 4 axes.
so the maximum theoretical is about 35KHz
but, ... i know we won't get anywhere near that for various reasons
i'm not clear on what 35khz refers to
35KHz servo updates.
read encoder / write new duty cycle
that's based on 1000000 / 28
back up a bit :)
maximum encoder count is like 8000 cpr * 3000 rpm * 60 sec/min
add another 0 to that
i think you have your math a little wrong
how many encoder pulses per second?
fenn: Didn't you want to divide by 60? You want counts per second. => 8000 * 3000 / 50
(the motors are 3000 rpm max right?)
Yeah, that's what my brain said -- but my lying fingers couldn't understand.
4500 rpm max
they provide 2000 counts/rev though.
but quadrature gets you 8000 no?
i don't believe so.
cpr is ambiguous.. does it mean counts/rev or cycles/rev?
When specing encoders, it is usually cycles/rev.
sorry if i'm driving everyone nuts
where does this million counts/sec figure come from?
Too late for that (at least in my case).
fenn: it's a design value with conservatism
8192 counts * 4500 rev/min / 60 sec/min
gives you 600000
so my design value says we need to cope with 1M
so, to deal with 1M
updates can be at most 128 microseconds apart with 8 bits of count resolution
If you reliably read the counters every msec, you need only a 16 bit counter. That can save 2 reads per axis.
l: two reads?
I'm getting the following error when I try to do get an "sudo apt-get dist-upgrade" http://paste.ubuntulinux.nl/4087
any one know what to do?
Don't you have 4 byte counters now?
f: 32.7 milliseconds apart with 16 bits of count
l: no, 3 bytes
same as the pico systems univ pwm controller, which we're endeavoring to be compatible with
and 16 seconds with 3 bytes of count.
I'm using the pico systems controller -- compatibility would be a good thing (TM -- martha stewart)
alpha get rid of xfonts-base
l: we're building a controller for synchronous ac motors that is loosely compatible with it
alpha you can reinstall it if it doesn't work
as in, we might replace the protocol, or work on the pico drivers some.. but for the 1 axis case it will be compatible for testing
i guess for our 'abbreviated' register map we could just use the two least significant bytes of the count
that's worth a 15% performance improvement in number of parallel port cycles
it sure makes things worse if something bad happens for a second and EMC stops updating and then resumes
I'm having trouble understanding (as in I don't) how one relates the update rate and resolution to the count rate.
l: let's say you have an 8 bit counter.
if you are updating, and the counter moves less than 128 in either direction
it's obvious to see which direction and how far the thing rotated
if it moved more than 128 counts, there's ambiguity.
If EMC stops updating and resumes, you should be able to detect a counter overflow by keeping track of the last time it was read.
yah, but keeping track of such things costs cycles on the microcontrollers.
Yes, I know that -- I thought you were talking earlier about the output (PWM) resolution and update reate.
Basically, all I am doing is whenever there's a parallel port address cycle, it will reset a timer
l: no, our effective resolution only has to do with the resolution with which we can measure the current levels. our pwm resolution is much greater
l: we can get a little more resolution than our quality of measurement of current, because we can dither current levels and because we have control of phase angle
Ah... I understand now.
if the timer expires, we'll e-stop.
still, even in that case, it would be nice to preserve machine position
yes please dont make me re-home every time emc misses a cycle
fenn: well, hopefully EMC will be able to keep above the 1KHz reliably which this will demand to keep functioning
how far above 1KHz it can reliably do will control how aggressively you can set PID gains and accelerations
(more so for large, fast machines)
so i'm looking at the PIC16Fxx chips, and they use 8 bit a/d converters, so i wouldn't need 2 bytes of output right?
since i can't sense the current more accurately than 8 bits
Apropos the previous discussion, you could always move the PID and rest of the control loop onto the controller.
f: do the PIC16F* have a hardware quadrature decoder?
f: it sure is a nice thing to have.
with hardware filters, etc.
and anyways, even if you have lower requirements, i'd urge you to still use our protocol and preferably our boards and designs
this is for a brushed servo controller
there's a big advantage to us pooling our efforts in driver writing, the controller software, the maturity of the board
f: OK, so use our board, but with a different amplifier and slightly different software
you'd just basically null out the sine table stuff
why does it matter what's on the board if i'm using the same protocol?
say you have 2 brushless motors and 2 brushed motors
and the plug into the same bus
it doesn't, really; but there's an advantage if we have multiple eyes looking at everything
i really am coming at this with zero experience
yah, that should work fine, other than with perhaps parallel port loading
fenn: so, leverage our experience, and use our board.
my previous digital circuit experience is a binary counter
I'd like it if our board could drive brushed servos, and it should be easy to write that software
i need to learn how to do this stuff on my own
your board could easily drive brushed servos
but it's overkill
and the price reflects that
and it adds up quick if you have 6 axes
i'm trying to build a small cheap hexapod system
most of the price is in 4 layers, the perimeter area for the connectors, and all the protection on the i/o's
the difference in price for the microcontrollers themselves is small.
this is a 4 layer board??
resilience to noise and safety from EMI is a good thing
i will build my single sided, 8-bit, pic-based board, and when i can afford it, i will attempt your design
f: if you really want to go cheap, you ought to use a CPLD; that way you can get quadrature decoding
f: OK.. well, pay particular attention to how the analog inputs are isolated, the TVS parts (SP720), the differential hookups for the decoder
and if you're dealing with anything with any significant mass, make sure you have a robust emergency stop system
also note what i'm doing with the WAIT signal on the EPP
any suggestions on where to start with cpld's? (never heard of a cpld before)
because that's kinda tricky.
f: learn a HDL (I like VHDL) and download the xilinx foundation ISE stuff.
i'd think in xilinx's little PLCC parts you could fit a quadrature decoder with filter, and a few pwm generators with deadtime. maybe even enough for 2 axes.
2 axes brushed, that is.
vhdl is like spice?
a CPLD is pretty much a simpler FPGA, without external config memory
hardware description languages are ways you design digital logic
it's like a programming language but most everytihng happens in parallel
how does this help me understand microcontrollers?
it doesn't. it helps you understand digital logic ;)
and how things like microcontrollers and microcontroller peripherals are designed
fenn: how are you planning on doing the quadrature decoding?
i hadn't really figured that out yet
f: how many mips are you going to have on your part?
because if you're planning on like.. having an interrupt handler per quadrature edge, that's going to be 10-30 cycles per encoder count
ok so 10Mips
so 100% cycles doing encoder work will let you handle up to 300,000 edge counts/second
or 2500RPM; you'll obviously have to be doing other things, like responding to hte parallel port quickly, so that's going to top you out at 1200RPM or so
the motors i've got have 500 counts/rev encoders
the fastest flash parts are 5 mips, btw
hmm it said 100 ns instruction time, i assumed that was equivalent to 10mips
was that 16C?
Once upon a time, I looked at using an attiny13 processor to do conversion from quadrature encoder to up/down counts. That's a $2 chip that runs 20mips with 8 pins. You could use one of them as a front end to the "main" processor.
yah, that's another thing fenn
you should use atmel parts, not microchip parts if you can get away with it
only reason i'm using the dspic is the quadrature decoder
they are much, much, much nicer to deal with.
why is that?
f: the programming of the parts is simpler, the peripherals are better designed.. you can target them with gcc without engaging in black magic
there's good open source collections of headers (avr libc, etc)
and perhaps as a best item
no weird messed up bulletins like this:
Free development tools on Windoze or Linux.
In some cases, depending on the revision of the MPLAB ICD 2 and the
dsPIC30 DSC device, a crosstalk problem may exist when the device is
being programmed. Due to the locations of the PGC and PGD pins,
crosstalk may degrade the signal and cause the MPLAB ICD 2 to fail
programming of the target device. To correct this, try the following:
1. Construct a RJ12 modular cable and replace the 15-inch cable
that comes with the MPLAB ICD 2. Keep the length as short as
possible, preferably under 6 inches. Also, remove the jacket from
the cable, so that the conductors are far apart from each other
(especially the PGC and PGD signals). The standard MPLAB
ICD2 modular cable is wired as shown in Figure1-2, that is, RJ12
pin 1 on one end connects to RJ12 pin 6 on the other end. This
solves the problem in nearly all cases.
'remove the jacket from the cable, and spread out the conductors, because the drivers in our parts are too strong for the programmers we make to deal with the crosstalk'
Using atmel products solves the problem in ALL cases.
that's because the atmel sinks less current right?
fenn: atmels source/sink 20mA on the i/os
well, -most- parts do. as always, trust the data sheet
microchip designed both their programmer and the structure of their parts input/output buffers with respect to noise
hence all these weird suggestions about filter network on digital pins and things from the enthusiast community
er badly with respect to noise
i hadn't seen any of that yet
f: the attiny26 is only $2.50, runs at 16MHz which is almost 16 mips
lawrenceg and I are both pretty experienced doing digital design, and we're having a hell of a time just trying to program the dspic
and in #robotics people are always coming in complaining that their microchip programmer or their homebrew programmer doesn't work with PICs
just to make sure, i need 8 data i/o, 2 quadrature, 2 limits, 1 home, 1 fault, 1 a/d, and 2 pwm's right?
fenn: I have one global fault line on my board
icee: So, if the reason you are using the dspic is for the quadrature encoder, why aren't you using an external one (say a cpld design)?
you need 8 data i/o plus 4 signals i think
lerman: because onboard peripherals are nicer, and if we had to talk to the CPLD that would have overhead in pin count
why the hell do you need a cpld to decode quadrature?
f: having a digital filter is very nice.
isn't there a simple hardware circuit, like a 555 and a flipflop or something?
how are you going to deal with glitches/noise?
f: a CPLD is probably cheaper than trying to use discrete parts to do it
and is certainly smaller in board area.
and I've decoded quadrature on microcontrollers before.. it is a pain and easy to screw up.
But I'll bet it's just as easy to screw up in a CPLD.
l: oh, it's probably easier to screw up in a CPLD. but at least you can fix it in a CPLD
on a micro, you may not have the capabilities with your board layout to get the results you want
you might not have enough cycles left over, or enough filtering, or whatever, and you just lose.
OTOH, that's a good argument for using a chip w built in quadrature decoder.
l: yah.. and since we need a microcontroller (to hold sine tables, etc) the dspic was an easy choice
What type of digital filtering is commonly used in a quad decoder?
the only other option was an FPGA, but acceptable FPGAs come in nasty packages and require level conversion
l: you can require a quadrature settle to a new value for at least N cycles before you count the transition
N clock cycles
so bouncing, glitches from supply noise, etc don't matter
if you do the obvious thing to decode quadrature in a microcontroller-- put an interrupt on one signal, and then sample the other signal for direction
if the encoder goes from position 0->1, and an interrupt fires, and then back to 0 before your interrupt is serviced, you're screwed unless you're very careful
No, no, no. (As I'm sure you know) That's just plain wrong.
what if you debounce the raw quadrature signals with an external chip
but doing it right is relatively expensive in cycles, and strictly limits the maximum time you can disable interrupts
f: a glitch is not the same as a bounce.
well, a schmitt trigger comparator with the right filter network can clean things up a lot.
and the circuit i built in my board design does a -little-
One of these days, I'll have to write the code for the attiny13 and see how fast I can do the conversion from quad to up/down.
(bottom of page 5, http://lyle.org/~mlyle/servoctrl.pdf
l: well, then you wouldn't deal with interrupts, you'd probably just infinite loop, right?
isn't that totally useless then?
What did I just look at -- bottom of page 5.
f: you need to deal well with all 3 cases; glitches, a signal bouncing, and when the encoder is 'jittering' between two output values
l: that's how the encoders are hooked up to m yservo control board
differential signals in, through RC and bias circuits, to a RS-422 receiver (max3095), off page to quadrature decoder on micro
f: isn't what totally useless?
a micro that can't do any interrupts
Jitter is easy if you permit hysteresis of one count -- and impossible if you don't.
f: if all it is doing is one task, writing it without interrupts is better.
it's more performant
but what is it going to write to?
icee said it.
f: output pins on the microcontroller, or a SPI, or whatever
f: polling is unpopular these days, but it's often the best way to deal with real world systems
It reads from the encoder and outputs to two single bit ports. one is a count up signal; the other a count down signal.
you just.. need to know what you're doing
Polling is the way to go for a processor dedicated to a single simple task (or even a single not so simple one).
l: or for several hard-realtime tasks, when you can tightly bound the runtime for each
l: e.g. adding something to your quadrature decoding loop, to check whether the SPI has finished writing, and if so, to provide another character..
this is too much for poor old fenn
fenn: before you go too much farther, come up with a cycle budget
of the things you need to do, the rates you need to do them at, and how long you think they'll take
how long does it take to read an a/d? 1 cycle? 100 cycles?
and since this is an early system, and some of the things-- the quadrature decoding, or responding to parallel port requests-- are time critical.. allow significant safety margin
Even a bad guess is better than no estimate.
f: it probably takes 3-4 cycles to start the conversion.. then a lot of wall clock time
then 3-4 cycles to read the result out. more if you do it in an interrupt.
will i need to use interrupts to talk to the parallel port?
I'm not using them.
here's the thing, though-- you have less than 10 microseconds from when the strobe goes low on the data port to deal with the request, assert wait, and deassert it
A recent system I worked on ran almost everything off a 1 msed interrupt. At each interrupt, it read the result of the last A/D conversion and started the next one.
at 5 MIPs, that's 50 instructions
icee: So, if you didn't use interrupts for the parallel port, you had better not do much in any interrupt handlers you do have.
that's what i'm talking about with cycles btw. instruction cycles
l: well, I have 20MIPs to play with
but yah, i'm not going to.
so what does that mean? i have to do everything in 50 cycles?
i have to do stuff, and check the data line every 50 cycles?
then do more stuff.
f: you have 50 cycles from when the computer asserts a strobe to finish responding to it
f: yes, it means that you have to break things into 50 cycle hunks.
so if it takes you 20 cycles to respond to it (optimistic), you must check at least every 30 cycles
or, you can use an interrupt, but then you're incurring the cost of the interrupt firing
and it means that any code that is running may be delayed by up to 30 cycles
icee: you didn't say whether you really like the idea of using the parallel port. I suspect it's the worse choice except for all the others.
i had no idea this stuff was so tight
l: well, EPP is pretty nice.
l: I don't love the parallel port, but.. existing drivers on the PC side, etc, makes it a slam dunk choice
f: I'm a little concerned by it even on the dspic parts, to be honest
i'll be a lot happier once one of us (LG or I) sees it working
f: what you're talking about doing, at the count rates you should see, etc
isn't impossible, but it's very borderline
on an atmel part you'd have a lot more margin
you don't have a multiplier, on 16F, right?
that really pretty much rules out running a PID or PI control loop on current levels
i was just going to compare commanded and sensed
how do you implement a pwm on a microcontroller?
preferably using a timer
with output compares
you program the output compare registers, and the PWM line is low during the time the timer is less than the output compare reg.
the DSPIC makes it nice and easy for us to generate nice PWM for h-bridges, because it is set up to create complementary signals with dead time
i think my brain just quit.. bbiaf
Well, folks, I'm calling it a night. Thanks for "talking". Ken
do you really have to keep everything in your head at the same time? or can you break it up into manageable smaller tasks?
* Jymmm hands fenn a "Compact Brain Flash" card =)
jymmm are you reading this stuff? i have to do everything in 30 instruction hunks!
fenn: Nope (I'm a lil smarter than that =)
* Jymmm chuckles
Just FYI... http://www.plasticsmag.com/routing.asp?fIssue=Jan/Feb-05&aid=4139
oh it works
look! look! it's twitching! poke it again!
just setting up a irc client
* fenn likes xchat
fenn: REMOVE THE BARE ELECTRICAL WIRES FROM YOUR FLESH!
now now, i can do whatever i like with these wires
windoz firefox plugin
besides, how else am i going to use your "compact brain flash" card?
fenn: It's flash... no electricity needed - built in solar cell
it runs on brain power right
markwayne: we actually do talk about cnc stuff, believe it or not
ok yea I used to get on the years ago
what happened to paul btw
he seems to have lost interest.. :(
must be a lady
commerical interested pressing maybe
that last BDI build thrash was enough to make a saint cuss
so I can understand
jymmm why are you using downcut bits?
fenn: I'm using downcut in wood, not plastic
to keep it from splintering?
fenn: Ah, no. Talked to Les... He said when doing cnc routing it can actually be very dangerous not to use downcut.
how do you keep the chips from building up in the kerf
fenn: as upcut bits cn pull the material out ooff the table - plus no surface splitering as well.
markwayne: the "fna" on the router blows them out.
Now... Using a 1/8" downcut full plung into 3/4" material is another story... they pack into the void BIG time =)
but 3/4 is heavy and is less likey to lift off the table
not really =)
Another thing is I trust Les. If he has a reason for saying to do something a certain way, I dont question it other than to understand why.
i always question everything to understand why
unless i feel like i am being annoying
it's the best way to learn, and it generally exposes if the other person doesn't know what they are talking about
blind faith is for lemmings
i wonder if emc supports constant feed/rev mode...
like threading :)
threading support is kinda up in the air still, from what i've heard
but some progress has been made since the mazak retrofit
one thing at a time is a good policy
mill then lathe
they needed to be able to orient the spindle in order to do tool changes
so some code was put in to control the position of a spindle, and voila
i think icee thrashed my brain pretty good.. nothing i say sounds correct anymore
well you have to encode the spindle any way
a tachometer works pretty well for most app's
spindle orient is sometimes done with machinical widgets
should I be concerned with toxic gases coming off of PVC plastic while cnc routing?
you need a index pluse at least
you feel dizzy?
i havent done any yet actually
fenn: Yes... PVC produces HCL
fenn: Acrylic, ABS, PP, PET, HDPE and safe to machine, PVC, CPVC, or any other polmer that has 'chrlo' in it's name should be avoided for machining or burning.
what am i gonna do with all these .5" sheets of pvc i found? :)
fenn: Acrylic, ABS, PP, PET, HDPE and safe to machine. PVC, CPVC, or any other polymer that has 'chrlo' in it's name should be avoided for machining or burning.
are yousure it's PVC ?
it's gray, and smells really bad when you cut it
could be ABS
actually it only smells bad on the chop saw, lathe turning doesnt smell
chop saw?! not for plastic
er, miter saw i mean
80 tooth carbide alternate top bevel
sounds right, I have/use a 60T
abrasive chop saws are stupid
nope... good for glass and dense metals
or rock (brick, etc)
there's one in my shop and it stinks like hell, is inaccurate, leaves a wicked sharp burr on every cut, and burns the snot out of everything
and it's really loud and gets grit everywhere and cuts out the power
i mean trips the breaker
lol, toss it my way if you dont want it =)
it's not mine :P
If I keep this up I'll have every saw I'll ever need and not every actually buy one =)
though, I have had to replace the blades =)
who gave you a saw?
jigsaw, compound mitersaw, tablesaw, radial arm saw
i have to make do with HF crap
well, these arent' all in the best of shape... some rebuilding is needed
the HF bandsaw isn't too shabby at all though.
That's what I've been told by lots of folks
i've heard it's a good deal for the money, but it's a piece of crap nonetheless
jest a sec...
goes on sale for $150 every so often... http://www.harborfreight.com/cpi/ctaf/Displayitem.taf?itemnumber=37151
I have been told that you DO need to buy a good bi-metal blade though.
the one that comes with it is crap.
fenn: Didn't you order some headphones from HF ?
yeah they are really nice
the sound cuts out at too low of a level though
I have a big head... are they REALLY adjustable?
no they arent adjustable at all
bummer, ear plugs are inconvienant
they are kinda tight.. not something you would want to wear for 8 hours
ah, ok. nm. good to know though
might be able to adjust it by bending the metal
I suspect the cups are small though
it's just a metal spring headband
hmm actually it is adjustable a little bit
but you can't adjust the clamping pressure, only the distance from the top of the head to the ears
i could take a picture if you like
sure, but no rush
also 589 and 590
try 590 again if it messed up
anyway it's worth $15 if you dont have any decent earmuffs
fenn: ok, cool. if they have them in the store I'll check em out.
i want to hack them to receive am/fm and then get an fm broadcaster for my computer
I wouldn't want to be distracted like that when I'm wearing them.
why are people on cnc zone so fuckking dumb!?!?!
of course, the only helpful post was by lerman :\
i am thinking 2 chips per servo.. one chip reads the encoders, the other does PWM; both chips talk EPP
Jacky^afk is now known as Jacky^
sounds a lot easier than mixing polling and interrupts
Jacky^: just got my brain blasted into oblivion
yesterday i pasted an url for you
probably you already know ..
about pics and servos
i think i missed that
[09:09:37] <Jacky^> http://www.jrkerr.com/icproducts.html
i found it tome ago ..
it seems the simplest way to get servo up and running
it's just a chip!
maybe in the software section of website there's the source code
yes, just a chip ..
anyway i dont need all that, emc already does PID and trajectory planning
emc2 have hal encoder comp. too ..
but i dont think work great
i mean as rpm/min it can do
will be a bit slow..
you mean run the quadrature pulses into the parallel port??
yeah that's too slow and too many pins too
so, you wnat to use a pic for it ?
would be a good idea, i think
i've been told avr's are much easier to use
more peripherals come standard, easier to program, faster chips, etc
this all seems kinda ridiculous for a first electronics project
like i should be making a blinking led first or something
i'm still confused about why ttl is 50ma
like, how do you get more than 50 ma?
btw, i heard someone here around was working on that ..
a blinking led is a good way to know you programmed the micro right
maybe icee, or some other, can't remember
i think lawrenceG was working on that
ask all before start
hmmm saturday and still no volunteers for a vote counter
maybe i will blast off a message to my LUG and see if anyone volunteers
the mystical white bear emerges from the bamboo thicket at dawn...
O great spirit, bless this servo driver design! May the other chip programmers be free from envy!
May the winds be always at their back, and high in negative ion concentration.
the world would be much more positive if the ions wouldn't be so negative
no, no, you've got it all backwards.. http://tinyurl.com/b2fzr
an APT interpreter... mmmm... it makes me all warm and fuzzy just thinking about it
would be especially sexy with good preview functions for Axis
alex_joni_ is now known as alex_joni
03alex_joni * 10emc2/src/emc/usr_intf/iosh.cc: commented out savaToolTable, not used caused a warning
03alex_joni * 10emc2/docs/AUTHORS: added names to AUTHORS, please add your name here if you submit code to emc2
03alex_joni * 10emc2/directory.map: clean up and bring up to date
03alex_joni * 10emc2/src/emc/hal_intf/ (Makefile exthalmot.c extintf.h): removed obsolete hal_intf files
* Jacky^ play /home/jack/KC and sunshine band.mp3 :P
play /home/jack/The sound of silence.mp3
hard working ? :P
i know ..
thats all work maded in the week :P
[15:42:02] <alex_joni> http://bash.org/?top
i'm helping my daughter to get bluetooth working on his debian
but have a lot of upgrade.. 145 mb :/
we are using 4 mbit dsl, but debian mirrors wont go up to 20-25 kbs
damn bandwith !
88% [259 xlibmesa-dri 27832/5709kB 0%] 29,0kB/s 9m23s
03alex_joni * 10emc2/src/emc/Makefile: removed hal_intf from the Makefile
just type /quit whoever, and it'll quit them from irc
try it :P
emclogg3r is now known as Jacky^
can't believe this still works :))
got some mail...thanks!!!
les_w ah, very cool =)
had to work a little this morning
getting ready for the corporate suits...they are coming next week
les_w sounds like fun
well I need to make sure the funding keeps rolling in
But I hope to get a little break after the meeting
Just make the check out to rayh.
break= setting up the new spindle and getting the turkey stuff going
les_w: Heh.... too bad you dont have a REALLY old barn that have falling down (maybe your neighbor across the street), then setup some 1950's oscope, VOM, etc in there and watch them freak out as you tell them this is your lab.
not far from that
les_w: I mean with gaping holes that a horse coudl fit thru
straw on the ground, etc
using '70's vintage tektronix scopes
well, I am doubling the shop size.
sepearate tronics lab
and metal shop
the machines start rolling in right after this meeting
les_w: I mean like this --> http://www.kumeyaay.info/santa_catarina/SantaCatarinai/Old_Shack.jpg
darn.. wrong channel
les_w or this --> http://www.magicravenphotography.com/Ballarat,%20%20Old%20Adobe%20Shack.jpg
you have been snoopin around taking pictures of my house again...
les_w: Well, I reserved the best for last =)
anyway...I have a big tax liability this year ...REAL big. It's time to buy machines.
get some laser-hybrid welding stuff
I think I will get a plasma anyway
lasers are cool too
les_w get a laser engraver ~$24k
I'd suggest a microplasma too
built some laser tables before
well, so far, some big woodworking tools...plasma, a VMC, a few other things
I do have a photo of a shack that the roof caved in as well, but not online.
I guess I will end up with something like Roland's place
* alex_joni goes back to clening up...
He has a lot of space doesn't he ray?
les_w: maybe you'll host a fest for emc sometime? *wink*
Quite a bit of space. More if he didn't have two giant G&L machines
We have had NIST here before
and a 20' travel grinder
I would like a setup like Roland's.
he must have 20,000 square feet or something
But I am at that point where I have to decide if I want to live at a factory or commute again.
Is it living at the factory, or just getting out of the house?
well, whether to build large facilities here on the property...
at some point I might have zoning problems
so, paint 'John Deer' on the side of the CNC Center you'll be getting.
exactly....or make the outside look like a barn
I'd like my factory to be about a mile or so through the woods.
rayh: factory or stiles?
Visited with a guy near Nashville who has his "rebreather diving stuff" in a barn.
a mile or so away would be good
As you walk home through the woods, you shed the day's work.
rayh: That sounds awesome
I think I ought to buy some close by land zoned business and put something up
something near 3 phase power
Have to make my own here
Yep. I wouldn't have it at home if I had a choice.
I've worked with to many people who do.
Well I made the current shop "convertible"...It can become an apartment. Has full water and sewer hooked up
les_w: I'll move in next week =)
most apt have w&d as perks, I'll have cnc machines!
I once new a guy who had a woodworking shop in his house
living room had band saws, etc in it
oh, I was playing with some acrylic last night... gonna have to really work on the chipload though.
les_w: I'm *ALMOST* that bad, but not quite.
acrylic is tough
I cranked the rpms to their lowest, but still had some crap using a router v bit. Gonna have to buy more tooling
I found this set of articles though.... very informative --> http://www.plasticsmag.com/routing.asp?fIssue=Mar/Apr-03&aid=3751
I still dont understand what an "o" bit is
an "o" bit is an output bit, as opposed to an "i" bit which is an input bit
alex_joni "o" vs "v" (smartass)
I don't know "v" bits (verbose? maybe?)
well back to the shop. Couple more hours. It is a nice warm fall day, so ought to go play 9 too.
not sure about an O bit
golf is a dangerous addiction...
a_j: do you know how upload and images work in the wiki ?
nope, last time I tried they didn't...
I think it was broken the last time I tried. SteveS is working on it.
I found a nice paper on double-jerk limited trajectory planning
how's it called?
I'll try to implement it in matlab first
the file I mean..
? for the wiki ?
les_w: me neither but osburn mentions it too in their catalog
etla: the paper you found
traj planning and feedworward design for high performance motion systems
2004 american control conference
and the file?
who wrote it?
got it thru ieee explore...
I see... who wrote it?
a_j: in scholar.google.com put "trajectory planning and feedforward design for high performance motion systems"
it's about 7th in the list
yeah, but on the first page it should say who wrote it..
labrechts, boerlage, steinbuch. eindhoven univ tech
ahh.. ok, never read it
if I understand it welll enough I'll try to write somehting in matlab
* alex_joni read a few papers on traj planning
even understood some, but it would take too much time to do that
do you know anything about the work cradek did with segmentque
he did some bugfixes
etla: Les has his own 9 holes in his backyard.
jymm: oh, thats nice !
etla: Yep, just get 30 acres and a tractor and you can hove your own 9 holes too!
03alex_joni * 10emc2/directory.map: more fixes to directory.map, also added install directories proposed
etla still there?
les_w: 9 holes that quick?
If you are reading about trajectory planners...it's a good thing. I't's a real problem with emc.
alex...not 9..2. Just a par 3 and 4 in the back.
well about 400 meters.
you need practice :D
400 m - that's doable in a single shot
les_w: I'm here, just doing some experimenting in matlab
sucked down a good paper from IEEE?
traj planner requires solution of 3rd deg equation which I don't remember by heart... google is my friend
yes, it's a conference paper with more or less a cookbook recipie for calculating trajectories
I have the solutions in an old college text
We have tried and tried and tried to improve the tp in emc.
I think there are two separate issues
No one seems to be able to follow what's in there, so it's kind of hard to rewrite it
one is the trajectory of one simple move, i.e. G0X100, wether that is done as a trapezoidal move or something more fancy
the other thing is blending, lookahead, G64
the first one is in the paper I'm reading
well, in g64 emc has cubic subinterpolated trapezoidal
but the algo breaks down at high speed
a big problem is servo rate
and there is no tolerance
tell me more about servo rate!
It is just too slow for HSM
It's fine for hobby stuff
where is the bottleneck
There seems to be a brick wall of about 400 microseconds
with any speed computer
it needs to be 5-10 times better for modern HSM
so does linux/emc run on anything with that kind of update rate ?
les_w: the 400 microseconds is to do what?
etla, the bottlenck is user/RT comms acording to paul
400 microseconds to update all the servos
And using a 2ghz machine isn't twice as fast as using a 1 ghz machine?
ken, seemingly not.
even with a 150 MHz machine
although I have not run an actual servo loop in a 2 GHz machine to confirm this
I'd think that means we are memory speed limited. If the code and data don't stay in cache, the extra processor speed might not do any good.
I wish someone would give it a try
Paul suspects 200 MHz or 2 GHz...same speed.
So, one questions I have is do the RT extensions to Linux disable the cache for RT processes?
Not a programmer, but I would think it would have to. Statistical methods would seem to be of little or no use in hard RT
cache? which cache?
The processor (on chip) cache.
nope.. those are not accessible to be switched off
same goes for pipelines
that's why a 2GHz processor sucks for RT
because branch prediction & co .. are sometimes wrong :)
and my little dsp boards are getting <50 microseconds
So, I think we either need to find out why it is so slow... OR port this to a dedicated fast standalone processor.
I have one...it already uses the interpreter
fast and cheap
the kmotion card
Has anyone done an instruction count for the servo update path? Where does the time go, specifically.
How fast is the kmotion card?
let me gret you a link
[18:40:13] <les_w> http://www.dynomotion.com/
again, this is using the emc rs274 interpreter in the host machine
is it opensource ?
It could be. I have been talking a lot with the developer.
It seems to be a dynamite card....not horribly expensive either.
with a cnc control software....it would be great
4 axes are nice, but I'd like more encoder inputs, for spindle and jog-wheel. does it do that
but the developer has a day job
do you envision it as standalone or hooked up to a (non realtime?) pc ?
either...but a pc for the gui etc makes sense
oh and it has servo amps on it!
we have talked the developer into putting much higher power amps on it
Great platform...just needs code.
max supply 300V and max current 10A would be a start
well so far 20 amp 90v I think
Are the servo amps *ever* the size you need? I've blown a few -- I'm glad I didn't blow the processor board. I don't think I want a few hundred (or thousand) watts running around a cpu board.
optoisolated pwm outputs might be safer
Works for me.
well without is possible too....he is open to that. Cost would drop a bunch too.
What processor does it use? (And what C compiler, development environment...?)
looks like a TI dsp
TI hands out their code composer studio to all interested universities
if you happen to work at a uni that is :)
Do I *look* like a university (don't answer that) :=]
Well, how many mflop is a 2 ghz pentium? Mflops don't say it all.
I think the developer would be delighted with open source code project for his board
He has a day job...would like to sell some of these!
1 MHz max encoder count is a bit limiting
think 8000pulse/rev at 3000-4500 rpm
etla: 1MHz is pretty common..
not very many go beyond..
They talk about a 90usec update time for all four servos. Call it 10,000 per second. So, if we are traveling at 10 inches per second, we can update every .001 inches.
it's enough...but not as good as the galil acelera @ 20 Mhz
I would consider 90 usec for four axes very good performance
Or think of 10 inches per second, that's an encoder resolution of a hundred thousandth of an inch.
If anyone is interested I could try and get him on here.
depends on how interested he is..
les_w with the software that he now has, how hard is it realistically to get it working ?
well, we have been working on him. I think with the right software this would be a dynamite control
No it doesn't. If you can get him on here, I'd be interested in what he has to say.
well, he can do some rs274 commands. His TP is crude and needs reworked. A machine control gui needs to be written.
does it need a RT OS then ?
My next vacation is in March. I might take my notebook with me and see about building a QT based gui by copying mach's -- no, make that *using mach's gui for inspiration*.
note that he does have pidff and two software biquad IIR filters
which is good
what do the filters do ?
I think the host computer would not have to be RT
it will be crucial to get development tools to as many as possible
etla, filter functions are typically used to put zeros over poles created by machine structural resonances
lerman: ask paul to send you what he's got
shouldn't be needed with a double-jerk limited tp
afaik he has already built some QT widgets for emc
cncuser: some reported problems with puppysit..
etla, I think it would be needed even with fifth order
alex_joni: yes, i read it on the list, thank you for removing it and putting back online the old version
cncuser: no problem..
les_w: you mean stepper motor related resonances ?
any bandwidth that gets to a machine structural pole and phase margin is gone.
no not stepper
for example gantry rocking greates the lowest pole pair in my machine...which is typical
Wouldn't FIR filters be better because they have better phase characteristics? (I assume that both X and Y are passed thru the same filter).
ok, I'm not convinced as I have not seen this myself. but they can always be turned off I guess
has anyone a hint on software for getting bitmaps into 3d data ? like dxf. simple ones are ok, i just want to make black z-100. a simple relief
plenty of video and other stuff on the galil site about maintaining phase margin
cncuser: there are some software out there...
let me look
alex_joni: thanks :)
[19:05:11] <alex_joni> http://timeguy.com/cradek/image-to-gcode
nice, is there a gcode to dxf converter ?
for i need to fineedit
not that I know of..
only the other way around
i need somthing that i can edit :)
i dont want to edit gcode listings :)
you can edit g-code
Why not just edit the initial image?
lerman: its a "realtime app"
I don't understand?
lerman: sorry wrong window :))
I don't do windows.
lerman: i think editing the dxf will be easier. than do do that ot pixels
lerman: i love my windows
i have a couple puppy questions!
that mozilla window over there, the gaimbox down there, the xchat in the middle
mshaver: hi, go on
well, off to the grocery for me. And since the latest invention is going real well I'm going to get a bunch of filet mignon for a cookout. No hamberger today. Is that ok?
did you recompile the kernel inside puppy using usr_devfx.sfs, or did you do it in vector linux?
Jacky^ is now known as Jacky^dinner
mshaver: i did it in debian sarge
lew_w: CU later.
so you compiled the kernel & modules there and them moved them to puppy?
mshaver: yes, i compiled a debian kernelpackage (for my develsystem runs debian sarge) and then copied the kernel to a chrooted puppysit i have setup. i allways use the same kernel on the sargebox as i do on the puppysit so i can chroot into /puppy-sitdev mount /proc and /dev on it and am able to use emc like with puppy bootet
Jacky^dinner is now known as Jacky^
cncuser is now known as jblunzen
good grief. $15/lb for meat.
eatin the high grade tonite boy.... ; ) i love good burnt meat...
things have been going well, so yeah bought a couple pounds.
ever found a del monoco cut??
I have to burn it properly.....on cherry scraps from the cnc production of course.
mshaver is now known as mshaver_away
this is tenderloin
emc makes all my grilling wood
ok.. smallish steaks... but good... i got moose tenderloin waiting for me at my dads... ; )
just be sure to cnc machine the wood/charcoal.... very precise cooking.
and use cherry too
les_w: In the "O" vs "V" flute... I *THINK* it has to do with the shape of the cutting edge. I'll call em Monday to be sure.
cherry, maple , beech all make good smokin woods
use sherry not cherry ;)
on yourself :D
JUST got back from the plastics store... picked up some stuff to play with.
anything nifty?? minlon samples??
cast acrylic, polycarb, anti-glare acrylic. It's their bits and pieces bin... all the stuff costed $7
oh and some cobolt blue acryclic too =)
cool poly if fun
Well, I think I'll need a special cutter... single flute.
can't get the chipload high enough with a v cutter
and rpm is at 8000 (the lowest I can go)
Now I just need to find some CHEAP white LEDs
cheap as in close to price of RED LEDs
too bad WalMart doesn't sell em
I smell light pipe signs...
I was a very early user of the ultrabright leds
I designed the optics for the anunciator in the Boeing 777 aircraft. It was the first cockpit use of ultrabright leds.
That was a long time ago.
Despite the 100,000 hr life, they are still press to test.
Dead warning light= possible dead people.
dead unwarned people ;)
dead ppl dont need a warning... nearly alive ones though... might be nice
What a sin. Just put adolph's meat tenderizer on tenderloins. I'll be eatin' em with a soda straw!
man.. now i gotta go dig up some steaks too..
now where are my belts and suspenders?
I am trying to do the pavlov thing. Is it working?
the dog experiment
zombie dogs ?
no bow wow experiments or I'll be usign les tractor
[20:35:01] <les_w> http://nobelprize.org/medicine/educational/pavlov/readmore.html
Ah, heard it on a commercial, wanted to know the origin
[20:36:22] <Jacky^> http://www.foxnews.com/story/0,2933,160903,00.html
yeah, flesh over charcoals sounds pretty good.
been wanting a good hamburger for the last couple of weeks - even over a steak.
nah, no ground beef (I think - checks)
jacky: wild . reanimating dogs.
I stopped eating hot dogs after touring a slaughter house in Chicago. We made pneumatic pig killers.
i didnt find steaks .... but a nice 5 lb centercut roast that'll be steaks soon... ; )
yeah... the bonkometer..... cool les..
where is my drool cup?
i seen 1 used on cows too... clamp the thing and pow to the melon
was yours emc controlled?? ' ; )
we have hamburgerage!!!
plc's were used...but again...I am burning the meat on emc cut wood.
find the neighbourhood's unwanted dog and have steak tooo...
* Jymmm smacks dmess
native canadian.... if its alive and you kill it... eat it
you know, my tractortoy is made in Korea....nice engineering. They make nice machine tools too. Very impressed.
i ate my 1st beaver at 5
Dog meat makes you smart I guess.
daewoo machine tools are very nice
dmess: holy S*%t you got started early!
toshiba even licenced a few models to them to build and sell under 2 banners
what do you mean...??
nice tools. Good engineering.
les... we ate the tail too... ; )
This is a family irc channel. I wouldn't want to shock or corrupt fine honest folks like jacky.
i was reading an article abou the mummy ..
nor i.... its a canadian industrius animal with a big flat tail
7� people died after studing him
the mummy found in the ice ..
jacky, ALL people that study mummies die.
les_w: strange ..
too much peoples
oh no. Crisis. I am out of beer. BBIAW. Have to rectify that situation immediately.
les_w: What happened? Forgot to close the valve on the 5,000 gallon SS storage tank?
I had some, but now it's gone. Not sure what happened.
me niether im on the way out too ...bbl
les_w: Put down the needle and step away from the Beer IV
les_w: you still there ?
back...had to correct a fluid dynamics problem
have you seen the mesanet 5i20 card ?
no...have a link?
does it compare to the dsp board
it's an fpga chip on a pci card, www.mesanet.com
click motion control
but probably, the 200k gate restriction will mean that it can't handle very fancy stuff
the DSP's program memory is pretty much unlimited I guess
they have a motion controller implemented, softdmc I think it's called
don't know what the loop rate on that is...
les_w ROTF... fluid dynamics....
looks fast. Some of their cards use national LM629 I see. I have programmed that chip a bit. Obsolete now.
the fpga is a xilinx spartan II I think
200kgates is a bit sparing to try and do motion control in imo
they have something simple working but I'm thinking it's not expandable enough
I don't know much about programming gate arrays, but I do know that even a high performance cartesian cnc control is really not a demanding
les: you don't get many multipliers in 200kgates
i think spartan ii has a few embedded 18x18 multipliers
the dsp card without the powerams and with a free/available development tool would be ideal
i'm much more familiar with spartan 3 / spartan 3l
you would know much more about it
just for approximate scale, an ARM7TDMI is about 50-60k gates without program memory
and on spartan ii's fastest speed grades would probably synthesize in at 15-20MHz
the smallest microcoded execution units that you would want to use, without multiplier, are about 15kgates
We were talking earlier about general purpose boxes being increasingly unsuitable for hard RT. Didn't you talk some about that not being the case?
10k servo updates?
Why are they unsuitable for hard RT?
the performance improvements we're getting for context switching are nowhere near linear with processor frequency or MIPS, but there continues to be improvement
current task switch times on real RTOS's, like QNX, weigh in at about 1500-3000 pentium iv clock cycles, or slightly less for athlon/a64/pentium m
Well I'm asking really. Can an office box do 10k pidff 4 axis servo updates?
have you tried it ? :)
we got lowly dell pentium 3 1.26GHz to handle 420,000 network messages/second (about 20-30/context switch)
etla: that doesn't mean emc/rtai can do it; just that I'm sure the cycles are there to do it.
and the state machining there was a lot more complicated and had a lot more branching than a PID control loop
and a lot more data interdependencies
yes, pidff is not complicated
magma/adeos just stinks.
les: I bet you could do 10k servo updates on pentium i with a real RTOS
And i'll bet if I had a cnc control (servo HSM) that I could sell for $2k it would move big time.
check this out, for instance:
[21:43:12] <icee> http://www.ia.pw.edu.pl/~sacha/XEuro95.pdf
23 microsecond message latency for 100 byte messages
back in 1995 on a 486
let's port emc to DOS ! a real RTOS !
in principle that's fast enough to do 10KHz servo updates.
I seem to recall being able to do small fir digital filters in a 486 at 100k in poor old borland c in dos.
les: but as you say, there's TP and performance problems in emc, and building a real machining control is hard
yes. I will cost a couple man years
also bugginess. i'm still getting freezes in emc2 after moving to new hardware
well, maybe, maybe not.
the performance issues are not that bad to fix, IMO-- though I haven't gotten deeply into the code
the TP is bad but of a known, limited scope
I like the maybe not bit best....
fixing flakiness like I'm experiencing, though-- that's just scary.
icee: what flakiness?
alex_joni apple pie
a_j: I'm still experiencing crashes on emc2, after moving to new hardware.
they're less frequent
but if i leave it on for 2-3 days it's sure to hang.
Frustrating for me. I know the math, but am only a rank amateur at code.
other people here have mentioned the same thing
never seen/heard that
<lerman> icee: that's a good argument for running with an external dedicated
+processor. I often go out to my shop and find that my EMC system has crashed
+overnight. (Well, it could be that the multiple emacs sessions I'm running
+are causing problems, but I don't really know.
<gurrag:#emc> Shure... much better than the earlier BDI:s
<gurrag:#emc> It craches ones a day.... Some days not
<gurrag:#emc> Some crashes are harder, like putting down X, but I think that
+is more RT related than EMC related
Bottom line: emc will work ok on a sherline or an old Bridgeport, but for modern HSM....no way.
gurrag I just talked to
seems he had APM enabled in the bios
that's just /lastlog crash
and that's what caused the problems
i have apm turned off
the new machine is a sempron 2800+; way overkill
I'm running emc2 perfectly on a 300 MHz Geode
with GUI exported over ssh
a_j: it's probably not even an emc2 problem
i don't think magma/adeos is well tested for all hardware combinations
magma is pretty new..
experimental.. to say the least :D
well, why is it in the currently shipped bdi, then?
ask Paul that..
you guys really like to torture your users, don't you? :P
I don't ..
I really don't
but I have no connections with the BDI either..
:( i just want to run a combination of software that other people have tested and there's a certain degree of maturity
i can't do that with the emc2 branch, i can't really do that with emc1 building it myself
from what i can see
otoh, it worked ok on all I've tried so far..
why not with the emc2?
bdi is running something you call 'experimental' without being marked
a_j: because i'm checking out from a branch under active development, right?
i could check out and get the newly committed 'make your machine explode' feature
those don't get commited to HEAD
always in branches..
also I'm thinking about starting releases for emc2
you guys are missing the real point. what happens when one of these bad releases hurts somebody
roltek: that happens?
yah, there is a certain amount of danger to life and property with the way things work
sh*t happens.. no warranties in life
I'm pretty careful with how i do test and bring things up, but.. not everyone will be
buy a fscking expensive software, and it might blow up
but the EULA you accepted reads in nice small print: no warranties taken, etc
if shit happens than the board members are not doing there job
end user licence agreement
alex: there's an EULA?
not to emc
I said fscking expensive software
roltek: the board members need to test the software?
there needs to be process
so people know what they're getting
has anyone read the README for emc2?
a disclaimer in a doc file doesn't really cover you legally, you know.
a EULA that a end-customer signs doesn't even.
icee: you can always buy a fanuc.
i have fanuc's and they don't hurt people
Hey, I'm comfortable accepting the risk. still, there are low-cost things that can be done in process that can make everyone-- including the developers-- happier
maybe this board should take some pride in what they do
e.g. having real releases lets you know better whether a issue being reported still exists and whether there has been regression
roltek: and you're suggesting emc is?
make sure it works before it's released
and after they don't hurt anyone after a few weeks of being used, you can pronounce their level of maturity
well.. emc2 works for more than a year now
keep the newbies/hobbyists off the development branches where they're just a hassle to deal with
and it still is marked as experimental
I give up. :P
icee: I've been watching emc2 for a long time now
and I think alltogether there were about 2 weeks when HEAD was busted
I think it's safe to say that an emc2 HEAD is ok for you.. at any time
notice _you_ not the average user
let users hassle with the BDI, it's best for them
not sure why paul chose to go with magma on it, but I haven't seen any magma-related problems on the BDI
maybe others reported some, but that must have been directly to paul
when there'll be a release certainly it will be emc1 first
and only after a while emc2 (but that's still away)
* alex_joni goes back to actually doing something
is it ok if I go to the music room now?
I promise to be good.
les_w: you may go to your room
but you are grounded for the next week
thank you sir.
you need to clean up your barn
you'll have company :)
I have 3 tractors in my barn.
I'll clen em up
though they are pretty clean
had to detail the front end loader with a toothbrush....got dirt on the bucket.
* Jymmm pictures les' next sign.... "LM Watts.... An authorized John Deer Dealership"