#linuxcnc | Logs for 2012-04-25

Back
[02:25:33] <DJ9DJ> moin
[02:34:43] <Loetmichel> mornin'
[02:47:08] <alex4nder> hey
[07:00:40] <Thetawaves> what was the name of that guy who did polyester granite spindle?
[07:13:23] <A0Sheds> Thetawaves, from Australia? Had the howto with pics of his steps?
[07:18:36] <Thetawaves> yeah
[07:28:29] <A0Sheds> Thetawaves, http://www.cnczone.com/forums/general_metal_working_machines/118358-phenolic_basalt_head_our_hm45.html
[07:32:11] <Jymmm> Hmmmm, errr, ummm.... http://www.youtube.com/watch?v=ST3A4hQH8Ao&feature=relmfu and as a bonus, visit the website in the comments
[07:47:10] <Valen> whats all this about my mill?
[07:50:44] * archivist introduces Thetawaves to Valen
[08:08:09] * Valen goes to bed ;->
[08:08:34] <Valen> but next time your on Thetawaves thats my mill lol
[08:10:11] <Jymmm> Does anyone play with RC Li-Ion batteries/chargers?
[08:10:30] <Valen> a fair bit why
[08:10:52] <Jymmm> Valen: I came across this, http://www.dealextreme.com/p/parallel-balance-charging-adaptor-board-67683
[08:11:08] <Valen> mmmk
[08:11:16] <Jymmm> Is the multi-connecotr plugs to charge and sense the voltage of each cell?
[08:11:37] <Jymmm> I'm ot understnad ing the zillions of connectors on the charger itself
[08:11:42] <Jymmm> s/ot/not/
[08:11:55] <Valen> that paticular one looks like you plug a bunch of packs into it, it then hooks them all into parallel then you join it to the charger by the wires on the back
[08:12:03] <Valen> thats not a charger
[08:12:08] <Valen> thats just an adaptor
[08:12:20] <Valen> most "modern" battery packs and chargers have something like that
[08:12:30] <Valen> but not for multiple packs
[08:12:43] <Jymmm> I say a balanced charger with a LCD giving each cells voltage
[08:12:48] <Jymmm> s/say/saw/
[08:13:07] <Valen> yep, generally you come out of that into an adaptor board
[08:13:24] <Jymmm> but I didn't see those 4-8pin connectors, just the heavy 2pin
[08:13:27] <Valen> the adaptor board connects one battery main power wire and balance plug to a format the charger is happy with
[08:13:34] <Valen> url for charger?
[08:14:15] <Jymmm> looking
[08:14:51] <Valen> http://www.hobbyking.com/hobbyking/store/__15168__HobbyKing_ECO8_150W_7A_8S_Bal_Dis_Cyc_Charger_w_acc_USA_Warehouse_.html say is how they generally come
[08:14:59] <Valen> note the adaptor board
[08:15:29] <Jymmm> ah, so it's BOTH charger and adapter board
[08:15:44] <Valen> the one you sent me is like a bunch of adaptor boards
[08:15:57] <Valen> it can connect say 5 packs in parallell
[08:16:01] <Jymmm> ah
[08:16:04] <Valen> so you can charge and balance them at the same time
[08:16:11] <Jymmm> are these typically faster chargers?
[08:16:17] <Jymmm> fast
[08:16:27] <Valen> you can wind them up to whatever you want
[08:16:29] <jdhnc> I'd be wary of charging large Li battery packs with anything from DX in the middle.
[08:16:32] <Valen> generally 5A
[08:16:38] <Valen> jdhnc: there is that... lol
[08:17:02] <Jymmm> I just saw it for the first time
[08:17:53] <Jymmm> Valen: so you can slow charge them too?
[08:18:04] <Valen> .1a to 5-10a generally
[08:18:11] <Valen> depending on the total wattage
[08:18:38] <Jymmm> Valen: Ok, I'm thinking the old school N-Cad packs that doubled as stoves when being charged =)
[08:18:59] <Valen> lipo charge shouldnt get hot
[08:19:04] <Valen> otherwise they catch fire
[08:19:25] <Valen> the firefighting technique is to remove combustable materials from the surrounding area and watch it burn
[08:19:34] <Jymmm> Yeah, I dind't think so, and these charge LiFe too?
[08:20:18] <Valen> some will
[08:20:27] <Valen> keep in mind most are 12v powered
[08:20:32] <Valen> anyway gtg to bed
[08:20:44] <Jymmm> G'Night thanks
[08:21:03] <Valen> i got one recently with mains supply
[08:21:04] <Jymmm> Valen: I'm thinking solar here
[08:21:10] <Valen> is muchly a good idea
[08:21:16] <Valen> how do you mean?
[08:21:27] <Jymmm> Valen: I have a 15W solar panel
[08:21:47] <Valen> if you want to charge batteries with it these are not what you want
[08:22:12] <Valen> they need a fixed input voltage between 11 and (generally) 14 volts
[08:22:35] <Jymmm> I DO want LiPo/LiFe, just solar charge them
[08:22:35] <Valen> you want a mppt tracker + battery charging unit
[08:22:52] <Jymmm> mppt
[08:23:02] <Valen> i know you want lithium, but these chargers probably won't work well with solar as an input
[08:23:05] <Valen> maximum power point
[08:23:48] <Valen> anyway night
[08:23:51] <Jymmm> Hmmm http://www.timnolan.com/index.php?page=arduino-ppt-solar-charger
[08:23:53] <Jymmm> GNight
[08:24:21] <Jymmm> jdhnc: Ah come on... you can ALWAYS trust DX, HF, etc =)
[09:05:37] <Connor> Hey guys, is it possible to read a input single for RPM and spit the same clocking signal back out ?
[09:06:17] <Connor> I want to get RPM info from my speed controller, which already has built in display and output it to EMC.
[09:07:30] <cpresser> Connor: most VFD can be accessed via modbus. there you can read not only the RPM, but also the load and various other parameters
[09:07:54] <Connor> cpresser: not a VFD, it's a stock speed controller for the G0704 mill.
[09:08:57] * cpresser knows nothing about that specific speed controller.
[09:09:08] <Connor> I have access to the clk and gnd for the IR interrupter. When I hook a scope on it, it alters the signal going to the already installed RPM display and if gives more RPM than there really is..
[09:10:19] <Connor> So, I figured I could grab the signal, input it into EMC, then output a "duplicate" signal back to the existing external RPM indicator.
[09:10:49] <Connor> Hell, it may be easier to just install a 2nd speed indicator.
[09:13:03] <cpresser> so its a pulse counter? if yes, you can hook this up in emc with a single port-pin. use a 'encoder' hal-component for the counting
[09:14:51] <Connor> yea. it's a pulse pin.
[09:15:05] <Connor> but, then, I need to re-output the same pulse..
[09:15:33] <Connor> which may, or may not work...
[09:15:49] <cpresser> why would you want to re-output it ( by the way, its no problem 're-outputting' a signal)
[09:16:04] <Connor> to send back to the external display.
[09:16:50] <cpresser> just put the external display and emc2 on the same electrical network!?
[09:16:51] <Connor> I think splicing off the signal degrades it to much and the existing external display was miss counting because of it.
[09:16:55] <jdhnc> read the speed on the screen instead of the display
[09:17:16] <Connor> jdhnc: I want my cake and want to eat it too! :)
[09:17:24] <cpresser> if there is already an electrical problem you should fix that first^^
[09:17:32] <jdhnc> did you try adding a resistor between the split signal and the emc input?
[09:18:04] <Connor> jdhnc: No. Like I said, I didn't even hook it up to EMC yet.. I was just checking the signal with my O-Scope.
[09:18:24] <Connor> and noticed that when the probes were on, it altered the signal.
[09:18:32] <cpresser> shild the cable.. move it so it gets lesser interference
[09:18:37] <jdhnc> high impedence scope probe?
[09:18:48] <cpresser> add a driver to the signal line
[09:19:04] <Connor> maybe. It's a cheap digital O-Scope from Parallax that hooks to the PC.
[09:19:15] <cpresser> make sure its a voltage and not a current driver
[09:19:17] <jdhnc> is it a single pulse per rev?
[09:19:38] <Connor> jdhnc: No, it's like 16 or more.
[09:19:56] <Connor> I haven't counted all the holes yet.
[09:21:57] <cpresser> i would suggest that you add a simple buffer/driver directly after the encoder. a 74LS06 or similar will do
[09:23:32] <jdhnc> I have a 1000 line encoder waiting for mine but no idea how to mount it
[09:38:58] <Connor> jdhnc: 1000 line encoder? Dang, you planning to do spindle synchronization ?
[09:39:39] <joe9> ReadError: any luck with the mills. I was having some computer issues and hence was not on irc all the time.
[09:45:38] <skunkworks> jdhnc: you just do what ever it takes.. :) http://www.youtube.com/watch?v=5vvP4L_hr90
[09:48:24] <archivist> interesting related vid http://www.youtube.com/watch?v=8wt5EV2LMcc&NR=1&feature=endscreen
[09:51:33] <jdhnc> Connor: was planning on it... and for feedback for the spindle speed control
[09:54:46] <viesturs> hello, folks!
[09:56:17] <viesturs> I am trying to tune servos and I do not understand, why the following error for moving in one direction is huge - above 20 mm, while it is small for the opposite direction - less than 1 mm
[09:56:46] <cradek> that does sound strange. tell us about it.
[09:57:13] <viesturs> where should I start?
[09:57:32] <cradek> tell us about all the hardware?
[09:59:58] <viesturs> 3 pieces of Keling KL23BLS-115 servos (Nema 23) and USDigital E8 encoders with 512 cpr attached to 2 pieces of Mesa 7i39 LV, which are connected to 5i23. All that running on 2.5.0
[10:00:44] <archivist> uni directional friction, is this problem on all axes etc
[10:01:08] <viesturs> machine has ballscrews, I made my own design of fixed ballscrew and rotating nut.
[10:01:16] <cradek> so AC servos and dumb 3 phase drive
[10:01:57] <viesturs> archivist - I do not yet know, because that is gantry machine, I am starting with the single motor, I was hoping to do that first and then copy the settings to gantry motors, test and just slightly adjust
[10:02:18] <cradek> I don't know much about this brushless/bldc stuff
[10:02:40] <viesturs> cradek - yes, I do not have any smart drives to blame
[10:02:47] <cradek> what gives the phasing information?
[10:03:07] <cradek> it sounds like you have a fundamental problem with phasing/driving and you should not be worrying about pid yet
[10:04:01] <viesturs> In HalScope I see that when jogging in positive direction, the following error is accumulating. It is jerking, but the overall tendency is pretty straight line
[10:04:47] <viesturs> in negative direction the ferror increases to some 0,4-0,5 mm and stay there for whole move (except the point, where acceleration changes)
[10:05:10] <cradek> it sounds like you have a fundamental problem with phasing/driving and you should not be worrying about pid yet
[10:05:27] <cradek> what kind of feedback do you have to the bldc component?
[10:05:41] <viesturs> hall sensors and encoders
[10:06:24] <cradek> what is your bldc component cfg?
[10:07:11] <viesturs> cfg=qh,qh,qh
[10:09:01] <cradek> it's not obvious to me from the bldc manpage that you can use both q and h
[10:09:44] <viesturs> I set that up last year with kind help from Andy Pugh
[10:10:24] <viesturs> the way I understand it is that it uses hall sensors to find the initial rotor position and then it uses encoder further on
[10:10:39] <cradek> wow there are 47 hall patterns
[10:10:51] <viesturs> theoretically I could use cfg = qhi, where i would be index of the encoder
[10:11:02] <viesturs> but I do not have index on encoders
[10:11:12] <viesturs> actually 48
[10:11:22] <cradek> yes
[10:11:25] <viesturs> a lot to test...
[10:11:33] <cradek> I don't think I can be any help about this
[10:11:40] <cradek> I don't have any relevant experience
[10:12:05] <viesturs> unfortunately Keling has not listed, what is hall patern of this particular or any other Nema 23 brushless motor
[10:12:07] <cradek> but your asymmetry makes me think you have a bldc problem not a pid problem
[10:13:41] <skunkworks> viesturs: unrelated: did you have the issue where you had a top speed limit that you could not get past? Did you figure out? (brushless motor and mesa stuff)
[10:14:16] <viesturs> I think that it is related, because it is the same machine
[10:14:33] <viesturs> no, I still have not the machine working
[10:15:46] <viesturs> I had all the wiring, motors etc removed and had them at home, got the 5i23 card back, tested as much as I could, everything was working fine, today I arrived, spent half day installing all the wiring back, now I just need to tune the servos and machine should be ready
[10:15:46] <skunkworks> hmm.. You may have to wait for andy to show up.. He is the expert on the bldc componant...
[10:16:06] <viesturs> yes, actually I was hoping to meet him here
[10:16:15] <cradek> I don't agree you have just a tuning problem
[10:17:01] <viesturs> chris, I do not reject possibility of being something wrong with bldc config
[10:17:56] <viesturs> I guess I will try to take a look at those hall paterns and try some other, I recall that I had 2 or 3 that seemed ok, chose one of them, but I might had made a wrong choice
[10:18:48] <skunkworks> I think there should only be 2 that work... (one would make the motor turn backwards...)
[10:19:42] <jdhnc> http://www.pmdcorp.com/downloads/app_notes/BrushlessSensorConfig.pdf
[10:19:46] <viesturs> could be, do not really remember, it was 6 or 7 months ago
[10:26:51] <viesturs> thanks for the link, I will have some reading to do now
[10:28:49] <joe9> which is the better/faster cpu for rtai/low latency: 1st cpu: http://codepad.org/5WxuJVWr , 2nd cpu: http://codepad.org/zDenDBd4
[10:29:01] <joe9> the celeron is faster, but everyone disses them.
[10:29:18] <joe9> not sure how that translates to rtai/latency performance though.
[10:29:30] <joe9> anyone running linuxcnc on a celeron?
[11:04:48] <pcw_home> unsymmetrical drive is almost guaranteed to be a commutation problem (BLDCs idea of the rotor position is wrong)
[11:05:51] <viesturs> ok, I guess I will have to retry all the bldc patterns
[11:10:19] <pcw_home> Are you using the latest LinuxCNC 2.5? there were some bugs in BLDC as well (fixed sometime around December last year IICRC)
[11:13:05] <viesturs> I have 2.5.0
[11:13:10] <viesturs> official release
[11:18:37] <pcw_home> That should be OK
[11:45:43] <viesturs> another strange thing with bldc:
[11:45:45] <jdhnc> joe9: if latency is acceptable for your application then either shold suffice.
[11:45:51] <viesturs> I set the cfg=h
[11:46:07] <viesturs> disconnected bldc.0.rawcounts pin
[11:46:32] <viesturs> commented out poles and scale parameter lines
[11:46:50] <viesturs> added setp bldc.0.value 0,5
[11:47:10] <viesturs> and it moves just a little, when I press f2 and nothing else
[11:47:24] <viesturs> I tried also lower values, but nothing
[11:47:55] <viesturs> if I comment out the line to set bldc value and connect it to pid, I can jog the motor
[11:49:21] <viesturs> what coud I be missing?
[12:00:59] <jdhnc> both motors/drives/encoder give the same results?
[12:02:37] <viesturs> how do You mean that?
[12:03:11] <jdhnc> you have two of everything? do both sets do the same thing?
[12:05:10] <viesturs> I have 3 servos. 2 of them are on gantry, so I do not touch them yet, unless somebody can advice me, how to tune them simultaneously totally from scratch. I would like to tune the one on gantry bridge at first, so that I have a starting for the gantry motors
[12:08:18] <pcw_home> what is your PWM frequency and deadtime?
[12:08:20] <pcw_home> (deadtime should be set to 0 and PWM frequency say 20 KHz)
[12:10:17] <viesturs> where do I set deadtime?
[12:10:27] <viesturs> pwm frequency is 30000
[12:10:52] <viesturs> if the deadtime means "deadband" PID parameter, then it is 0
[12:10:59] <pcw_home> man hostmot2
[12:16:34] <viesturs> I have not specified the deadtime. I will put it to 0 and test, once I will finish going through all the hall patterns.
[12:19:13] <viesturs> Peter, before starting any tricks, I better shoud ask - what is recommended deadtime value for 7i39?
[12:29:05] <pcw_home> 0
[12:34:51] <pcw_home> with the default 5 uSec each edge deadtime (10 uSec total) you would have to get to 30% drive before you had _any_ motor voltage (at 30KHz = 33.3 usec period, 10 uSec is a long time to be off)
[12:34:53] <pcw_home> This may also account for asymmetry with a 7I39 as the duty cycle will go down to 0 but only up to 70% or so
[12:37:37] <kb8wmc> IchGuckLive: good day sir
[12:37:45] <pcw_home> Deadtime is exclusively for bare MOSFET/IGBT/MODULE driving but is not needed/wanted for the 7I39 which only has PWM inputs and does its own deadtime management
[12:38:56] <IchGuckLive> kb8wmc: hi
[12:39:11] <kb8wmc> IchGuckLive: http://www.n2yo.com/?s=31789 a link for you to track one of the two Private orbiting space stations
[12:39:34] <IchGuckLive> i know it
[12:40:07] <kb8wmc> ok....I should have realized your were already aware of it
[12:41:15] <IchGuckLive> pcw_home: do you accept paypal for the sale of your cards ?
[12:41:24] <pcw_home> No
[12:42:02] <IchGuckLive> thats bad for me
[12:42:03] <pcw_home> We did at one time. our experience is that they are close to criminal
[12:42:34] <IchGuckLive> i know they charged 40USD fpr sale from China
[12:43:03] <viesturs> Peter, thank You for the explanation, I have set the deadtime to 0 for all 3 pwm gens. Now I will put the belt back on to try out. Going through bldc patterns did not give anything, because I tried to jog the motor after changing the pattern, but for many cases it did nothing. I expect that wrong sign at scale value or something similar is to blame. It would work, if motor would turn with setp bldc.0.value [number between 0 and 0,95 here]
[12:43:06] <IchGuckLive> but it wars orderd on friday and shiped on thuesday that is faster then from Berlin To munich
[12:44:10] <IchGuckLive> pcw_home: one of the CNC lathe broak down and the part needed only available in china
[12:45:43] <IchGuckLive> this turret parts ->http://www.cncmakers.com/uploads/allimg/100929/1_100929144950_1.jpg
[12:45:49] <pcw_home> we dont have much trouble shipping to/from China from here but Germany is a pain due to huge amounts of red tape
[12:46:35] <IchGuckLive> yes and the parts moved from the costum servise is then doubled in pay
[12:47:22] <IchGuckLive> so the cit on you is 199USD +40USD shipment +40USD pay +150USD VAT Tax
[12:47:38] <pcw_home> Thats a funny looking part (something dark inside)
[12:47:52] <pcw_home> Yow
[12:48:22] <archivist> rubber?
[12:48:42] <archivist> flex drive part?
[12:48:42] <IchGuckLive> its the electrical connector for the 4way toolchanger
[12:49:03] <IchGuckLive> 110USD
[12:49:25] <IchGuckLive> oh no 55USD i ordert 2
[12:50:06] <pcw_home> so much for free trade
[12:50:38] <IchGuckLive> http://www.cncmakers.com/uploads/allimg/101009/1_101009150530_1.jpg thats the toolchanger
[12:51:23] <IchGuckLive> pcw_home: if the payment total reatches 150 USD it is 85% more
[12:52:18] <IchGuckLive> i think i will order via NY state buero
[12:52:42] <pcw_home> Of course you are in Europe so you may actually get some services for all your taxes...
[12:53:04] <viesturs> Peter, thank You so so so much! Ferror is symmetrical and does not exceed 4 mm!
[12:53:25] <viesturs> Since I have only P parameter specified, that is to be expected, right?
[12:53:50] <pcw_home> yes you will need FF1 and D and I
[12:53:51] <IchGuckLive> pcw_home: how mutch is the overall cost for the 5I25 kit with the 7I76 to NY
[12:55:51] <pcw_home> If its cheapest shipping (USPS) maybe $215 or so
[12:56:13] <IchGuckLive> ok i will mail you if im in order
[12:56:53] <djdelorie> can linuxcnc directly drive the PWMs for a bldc?
[12:57:09] <viesturs> I was thinking about tuning the velocity loop. Since I am doing servo tuning for the first time in my life, the dumb questions: do I specify it somewhere (like a PID parameter) or is it specified by the set of P, I or D used?
[12:59:14] <pcw_home> djdelorie yes
[12:59:28] <Jymmm> pcw_home: he just quit
[13:00:41] <pcw_home> well you can make a separate velocity loop but I dont think its worth the trouble
[13:01:04] <pcw_home> Think of the D term as being the velocity part of the loop
[13:01:31] <pcw_home> also make sure you use the fb-deriv input to the PID loop
[13:03:36] <Jymmm> djdelorie: "pcw_home: djdelorie yes"
[13:04:04] <pcw_home> Andy's BLDC comp does it
[13:06:45] <viesturs> Peter, just to make sure I understand correctly: I should connect encoder.n.velocity to pid.n.feedback-deriv?
[13:06:58] * djdelorie wonders if a driver-only card would be useful, if that works...
[13:07:38] * djdelorie bounced IRC a few times to move it to my laptop. NEW VIDEO CARD TODAY!!! Hope it works as well as it's supposed to...
[13:13:24] <pcw_home> viesturs yes that will get you better velocity estimation then the PID comps default dP/dT
[13:13:54] <viesturs> Ok, thank You!
[13:13:57] <pcw_home> than the
[13:14:07] <viesturs> Will do it in a moment and then continue on PID tuning.
[13:14:38] <viesturs> Now the ferror is less than 2 mm with only P parameter specified
[13:15:08] <alex4nder> hey
[13:15:20] <djdelorie> ferror = following error?
[13:17:28] <Jymmm> yes
[13:17:52] <djdelorie> I had that in my controllers, had to add some feed-forward from the rpm feedback to the position offset
[13:20:22] <pcw_home> Since the 7I39 is a plain voltage mode drive you will definitely need some FF1 (for BEMF compensation)
[13:20:59] <pcw_home> and D
[13:21:18] <viesturs> do I understant that I should follow this sequence:
[13:21:21] <viesturs> first P
[13:21:23] <viesturs> then D
[13:21:25] <viesturs> then I
[13:21:28] <viesturs> then FF1
[13:21:44] <viesturs> add P until it starts oscillating
[13:21:49] <viesturs> then add D to calm it down
[13:22:00] <pcw_home> first P then D then P again then D again then FF1 then I
[13:22:16] * djdelorie thought it was "add P until it starts oscillating, then back it off a little until it doesn't"
[13:22:47] <viesturs> I thought " add P until oscillating, then add D to calm it down"
[13:22:51] <pcw_home> don't bother with I until its as close as you can get
[13:22:53] <pcw_home> it makes tuning FF1 hard/impossible
[13:23:20] <viesturs> ok, I will ask about the I, when I get there :)
[13:23:37] <pcw_home> yeah but you may be able to get more P as you increase D
[13:24:25] <djdelorie> D basically compensates for inertia?
[13:25:36] <pcw_home> D is first derivative so damping
[13:25:36] <pcw_home> first derivative of position
[13:25:53] <djdelorie> I originally thought it was the "slow down as you approach the target" signal
[13:26:36] <pcw_home> if you only have D you will have the equivalent of viscous damping
[13:27:19] <pcw_home> P by it self is like a spring (Hookes law)
[13:30:31] <alex4nder> anyone running an Atom D2800 yet and hae any latency numbers?
[13:30:32] <tom3p> interesting gimbal hinges might be useful for jig/fixtures http://whipmix.com/wp-content/uploads/via-product-catalog/product_docs/wide_vue_inst.pdf
[13:31:33] <alex4nder> tom3p: minorly creepy
[13:32:14] <pcw_home> so with only P position gain in a torque mode loop
[13:32:16] <pcw_home> the drive is the second derivative of the error
[13:32:18] <pcw_home> (the solution of this differential equation being a sine wave)
[13:32:19] <pcw_home> by adding D (first derivative) you add the exponential
[13:37:06] <Loetmichel> re @ home
[13:39:03] <pcw_home> bbl
[13:43:03] <Loetmichel> *sigh*... i am a litttle out of training... 4 hrs to mount a sattelite dish on the Company roof, throw 100m Coax cable around and install and config to digital sat recievers....
[13:43:27] <Loetmichel> there were times when i could do that in 1 hr straight.
[13:46:59] <viesturs> Peter, thanks for the explanation. Though I did not understand it completely... You said " will definitely need some FF1 (for BEMF compensation)". What is BEMF?
[13:49:01] <viesturs> another noob question - how should I move the motor after I adjust PID parameters? Just jogging forth/back/forth or is there something more effective?
[13:50:24] <jdhnc> Back ElectroMotive Force
[13:53:07] <viesturs> thanks! how do I see it in motion/ ferror graph? Those small spikes that currently are everywhere? I have got ferror below 0,3 mm with P parameter only. Does it mean I could set acceleration higher? Max velocity is limited by the bad balance in rotating nut assembly - it causes vibration...
[13:54:01] <viesturs> Most probably poor precision in manufacturing the parts. Should have checked it, before accepting. Yet another lesson learned with this macine...
[14:01:08] <Jymmm> viesturs: what machine?
[14:08:59] <viesturs> Jymmm, how do You mean? This is my own build, I definitely will share some more details on mailing list, once I will get it working correctly.
[14:09:54] <Jymmm> viesturs: You said "you should have checked before accepting" as in look at it before singing for it from the shipper.
[14:13:35] <viesturs> No, that is a misunderstanding, I should have checked the parts for rotating ballscrew nut assembly, before accepting them from the guys that made them. Unfortunately I do not have a lathe (yet), so I have to outsource the process of actual metalworking and production of the parts. Currently I do designing part and also CNC control implementation. And after-sale user support as well.
[14:14:05] <Jymmm> ah
[14:14:18] <PCW> FF1 is tuned so on a long slew, the lag or lead is nulled (too little FF1 = lag. too much = lead)
[14:25:31] <ReadError> alex4nder
[14:25:35] <ReadError> you see the 2nd vid I did?
[14:26:01] <ReadError> joe9: delivered
[14:30:34] <skunkworks> viesturs: Make sure you are in exact stop mode (g61) and write a small gcode program that goes 1 inch back and forth. (or whatever is far enought that you get into cruise phase)
[14:31:13] <skunkworks> set halscope to trigger and keep playing with the pid and feed forward values
[14:34:44] <viesturs> yes, I am playing with HalScope! That is the only way I can imagine to actually trace the motion and all the parameters, like ferror etc.
[14:35:24] <viesturs> I am not homing the machine yet, running it in joint mode, so cannot currently run any test code. But I guess that with my current tuning I can let it home...
[14:38:20] <skunkworks> well - I have done it running a incremental jog..
[14:38:43] <viesturs> I am doing continuous jogging...
[14:39:00] <viesturs> Can anyone suggest, why are these lines so spikey?
[14:39:01] <viesturs> http://picpaste.com/pics/PID_spikes-97tp9Yva.1335382085.png
[14:42:24] <alex4nder> ReadError: I missed it..
[14:44:10] * skunkworks isn't an expert at tuning...
[14:45:14] <archivist> looks a bit regular, is it at revolution rate
[14:45:32] <PCW> no nearly enough gain
[14:46:43] <PCW> and it does look periodic (once per turn?)
[14:46:50] <viesturs> which gain?
[14:47:25] <viesturs> yes i also noticed that it is periodical
[14:48:14] <PCW> Do you have any D? You will need more D to get more P
[14:48:18] <skunkworks> I did find out that vineger and salt works wonders for cleaning silver solder flux off of parts. Google for the win
[14:48:26] <viesturs> i was thinking that it might be the eccentricity in pulley on motor shaft
[14:48:47] <viesturs> I have
[14:48:52] <viesturs> P = 220
[14:48:56] <viesturs> I = 6
[14:49:00] <viesturs> D = 1,2
[14:49:15] <PCW> FF1?
[14:49:15] <viesturs> FF1 = 0,6
[14:49:32] <PCW> And you tuned FF1 before adding I?
[14:49:41] <viesturs> yes
[14:50:27] <PCW> And it oscillates with more P?
[14:50:33] <ReadError> alex4nder: http://www.youtube.com/watch?v=9AoC4s9HPo4
[14:50:35] <viesturs> I had symmetrical ferror within 0,2 mm, added FF1 until symmetricity disappeared and it oscillated around zero line
[14:50:39] <ReadError> i got everything working now
[14:50:47] <ReadError> positive axis worked much better
[14:50:50] <viesturs> Adding I has not provided noticable improvement
[14:51:05] <viesturs> I will try adding more P...
[14:51:07] <viesturs> just a sec
[14:53:52] <PCW> When adding I add it until the system becomes unstable and then use about 1/2 that value
[14:54:56] <PCW> At least that's what works for me with voltage mode drives
[14:55:01] <viesturs> I changed P from 220 to 280 and also 340 - both were worse, some large ferror spikes up tp 0,36 mm appeared
[14:55:02] <viesturs> so I returned to 220
[14:57:56] <skunkworks> I have done it where I add P until it become unstable. back it off a bit. then add d until it becomes unstable - back it off a bit. add more P ........repeate.....
[14:57:57] <viesturs> now reverted back to P=220 and there also are some large spikes
[14:58:48] <PCW> but it did not oscillate at the higher P values?
[14:59:05] <viesturs> should there be any spikes, if I start with all values at 0 and P also is very low, like 0,5?
[14:59:23] <PCW> I would adjust P up until it oscillates
[14:59:41] <viesturs> looking at graph it oscillates all the time. by the sound I also hear it is not perfectly smooth
[14:59:54] <viesturs> ok, I will try adding more P
[15:00:02] <PCW> sure its all spikes at that point sine the error is huge
[15:00:08] <viesturs> should I reset I and FF1 to 0?
[15:00:09] <PCW> since
[15:00:30] <PCW> no FF1 should be fine
[15:00:53] <PCW> i would not mess with I until its as good as it can be
[15:00:54] <viesturs> ok, I = 0 and more P...
[15:02:01] <PCW> does is oscillate when static? if not try skunkworks method
[15:02:53] <viesturs> no, it is calm, when static
[15:03:50] <PCW> The other way to tune P and D is by putting a step function in and adjust for maximum stable P gain and no (or small) overshoot on the step
[15:03:51] <viesturs> why would i add more P, when I am satisfied with absolute ferror values? I just want it to smooth out ferror curve and more importantly bldc.n.value curve
[15:04:15] <viesturs> I do not understand the last suggestion
[15:04:19] <PCW> more P gain should reduce your ferror
[15:04:42] <PCW> (if it no so much as to cause oscillation)
[15:04:49] <PCW> its not
[15:05:08] <djdelorie> does more P give you more speed/power too?
[15:05:52] <PCW> no just makes it stiffer (higher spring constant)
[15:06:06] <viesturs> I think that current ferror already is good - it is below 0,02 mm at 3000 mm/min
[15:06:30] <PCW> I make it stiffer as well but only for low frequencys
[15:07:13] <viesturs> the problem is that it is very spikey
[15:07:33] <PCW> what is spikey?
[15:08:17] <viesturs> I will post a screenshot of HalScope in a minute
[15:08:34] <PCW> the PID output will look like noise (bldc.n) but this is immaterial
[15:10:25] <PCW> the ferror will get better with high P/D/I until you get to the point of instability
[15:11:14] <PCW> higher P/D/I i mean
[15:11:20] <djdelorie> then it explodes?
[15:11:34] <PCW> well it "rings"
[15:14:00] <PCW> if the gain is too low 'spikey' ferror may be just amplified mechanical drag
[15:15:31] <andypugh-iPhone> Hi Viesturs. Any luck?
[15:15:37] <viesturs> i think i can say that it rings for me, when in motion. it is totally quiet and silent, when not moving
[15:16:25] <viesturs> Hi, Andy! Actually yes, Peter's advice on setting pwmgen's deadtime to 0 changed the whole thing.
[15:16:48] <andypugh-iPhone> Glad to hear it.
[15:17:02] <viesturs> At least now I got the ferror within 0,03 s at 3000 mm/min.
[15:17:15] <viesturs> Will post a screenshot in a minute
[15:17:51] <andypugh-iPhone> I am migrating data between Macs, so using the IPhone. I guess I could use the CNC box.
[15:18:27] <viesturs> Here is the new screenshot:
[15:18:28] <viesturs> http://picpaste.com/ferror_spikes-jpeHU2qD.png
[15:18:57] <viesturs> Of course, if it has internet connection...
[15:19:00] <cradek> mm?
[15:20:01] <andypugh-iPhone> I started the transfer at 11am and it said 8 hours. I came back ar 8pm to it saying 40 hours. So I cancelled and connected with wire. Now it says 6 hours.
[15:20:12] <PCW> what happens if you double the P gain? (dont know if you've gone far enough until you've gone too far)
[15:21:10] <viesturs> the last screenshot is with P = 450, previously I had P = 220
[15:21:20] <viesturs> should I gradually increase even more?
[15:21:26] <PCW> well try 1000
[15:21:39] <viesturs> Ok
[15:22:01] <PCW> definitely looks like you have a periodic load variation
[15:22:21] <andypugh-iPhone> .03mm sound pretty good to me.
[15:22:56] <andypugh-iPhone> (at that speed)
[15:23:16] <viesturs> Had P=900, much louder vibration, almost all spikes in HalScope approach 0,1 mm, I had less than 0,03 before.
[15:23:18] <cradek> I agree the following is good but I also agree there's a mechanical issue
[15:23:44] <viesturs> Andy, yes, I also think that it is good. I just would like to smooth it out, it is very spikey
[15:24:07] <cradek> can you tell for sure if it's once per turn?
[15:24:21] <andypugh-iPhone> Try a teeny amount of D? (possibly negative)
[15:24:32] <viesturs> It could be eccentricity in pulley on the motor shaft.
[15:25:31] <cradek> add the position to your plot so you can tell what position increment it is
[15:25:44] <viesturs> With 3000 mm/min = 50 mm/sec and with 2,5 mm travel per motor turn I have 20 revolutions per second, 0,05 s per each revolution.
[15:25:55] <cradek> see if the bumps stay the same distance apart at varying speeds
[15:26:14] <viesturs> is there difference, if I put pos-cmd or pos-fb?
[15:26:30] <cradek> you're only getting 5 bumps per second, nowhere near 20
[15:30:45] <viesturs> I changed bldc.0.value to axis.0.joint-pos-cmd
[15:31:07] <viesturs> should I post the screenshot?
[15:33:36] <viesturs> that will be difficult - LinuxCNC machine refuses to accept both my usb sticks, as it does not have internet access
[15:34:16] <andypugh-iPhone> How annoying.
[15:36:01] <PCW> what is the pully ratio? maybe the periodic mechanical stuff is on the leadscrew
[15:36:15] <viesturs> turns out there is I/O error on cf card
[15:36:25] <viesturs> it is 4:1
[15:37:09] <PCW> is it lumpy if turned by hand?
[15:37:21] <viesturs> the ballscrew is 10 mm pitch
[15:37:31] <viesturs> what is "lumpy"?
[15:37:40] <PCW> technical term
[15:38:01] <viesturs> I already thought so... :)
[15:38:06] <PCW> non constant torque
[15:38:21] <viesturs> I will try
[15:38:45] <PCW> related to "crunchy"
[15:39:28] <viesturs> yes, it is lumpy
[15:40:25] <andypugh-iPhone> Is there a gearbox.
[15:41:02] <viesturs> no, it is belt&pulleys only
[15:43:20] <viesturs> damn, looks like another cf card died
[15:43:33] <viesturs> now the LinuxCNC box won't start up
[15:43:51] <viesturs> now that is not good
[15:44:18] <andypugh-iPhone> Is the USB stick still in? It might be trying to boot from that.
[15:44:37] <viesturs> no, removed them
[15:45:38] <viesturs> there was black screen with some text, saying something like "starting additional modules"
[15:47:38] <viesturs> are cf cards sensitive to magnetic field?
[15:47:58] <viesturs> there is a transformer some 10 cm from it
[15:48:25] <andypugh-iPhone> Not as far as I know
[15:48:52] <viesturs> how do I convince the client to purchase new hdd?
[15:49:29] <andypugh-iPhone> Boot from CD. Run disk check utility.
[15:50:13] <andypugh-iPhone> I would re-seat the memory and cables first.
[15:50:26] <viesturs> there is no cd drive available and there is no chance for me to download the ubuntu livecd to put on usb drive
[15:50:41] <viesturs> I guess I will go to dormitory at first :)
[15:50:47] <viesturs> it is 23:40 for me
[15:51:09] <andypugh-iPhone> Working away from base is always tricky.
[15:51:32] <cradek> ubuntu live image on appropriate media is a basic troubleshooting/repair tool that you should have with you on service calls
[15:52:23] <cradek> it's so good at many things
[15:52:30] <andypugh-iPhone> Ideally a spare HDD too.
[15:53:27] <viesturs> Chris, this is yet another lesson learned with this machine...
[15:53:37] <cradek> :-)
[15:53:53] <viesturs> spare HDD is too expensive
[15:54:02] <viesturs> I could have spare cf card, but I bought this one last week, so it seems that they do not last long
[15:54:39] <viesturs> spare cf card would save me for another few days...
[15:54:45] <cradek> solid state media is shockingly unreliable
[15:55:52] <viesturs> I have had only good experience with the 3 SSDs I have used - one in the welding robot, second in a woodworking machine and the third in my laptop I am typing now
[15:56:16] <cradek> I have had only bad experiences with SSDs
[15:56:34] <cradek> I have one in my primary machine at home and it routinely logs weird errors
[15:56:45] <cradek> if I didn't have good backups I'd be worried about it.
[15:56:45] <rob_h> same here, very good results with SSDs here, 5years with one machine now still good, i think depends on makes also, OCZ here.. CF tho very bad times not worth it
[15:57:11] <cradek> mine's a kingston, which is as name-brand as I could find
[15:57:53] <rob_h> i did have to firmware update the first one i had so support trim on linux. to keep it good.. but others are newer now
[15:57:56] <viesturs> my 3 drives also are Kingstons, I do trust them and they have kept up with my expectations
[15:58:36] <viesturs> ok, I guess my day is over, now the hdd problem has to be solved tomorrow
[15:58:55] <andypugh-iPhone> I have been using a SATA DOM for about 2years doing lots of compiles, and it has been good.
[15:59:03] <viesturs> thank You, Chris and Peter, for You patience and help, I made a real progress today!
[15:59:13] <viesturs> see You all tomorrow or some other time!
[16:12:09] <DJ9DJ> gn8
[16:51:06] <Anon0623> hello everyone
[16:51:42] <Anon0623> would need some help with linux to compile .c kinematics file
[16:52:36] <Anon0623> sudo comp -- install mykinematics.c returns me sudo:comp: command not found
[16:53:00] <cpresser> Anon0623: install emc2-dev
[16:54:26] <Anon0623> should run this in terminal?
[16:54:58] <Anon0623> install: missing destination file operand after `emc2-dev'
[16:56:38] <cpresser> no, you should not run this in a terminal :)
[16:56:56] <cpresser> use your prefered packet-manager-tool to install the package emc2-dev
[17:02:19] <andypugh> Hmm, not as easy to join an IRC as one might like when there is no <hash> key on the keyboard.
[17:03:32] <WalterN> ha
[17:03:36] <WalterN> here
[17:03:38] <WalterN> #
[17:03:41] <WalterN> copy-paste
[17:04:23] <andypugh> Thanks. That would actually have been genuinely useful except I googled and found it is right-alt + £
[17:04:32] <andypugh> #### :-)
[17:04:36] * cpresser actually has a text-file with various special chars in it on my mobilephone :)
[17:06:29] <andypugh> Yay! got the filebutton working.
[17:06:43] <andypugh> I am not cinvinced that I am going to like Python
[17:08:16] <Anon0623> hmm I have to admit I'm "noob" here to work with linux ... sry
[17:08:41] <Anon0623> so firs i need packet-manager-tool ?
[17:08:45] <Anon0623> first
[17:09:09] <andypugh> Anon0623: No, there should be one built in. Actually a few
[17:09:21] <Anon0623> synaptic
[17:09:22] <Anon0623> ?
[17:09:25] <andypugh> Yes
[17:09:28] <Anon0623> pl
[17:09:30] <Anon0623> ok
[17:09:43] <andypugh> That's under System->Administration
[17:10:14] <Anon0623> found it ...
[17:10:25] <andypugh> But for LinuxCNC-ish stuff the command-line is generally used. (sudo apt-get install <package>
[17:10:56] <andypugh> And for super-convenience, Aplications->Ubuntu Software Centre
[17:12:13] <Anon0623> ok I have both opened :)
[17:12:29] <andypugh> What are you trying to do?
[17:13:09] <Anon0623> comp and install kinematics
[17:14:02] <Anon0623> sudo comp --install mykinematics.c returns me sudo: comp: command not found
[17:14:55] <andypugh> Ah, sudo apt-get install linuxcnc-dev
[17:15:02] <Anon0623> its fresh install from LiveCD and I need to install my custom kinematics
[17:15:18] <JT-Shop> can comp compile a c file?
[17:15:25] <andypugh> possibly also sudo apt-get install buildessential
[17:15:50] <andypugh> JT-Shop: Yes, comp is quite a simple way to compile and install a kernel module written in C
[17:16:04] <JT-Shop> ok, thanks Andy
[17:16:51] <JT-Shop> hmmm http://linuxcnc.org/docview/html/hal/comp.html#_installing
[17:17:39] <Anon0623> so what I do with this?
[17:19:54] <JT-Shop> oh bother the sentence is run on and incomplete at the same time
[17:20:35] <andypugh> after you have installed buildessential and linuxcnc-dev then comp should work
[17:21:19] <JT-Shop> what does buildessential do?
[17:21:29] <Anon0623> runing this in terminal sudo apt-get linuxcnc-dev gives me E: Invalid operation linuxcnc-dev
[17:21:46] <andypugh> I think it makes sure you have all the compilers etc
[17:22:01] <JT-Shop> apt-get install linuxcnc-dev
[17:22:10] <JT-Shop> ah ok
[17:23:04] <JT-Shop> dang three errors in one sentence :/
[17:23:12] <Anon0623> E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)
[17:23:21] <Anon0623> E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?
[17:23:35] <Anon0623> I have admin rights
[17:23:59] <Anon0623> when I run only sudo, it asks me for password ...
[17:24:04] <JT-Shop> sudo apt-get install linuxcnc-dev
[17:24:31] <JT-Shop> I should not type right after getting up from a nap
[17:25:03] <Anon0623> E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)
[17:25:12] <Anon0623> E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?
[17:25:37] <JT-Shop> do you have the synaptic package manager open or another terminal open that is using apt-get
[17:26:12] <Anon0623> no, only terminal
[17:26:45] <Anon0623> aaaa ... happend something ....
[17:27:03] <Anon0623> I closed and started again terminal ... now it works ...
[17:27:24] <JT-Shop> ok... whew those errors are above my pay scale
[17:27:45] * JT-Shop wanders down to fix my mistakes in the manual before I forget
[17:27:59] <Anon0623> so now after loading this ... should sudo works also for kinematics?
[17:28:31] <Anon0623> or is there something more to do?
[17:31:42] <Anon0623> it works! THANK YOU ALL !
[17:32:37] <andypugh> That seems like it was unnaturally easy
[17:33:44] <joe9> ReadError: how do you want to do the handover? where do you want me to come?
[17:34:10] <joe9> i am headed out tomorrow afternoon. so, would be good if I can pick it up before that.
[17:34:47] <joe9> ReadError: any thoughts, please?
[17:34:49] <jthornton> now that the docs have the correct command and the sentence might make sense it might be easier
[17:35:26] <cradek> jthornton: "you're"
[17:35:59] <jthornton> crap, I shouldn't work right after my nap
[17:36:04] <cradek> sorry :-)
[17:36:33] <jthornton> np lol
[17:36:45] <jthornton> I'm not really grumpy after my nap
[17:39:00] * jthornton gets back to cannon construction
[17:39:19] <Tom_itx> yay
[17:45:17] <andypugh> How do I create a new instance of a type in Python?
[17:45:39] <andypugh> Do I need to find an object with a suitable creator, or can I just "dim" one?
[17:46:00] <andypugh> Specifically I want to create a gtk.FileFilter object.
[17:53:41] <FinboySlick> andypugh: You want to create a new type that inherits gtk.FileFilter methods and properties?
[17:54:05] <andypugh> No
[17:54:14] <andypugh> I just want one.
[17:55:16] <FinboySlick> blah = gtk.FileFilter() if I remember it correctly.
[17:55:37] <andypugh> Yes, I found that just now in online docs
[17:55:42] <FinboySlick> Been a while since I played with it.
[17:56:03] <andypugh> But I get: NameError: global name 'gtk' is not defined
[17:56:17] <FinboySlick> you need to import first, most likely.
[17:56:28] <andypugh> I was wondering about that
[17:56:49] <FinboySlick> If you need just FileFilter() you can import just that from gtk.
[17:56:50] <andypugh> I think I prefer C
[17:56:53] <FinboySlick> Or you could import all of gtk.
[17:57:27] <andypugh> You know where you are with C in the Kernel. If you don't write it from scratch, you can't have it :-)
[17:57:44] <FinboySlick> C lets you get into more nitty gritty, but it doesn't take very long for python to let you do pretty funky things in just a few coherent lines (vs perl where the lines are incoherent ;)
[17:58:35] <FinboySlick> But yah, python keeps you hovering a few inches above the metal.
[17:59:31] <FinboySlick> BTW, if you import FileFilter() from gtk, you'll declare your class blah = FileFilter()
[17:59:31] <andypugh> It is getting easier now I have found "print dir(widget)
[17:59:45] <FinboySlick> If you import gtk, then blah = gtk.FileFilter()
[18:00:14] <FinboySlick> Messing with lists and sets and what not in python is a heck of a lot of fun.
[18:03:03] <andypugh> I liked Matlab, when I used it a lot
[18:03:54] <FinboySlick> Yeah. You'll probably have a great grasp of python within a day or two if you hammer at it. That's its strongest point if you ask me, it's very easy.
[18:03:55] <kanzure> FinboySlick: perl can be written coherently with patience (probably about the same as ruby)
[18:04:13] <jdhnc> kanzure: if that is true, why has it never happened?
[18:04:25] <FinboySlick> kanzure: I was mostly being humorous.
[18:04:43] <kanzure> FinboySlick: me too.. i meant no disrespect
[18:05:20] <FinboySlick> kanzure: Heh, non perceived... I can't really code that well.
[18:05:25] <kanzure> jdhnc: to be fair, i suppose all the perl i used to write looked like crap, then i started writing python
[18:05:28] <FinboySlick> :s/non/none/
[18:05:39] <kanzure> anyway, i didn't mean to start a language war
[18:05:50] <jdhnc> it's not a war, just an observation.
[18:06:06] <FinboySlick> Let's duke it out in the octogon!
[18:06:27] <kanzure> on a related note, are there ways to get >20 khz stepping with linuxcnc?
[18:06:34] <jdhnc> I think the more you know perl, the less legible it is.
[18:06:36] <Valen> mesa
[18:06:47] <andypugh> illegible: http://en.wikipedia.org/wiki/Brainfuck
[18:06:48] <kanzure> i played with mesa cards a looong time ago
[18:07:07] <kanzure> you mean the fpga controllers?
[18:07:33] <andypugh> But you have to like a language with a 200-byte compiler
[18:07:55] <FinboySlick> I haven't messed with my config a lot, but I think I got 60khz on my little atom board. But i never tested it.
[18:08:20] <kanzure> i thought there were limits due to rt-linux's minimum interrupt response timing?
[18:08:35] <FinboySlick> If you can manage a <9000 ns jitter.
[18:09:03] <FinboySlick> kanzure: Could well be, I just meant that it's what the dialog displays ;)
[18:13:22] <Valen> mesa have a board for ~$100 or less now
[18:13:25] <Valen> just use it ;-P
[18:15:24] <kanzure> if it's an fpga, then what's the state of current open source fpga programmers?
[18:15:28] <kanzure> iirc they basically don't exist
[18:18:27] <cpresser> kanzure: http://opencores.org/
[18:21:11] <andypugh> kanzure: No, there are no Free ones, but some free ones.
[18:21:47] <andypugh> Or, I might be wrong (looking at opencores)
[18:22:12] <andypugh> I think you need the zero-cost Xilinx compiler to create Mesa firmwares
[18:23:05] <Tom_itx> i wrote a how to for the bitfiles
[18:23:14] <Tom_itx> http://tom-itx.dyndns.org:81/~webpage/emc/xilinx/xilinx_install_index.php
[18:24:28] <andypugh> FinboySlick: Any idea how to access a different glade object from a callback? My callback is passed self and obj, but I want to set the value of a different object.
[18:24:59] <andypugh> Tom_itx: And it works, I have created working bitfiles, and a side-project is a web interface to make them on-the-fly
[18:25:31] <FinboySlick> andypugh: You'll probably need to pass that object as a param... Or add a reference to your glade object in obj. That essentially gives you a pointer to your glade object.
[18:25:38] <andypugh> (except I seem to have been distracted by Python)
[18:26:26] <kanzure> Tom_itx: looking..
[18:26:36] <andypugh> Or (to be unpythionic) set up a global?
[18:26:52] <kanzure> ah this is the xilinix software
[18:27:30] <FinboySlick> andypugh: I guess so. But that's a bit on the ugly side. Unless the glade object is central to your app. And even then, it's bad style.
[18:27:44] <FinboySlick> Heh, not that I could give style lessons when it comes to code.
[18:29:43] <andypugh> Any clues how to add a reference?
[18:30:02] <FinboySlick> obj.myglade = gladeobject
[18:30:10] <andypugh> I don't seem to get any choice about the parameters that are passed
[18:30:54] <FinboySlick> andypugh: Is this something you can pastebin?
[18:31:31] <andypugh> FinboySlick: So, in the __init__ I need to use builder.getobject to find both the button and the label, then add a reference to one to the other, so that the button callback can set the label?
[18:31:44] <andypugh> Seems, err, clunky?
[18:32:21] <FinboySlick> andypugh: You don't necessarily have to do it in the __init__... I'm just entirely sure what you're trying to do.
[18:34:03] <andypugh> Initially I want to load a bitmap, and set some labels in a GladeVCP dialog to show the height and width.
[18:34:46] <andypugh> So, a button to load the image (now working) and then I want to button callback to set the labels to show the size
[18:35:28] <andypugh> http://pastebin.com/ntMMEHKX
[18:38:28] <FinboySlick> Hmmm... And where are your labels defined?
[18:38:35] <FinboySlick> They're children of obj?
[18:39:00] <skunkworks__> the better question... andypugh : what are you writing?
[18:39:48] <andypugh> No, AFAIK obj is just the fileselectbutton widget, and the labels are on the same level.
[18:40:29] <andypugh> skunkworks__: It's an experiment prompted by a query on the forum, to see if I can read an image file into a HAL module
[18:41:54] <skunkworks__> interesting... Did you see this? http://wiki.linuxcnc.org/cgi-bin/wiki.pl?Rastering_With_A_Laser
[18:42:15] <FinboySlick> OK. I sort of lack gtk/glade coding experience... You probably have a list of children that you can access like an array.
[18:42:16] <andypugh> Yes, and it seems horribly clunky and inelegant :-)
[18:42:47] <FinboySlick> So you could do self.fb["thelabel"] or something like that.
[18:42:50] <andypugh> hmm, obj.parent.child2?
[18:44:10] <andypugh> skunkworks__: My idea was a HAL module that creates a raster completely independent of any G-code, and modulates an output accordingly.
[18:44:14] <skunkworks__> andypugh: I agree
[18:44:24] <skunkworks__> andypugh: cool!
[18:44:45] <andypugh> No need to load EMC2 even, just a minimalist Glade UI and HAL
[18:45:21] <FinboySlick> andypugh: Was it any help?
[18:46:01] <andypugh> FinboySlick: The label is not a child of the button
[18:46:55] <FinboySlick> andypugh: I figured. Though you can probably do self.fb.parent.elemets["whateveristhelabel"].caption ="sometext"
[18:47:03] <skunkworks__> andypugh: gasp - no axis? I don't know about that... ;)
[18:49:25] <FinboySlick> Or replace self.fb by its parent and move up to the hierarchy when you add_filter.
[18:50:21] <FinboySlick> Things in python are usually organized in lists or catalogs or sets.
[18:51:39] <FinboySlick> Actually, that would be move down the hierarchy when calling add_filter
[18:51:47] <FinboySlick> But I'm sure you caught my drift.
[18:54:39] <FinboySlick> builder is a glade.Glade() object?
[18:54:48] <andypugh> I don't know.
[18:55:19] <andypugh> The thing is, I want to get to the labels from the LoadImage block, not the __Init__
[18:56:13] <FinboySlick> From a few google searches, it seems that glade coders make very liberal use of get_object()
[18:56:56] <andypugh> Which is fine, but can it look outside the passed object?
[18:56:58] <FinboySlick> So maybe there's no way to refer to child gui elements in lists.
[18:57:28] <FinboySlick> Oh, your label is not a child of builder ?
[18:57:59] <andypugh> FinboySlick: Yes, it is a child of builder (I think) but builder is not passed to LoadImage
[18:58:44] <FinboySlick> Oh, you can set a self.builder = builder
[18:59:05] <FinboySlick> Then you can use self.builder.get_object('whatever') in getimage
[18:59:12] <andypugh> Ah, here we come to a funamental question. Who or What is Self?
[18:59:58] <andypugh> Is it the class, or the function?
[19:00:04] <FinboySlick> It's the class.
[19:00:06] <andypugh> Or the whole UI?
[19:00:16] <FinboySlick> All methods on a class are passed self
[19:00:23] <FinboySlick> Which is the class itself.
[19:00:42] <andypugh> And you use self.variable to keep it local?
[19:00:43] <FinboySlick> That's why all your def whatever() statements have self as the first arg.
[19:01:04] <FinboySlick> Yes, that's how you set class properties from within the class.
[19:01:06] <andypugh> Or are variables local by default?
[19:01:27] <FinboySlick> If you just set a variable, it'll be local to the function.
[19:01:36] <FinboySlick> If you want it to be defined for the whole class, you use self
[19:01:45] <andypugh> (ie, I can remove all these self. things for local transitory variables?
[19:01:57] <andypugh> Right, good.
[19:05:56] <FinboySlick> Lemme know if it worked. All i say comes with a I haven't coded in a long time disclaimer.
[19:06:11] <andypugh> It seems close
[19:08:48] <andypugh> v
[19:08:50] <andypugh> http://pastebin.com/cnsWBgYH
[19:09:46] <FinboySlick> v for victory or v for vendetta?
[19:10:29] <andypugh> FinboySlick: Mac-user on Ubuntu with Mac keyboard, pasting with command-V not Ctrl-V
[19:11:06] <FinboySlick> Hehe, it looks fine to me anyway. Do you get an error?
[19:12:21] <andypugh> Yes, but just that text has to be string, not int.
[19:12:42] <FinboySlick> Oh... I think you can use just str()
[19:13:20] <andypugh> I am trying something like "width %i",width at the moment
[19:14:05] <andypugh> Hmm, that might only work in print
[19:14:14] <FinboySlick> Yeah, just str(width)
[19:14:28] <FinboySlick> set_text(str(width))
[19:14:34] <r00t4rd3d> http://imgur.com/a/BHUsv#0
[19:14:40] <andypugh> I want "width 1234"
[19:15:13] <FinboySlick> set_text("Width: " + str(width))
[19:15:49] <FinboySlick> There's probably a fancier way of doing it too.
[19:16:39] <andypugh> r00t4rd3d: It is possible I designed parts of that X-ray microscope, I was a mechanical designer at v
[19:16:41] <andypugh> http://www.nordson.com/en-us/divisions/dage/
[19:17:06] <andypugh> FinboySlick: Ah, OK. In VBA you use & for string concat
[19:17:38] <FinboySlick> You may not even need the str()
[19:17:43] <r00t4rd3d> andy do you reddit?
[19:17:46] <r00t4rd3d> http://www.reddit.com/r/gaming/comments/srohf/i_work_with_industrial_xray_systems_i_digitally/
[19:17:47] <FinboySlick> But most likely yo do.
[19:19:23] <FinboySlick> andypugh: The fancy way: set_text('Width: %d' % width)
[19:27:18] <andypugh> Ah, that was what I was looking for, though I have this, which works
[19:27:22] <andypugh> set_text(format("Width {0!s}".format(width)))
[19:27:58] <FinboySlick> andypugh: I think format() is the new preferred way of doing things.
[19:29:04] <andypugh> I think I have too many "format" words, but it works
[19:29:15] <andypugh> All the LinuxCNC Python uses yiour format
[19:29:27] <FinboySlick> Though you might have gone a bit overkill there. You can do set_text('Width {0}'.format(width))
[19:30:38] <FinboySlick> Strings are objects, so you can call methods straight on the tail end of them.
[19:32:48] <andypugh> OK, Happy for tonight, time to sleep
[19:33:25] <andypugh> I can read a bitmap and display the size. The rest is just programming
[19:33:49] <FinboySlick> Glad i could be helpful.
[19:33:57] <andypugh> Yes, thanks very much
[19:34:18] <FinboySlick> Heh, I still owe you a few.
[19:34:18] <andypugh> The trick was making "builder" persistent and class-global
[19:34:39] <FinboySlick> That's typically the main purpose of __init__
[19:34:51] <andypugh> Night all
[21:57:08] <jdhnc> what triggers a following error on a stepper system?
[21:57:27] <MattyMatt> closed loop?
[21:57:31] <jdhnc> nope
[21:57:51] <Jymmm> goin faster than the setting
[21:58:05] <pcw_home> software or hardware stepgen?
[21:58:06] <MattyMatt> not enough juice
[21:58:15] <jdhnc> 7i43 stepgen
[21:59:14] <jdhnc> I just changed the max settings to see how fast it would turn.
[21:59:34] <Jymmm> that would do it
[22:00:09] <pcw_home> If you try to step faster than the steplen and stepspace will allow you eill ge a FE
[22:00:31] <pcw_home> s/eill ge/will get
[22:00:49] <Jymmm> pcw_home: steplen and space is an isue with mesa cards or ???
[22:01:12] <jackc> youll never know if you have error though in an open looped system
[22:01:18] <jackc> (except by looking at it)
[22:01:27] <pcw_home> issue? its how you set the hardware timing
[22:01:55] <jackc> Jymmm you set those values to be safe for your motors and loading
[22:01:57] <Jymmm> pcw_home: No no I mean what would be the limitation from going 200MPH?
[22:02:09] <jackc> torque
[22:02:19] <jackc> steppers torque decreases exponentially with speed
[22:02:27] <jackc> (simplified, but bascially)
[22:02:56] <Jymmm> jackc: bot torque isn't that much of an issue just jogging.
[22:02:56] <pcw_home> if I set steplen to 20 usec and stepspace to 20 usec (4 usec cycle) setting the steprate faster than 40 KHz will generate a FE (as it should)
[22:03:14] <jackc> Jymmm: it is if your motor torque is less than that required to move the screw!
[22:03:15] <Jymmm> pcw_home: 7i43 is paraport?
[22:03:21] <Tom_itx> ja
[22:03:27] <pcw_home> 40 usec and 25 KHz sheesh
[22:03:58] <Jymmm> pcw_home: 7i43 is paraport?
[22:04:14] <pcw_home> parallel port interfaced yes
[22:04:28] <pcw_home> (for linuxCNC anyway)
[22:04:41] <Jymmm> pcw_home: and pci version wouldn't have those timing limitations?
[22:05:16] <pcw_home> its not a limitation its exactly what its is supposed to do
[22:05:57] <jdhnc> steplen and stepspace are 5000, the drives say they only need 1.2uS though
[22:06:37] <pcw_home> so 100 KHz would be your max steprate at those settings
[22:06:44] <Jymmm> pcw_home: isn't 20uS a tad much? I thought those were paraport timings or is that 20mS ?
[22:07:11] <jdhnc> where is the 100KHz set?
[22:08:06] <jdhnc> the drive says dirneeds to be set for 5uS before pulse, is that DIRSETUP?
[22:08:12] <pcw_home> its set by the fact you have 5 usec + 5 usec = 10 usec = 100 Khz rate minimum cycle time
[22:08:44] <pcw_home> 10 usec minimum cycle time = 100 khz rate
[22:08:51] <pcw_home> i should say
[22:08:52] <jdhnc> oh, so I have to limit step rate to below that via the axis limits?
[22:09:05] <pcw_home> yes
[22:10:42] <pcw_home> the step generator hardware will not violate the step timing so if you ask it to go faster than that it will just go as fast as it can (and of course not keep up and generate a FE)
[22:11:31] <pcw_home> so if you set the steplen and stepspace to 100ns you can generate 5MHz steprates
[22:12:16] <pcw_home> but if you set the steprate to 6mhz you would still only get 5 mhz
[22:14:23] <Jymmm> pcw_home: Just as a sidenote... the funny thing is I can go faster using TurboCNC than I can using EMC =)
[22:15:13] <pcw_home> I can see that might be true for software stepgen, not hardware
[22:15:34] <Jymmm> ah
[22:17:30] <Jymmm> pcw_home: Not a topic of discussion for this eveing, but I stil have never figured out how HW stepgen works RT and why SW wouldn't work as well.
[22:17:39] <pcw_home> if you have 1.2 usec steplen and lets assume 1.2 usec stepspace. This allows a 416 khz steprate
[22:17:41] <pcw_home> i dont think this is even physically possible on a LPT port
[22:18:11] <jdhnc> I see no current docs for dirsetup/dirhold
[22:19:15] <pcw_home> the hardware stepgen is just a digitally settable oscillator so has no rate limitations
[22:20:38] <jdhnc> Likewise, if dirhold is changed from 1 to 3, there will be at least three periods between the step pulse and a change of the direction pin.
[22:20:46] <Jymmm> • 2 MHz step input
[22:21:08] <jdhnc> does that set the time between teh last step and the Dir change, or the dir change and the next step?
[22:21:41] <Jymmm> pcw_home: What would a "• 2 MHz step input" equival to uS wise?
[22:21:43] <pcw_home> dir setup and hold are in nS
[22:21:43] <Thetawaves> does linux cnc give a number of pulses to execute to a hw stepgen?
[22:21:59] <jdhnc> right, ignoring the time base change.
[22:22:01] <pcw_home> thetawaves, no
[22:22:15] <Thetawaves> how does linuxcnc know how many pulses the hw stepgen has made
[22:22:20] <Thetawaves> delta t?
[22:22:39] <pcw_home> it reads a pulse counter
[22:23:39] <Jymmm> pcw_home: Ah, 200nS pulse MINIMUM are my drives
[22:23:47] <Jymmm> step pulse
[22:24:11] <pcw_home> Jymmm: 2 mhz (500 ns period) could be 250ns steplen and 250ns stepspace
[22:24:31] <Jymmm> pcw_home: is that avg? slow? fast?
[22:25:23] <Thetawaves> 500ns is down into transistor switch speed limits
[22:25:26] <Thetawaves> i think you're fine
[22:26:08] <Jymmm> bbiab
[22:27:08] <Thetawaves> 500ns is 20mhz
[22:27:11] <Thetawaves> btw
[22:27:34] <Thetawaves> oops
[22:27:43] <Thetawaves> 2mhz as already stated?? wtf im tired
[22:28:02] <Tecan> i bought an emotiv today
[22:28:16] <pcw_home> so both the hardware and software LinuxCNC stepgens basically work the same:
[22:28:18] <pcw_home> digital osc (DDA) --> counter --> linuxcnc feedback --> DDA
[22:28:58] <pcw_home> so they are closed loop and can generate FEs (as jdhnc found out)
[22:32:10] <joe9> ReadError: u around?
[22:34:14] <ReadError> yea
[22:34:16] <ReadError> bits came today
[22:34:31] <ReadError> i need to open the box still though
[22:34:38] <ReadError> i can get some pics here in a few if you want
[22:34:50] <ReadError> well actually let me grab them now 1 sec goin upstairs
[22:34:56] <jdhnc> does base_period affect hardware stepgen?
[22:36:47] <ve7it> Jymmm: you around?
[22:38:42] <jdhnc> nevermind,it's all in the man page
[22:39:14] <pcw_home> you normally do not use a base thread with a hardware stepgen
[22:39:30] <jdhnc> I was just wondering what all was limiting speed
[22:44:42] <pcw_home> well...
[22:44:44] <pcw_home> 1. You cannot step any faster than 1/(stepspace+steplen)
[22:44:45] <pcw_home> 2. you need to set the stepgen maxvel about 20% faster than any linuxcnc requested velocity
[22:44:47] <pcw_home> 3. if you have significant servo thread jitter you need to set the stepgen maxaccel about 20% higher than LinuxCNC maxaccel
[22:45:24] <ReadError> joe9, http://p.twimg.com/ArYKES_CMAE-jWW.jpg:large
[22:45:51] <pcw_home> other than that the 7I43 will cheerfully generate step rate up to about 12 MHz
[22:45:56] <archivist> jdhnc, steppers lose torque at higher speeds
[22:46:20] <jdhnc> archivist: I know, just got new motors and drives.
[22:46:34] <pcw_home> (yes these are just electrical/setup limitations)
[22:47:49] <jdhnc> I set steplen/space to 1500, anything under ~16.8KHz works
[22:48:45] <pcw_home> what is the stepgen hardware maxvel set to?
[22:48:48] <jdhnc> that's what the scope says anyway, that seems to low
[22:49:23] <jdhnc> max_velocity is 3.667
[22:49:34] <sjd> quit
[22:49:37] <pcw_home> IPS?
[22:49:41] <jdhnc> yes
[22:50:10] <ReadError> got some switches today
[22:50:12] <pcw_home> thats LinuxCNC maxvel or the stepgens maxvel?
[22:50:15] <ReadError> need to get them setup
[22:50:21] <jdhnc> 8000 scale (5tpi, 200, 1/8)
[22:50:38] <jdhnc> that is the ini specified Max_velocity for the axis
[22:51:10] <jdhnc> the .hal is 2.1
[22:51:11] <pcw_home> doesn't mean anything to me
[22:51:31] <ReadError> is there a "go to home" command?
[22:51:32] <jdhnc> hm2_7i43.0.stepgen.00.maxvel 2.1
[22:51:39] <ReadError> i see an option to home, unhome
[22:51:52] <pcw_home> right so thats you limit
[22:52:11] <pcw_home> 2.1 IPS
[22:52:52] <pcw_home> = 16.8 KHz
[22:55:03] <jdhnc> gotcha.
[22:58:23] <jdhnc> the 7i47 seems to be pretty perfect for my config
[23:10:43] <Jymmm> 2.1 IPS?! I can fart faster than that!
[23:11:09] <Jymmm> whats that in IPM?
[23:11:11] <Jymmm> 120?
[23:11:28] <Jymmm> ok, not that bad I guess
[23:12:30] <pcw_home> but in any case it should be set about 20% higher than max_velocity so about 4.5
[23:13:01] <Jymmm> oh, tht's right to compensate for the snafu
[23:13:08] <Jymmm> I totally forgot about that =)
[23:13:15] <Jymmm> bbl
[23:14:10] <jdhnc> I set it to 4.1 for testing. These numbers came out of pncconf
[23:29:56] <jdhnc> any guess on thread size?
[23:44:26] <Jymmm> jdhnc: thread size of?
[23:44:47] <jdhnc> heh... of the G0704 Z lead screw
[23:45:00] <Jymmm> jdhnc: I'm not paying attenton to the conversation =)
[23:45:42] <Jymmm> are you trying to figure the rate?
[23:45:49] <Jymmm> (inversly that is)
[23:46:04] <jdhnc> no, trying to figure an easy way to attach a coupler to it.
[23:46:13] <Jymmm> metric?