8i20/BLDC component, limited spindle speed

More
8 years 6 months ago #109639 by andypugh

PCW wrote: If speed limits are symmetrical and doubling the servo thread rate doesn't help dramatically, the problem
may be related to the current loop tuning, i think I would try setting the current loop P gain and I gain
to 1/2 of their default values , I think this requires setsserial or Mesa utilities a funny cable and Windows.


With Master you can set the params from HAL. But with 2.7 you need to use setsserial.

Please Log in to join the conversation.

More
8 years 3 months ago #114227 by blazini36

andypugh wrote:

PCW wrote: If speed limits are symmetrical and doubling the servo thread rate doesn't help dramatically, the problem
may be related to the current loop tuning, i think I would try setting the current loop P gain and I gain
to 1/2 of their default values , I think this requires setsserial or Mesa utilities a funny cable and Windows.


With Master you can set the params from HAL. But with 2.7 you need to use setsserial.

I haven't tried setting the PID settings yet, I've been busy making parts with it, the motor runs well with the exception of being limited to 1900rpm stable spindle speed.

I am running 2.8 pre and I do recall using HAL to change current NV params on the 8i20. They seemed to be accepted but I don't believe they were persistent. I wound up using setserial which did work. It's been a couple months so I don't recall the details but is there anything special to get it working with just HAL?

Please Log in to join the conversation.

More
8 years 3 months ago #114228 by PCW
A couple of things, I'm not sure you can set NV params in hal
( and I dont think you would want to since you dont wont these constantly re-written
and NV params don't take effect until the 8I20 is power cycled )

You can set the volatile params in hal so any tuning can be done that way (or by setting the NV params outside of linuxcnc)

Please Log in to join the conversation.

More
8 years 3 months ago #114230 by blazini36

PCW wrote: A couple of things, I'm not sure you can set NV params in hal
( and I dont think you would want to since you dont wont these constantly re-written
and NV params don't take effect until the 8I20 is power cycled )

You can set the volatile params in hal so any tuning can be done that way (or by setting the NV params outside of linuxcnc)

That explains it.

I VNC'd into the mill quick while it's fresh on my mind and I'm not sure I see how to make the PID adjustment. I started halrun with a test file that just loads up the basics so I can see pins and params. I only see pid-on and not pins, nothing I can see that a value can be read or write. There are a few that I have no Idea about though:
Code:
~ $ '/home/justin/linuxcnc-7i96/scripts/rip-environment' halrun halcmd: source /home/justin/Documents/8i20.hal Note: Using POSIX realtime hm2: loading Mesa HostMot2 driver version 0.15 hm2_eth: loading Mesa AnyIO HostMot2 ethernet driver version 0.2 iptables: No chain/target/match by that name. hm2_eth: 10.10.10.10: Hardware address: 00:60:1b:10:41:24 hm2_eth: discovered 7I76E-16 hm2/hm2_7i76e.0: Smart Serial Firmware Version 43 Board hm2_7i76e.0.7i76.0.0 Hardware Mode 0 = standard Board hm2_7i76e.0.7i76.0.0 Software Mode 0 = io_spin Board hm2_7i76e.0.7i76.0.0 Software Mode 1 = io_ana_spin Board hm2_7i76e.0.7i76.0.0 Software Mode 2 = io_enc_ana_spin_fv hm2/hm2_7i76e.0: 51 I/O Pins used: hm2/hm2_7i76e.0: IO Pin 000 (P1-01): StepGen #0, pin Direction (Output) hm2/hm2_7i76e.0: IO Pin 001 (P1-14): StepGen #0, pin Step (Output) hm2/hm2_7i76e.0: IO Pin 002 (P1-02): StepGen #1, pin Direction (Output) hm2/hm2_7i76e.0: IO Pin 003 (P1-15): StepGen #1, pin Step (Output) hm2/hm2_7i76e.0: IO Pin 004 (P1-03): StepGen #2, pin Direction (Output) hm2/hm2_7i76e.0: IO Pin 005 (P1-16): StepGen #2, pin Step (Output) hm2/hm2_7i76e.0: IO Pin 006 (P1-04): StepGen #3, pin Direction (Output) hm2/hm2_7i76e.0: IO Pin 007 (P1-17): StepGen #3, pin Step (Output) hm2/hm2_7i76e.0: IO Pin 008 (P1-05): StepGen #4, pin Direction (Output) hm2/hm2_7i76e.0: IO Pin 009 (P1-06): StepGen #4, pin Step (Output) hm2/hm2_7i76e.0: IO Pin 010 (P1-07): Smart Serial Interface #0, pin TxData0 (Output) hm2/hm2_7i76e.0: IO Pin 011 (P1-08): Smart Serial Interface #0, pin RxData0 (Input) hm2/hm2_7i76e.0: IO Pin 012 (P1-09): Smart Serial Interface #0, pin TxData1 (Output) hm2/hm2_7i76e.0: IO Pin 013 (P1-10): Smart Serial Interface #0, pin RxData1 (Input) hm2/hm2_7i76e.0: IO Pin 014 (P1-11): Encoder #0, pin Index (Input) hm2/hm2_7i76e.0: IO Pin 015 (P1-12): Encoder #0, pin B (Input) hm2/hm2_7i76e.0: IO Pin 016 (P1-13): Encoder #0, pin A (Input) hm2/hm2_7i76e.0: IO Pin 017 (P2-01): IOPort hm2/hm2_7i76e.0: IO Pin 018 (P2-14): IOPort hm2/hm2_7i76e.0: IO Pin 019 (P2-02): IOPort hm2/hm2_7i76e.0: IO Pin 020 (P2-15): IOPort hm2/hm2_7i76e.0: IO Pin 021 (P2-03): IOPort hm2/hm2_7i76e.0: IO Pin 022 (P2-16): IOPort hm2/hm2_7i76e.0: IO Pin 023 (P2-04): IOPort hm2/hm2_7i76e.0: IO Pin 024 (P2-17): IOPort hm2/hm2_7i76e.0: IO Pin 025 (P2-05): IOPort hm2/hm2_7i76e.0: IO Pin 026 (P2-06): IOPort hm2/hm2_7i76e.0: IO Pin 027 (P2-07): IOPort hm2/hm2_7i76e.0: IO Pin 028 (P2-08): IOPort hm2/hm2_7i76e.0: IO Pin 029 (P2-09): IOPort hm2/hm2_7i76e.0: IO Pin 030 (P2-10): IOPort hm2/hm2_7i76e.0: IO Pin 031 (P2-11): IOPort hm2/hm2_7i76e.0: IO Pin 032 (P2-12): IOPort hm2/hm2_7i76e.0: IO Pin 033 (P2-13): IOPort hm2/hm2_7i76e.0: IO Pin 034 (P3-01): IOPort hm2/hm2_7i76e.0: IO Pin 035 (P3-14): IOPort hm2/hm2_7i76e.0: IO Pin 036 (P3-02): IOPort hm2/hm2_7i76e.0: IO Pin 037 (P3-15): IOPort hm2/hm2_7i76e.0: IO Pin 038 (P3-03): IOPort hm2/hm2_7i76e.0: IO Pin 039 (P3-16): IOPort hm2/hm2_7i76e.0: IO Pin 040 (P3-04): IOPort hm2/hm2_7i76e.0: IO Pin 041 (P3-17): IOPort hm2/hm2_7i76e.0: IO Pin 042 (P3-05): IOPort hm2/hm2_7i76e.0: IO Pin 043 (P3-06): IOPort hm2/hm2_7i76e.0: IO Pin 044 (P3-07): IOPort hm2/hm2_7i76e.0: IO Pin 045 (P3-08): IOPort hm2/hm2_7i76e.0: IO Pin 046 (P3-09): IOPort hm2/hm2_7i76e.0: IO Pin 047 (P3-10): IOPort hm2/hm2_7i76e.0: IO Pin 048 (P3-11): IOPort hm2/hm2_7i76e.0: IO Pin 049 (P3-12): IOPort hm2/hm2_7i76e.0: IO Pin 050 (P3-13): IOPort hm2/hm2_7i76e.0: registered halcmd: show pins *8i20* <stdin>:2: Unknown 'show' type 'pins' halcmd: show pin *8i20* Component Pins: Owner Type Dir Value Name 7 float IN 0.3333333 hm2_7i76e.0.8i20.0.1.angle <== ang 7 float OUT 165.76 hm2_7i76e.0.8i20.0.1.bus-voltage 7 float OUT 27 hm2_7i76e.0.8i20.0.1.card-temp 7 float IN 0 hm2_7i76e.0.8i20.0.1.current 7 bit OUT FALSE hm2_7i76e.0.8i20.0.1.fault.U-current 7 bit OUT TRUE hm2_7i76e.0.8i20.0.1.fault.U-current-not 7 bit OUT FALSE hm2_7i76e.0.8i20.0.1.fault.V-current 7 bit OUT TRUE hm2_7i76e.0.8i20.0.1.fault.V-current-not 7 bit OUT FALSE hm2_7i76e.0.8i20.0.1.fault.W-current 7 bit OUT TRUE hm2_7i76e.0.8i20.0.1.fault.W-current-not 7 bit OUT FALSE hm2_7i76e.0.8i20.0.1.fault.bus-high 7 bit OUT TRUE hm2_7i76e.0.8i20.0.1.fault.bus-high-not 7 bit OUT FALSE hm2_7i76e.0.8i20.0.1.fault.bus-overv 7 bit OUT TRUE hm2_7i76e.0.8i20.0.1.fault.bus-overv-not 7 bit OUT FALSE hm2_7i76e.0.8i20.0.1.fault.bus-underv 7 bit OUT TRUE hm2_7i76e.0.8i20.0.1.fault.bus-underv-not 7 bit OUT FALSE hm2_7i76e.0.8i20.0.1.fault.framingr 7 bit OUT TRUE hm2_7i76e.0.8i20.0.1.fault.framingr-not 7 bit OUT FALSE hm2_7i76e.0.8i20.0.1.fault.module 7 bit OUT TRUE hm2_7i76e.0.8i20.0.1.fault.module-not 7 bit OUT FALSE hm2_7i76e.0.8i20.0.1.fault.no-enable 7 bit OUT TRUE hm2_7i76e.0.8i20.0.1.fault.no-enable-not 7 bit OUT FALSE hm2_7i76e.0.8i20.0.1.fault.overcurrent 7 bit OUT TRUE hm2_7i76e.0.8i20.0.1.fault.overcurrent-not 7 bit OUT FALSE hm2_7i76e.0.8i20.0.1.fault.overrun 7 bit OUT TRUE hm2_7i76e.0.8i20.0.1.fault.overrun-not 7 bit OUT FALSE hm2_7i76e.0.8i20.0.1.fault.overtemp 7 bit OUT TRUE hm2_7i76e.0.8i20.0.1.fault.overtemp-not 7 bit OUT FALSE hm2_7i76e.0.8i20.0.1.fault.watchdog 7 bit OUT TRUE hm2_7i76e.0.8i20.0.1.fault.watchdog-not 7 bit OUT FALSE hm2_7i76e.0.8i20.0.1.status.brake-old 7 bit OUT TRUE hm2_7i76e.0.8i20.0.1.status.brake-old-not 7 bit OUT FALSE hm2_7i76e.0.8i20.0.1.status.brake-on 7 bit OUT TRUE hm2_7i76e.0.8i20.0.1.status.brake-on-not 7 bit OUT FALSE hm2_7i76e.0.8i20.0.1.status.bus-underv 7 bit OUT TRUE hm2_7i76e.0.8i20.0.1.status.bus-underv-not 7 bit OUT FALSE hm2_7i76e.0.8i20.0.1.status.current-lim 7 bit OUT TRUE hm2_7i76e.0.8i20.0.1.status.current-lim-not 7 bit OUT FALSE hm2_7i76e.0.8i20.0.1.status.ext-reset 7 bit OUT TRUE hm2_7i76e.0.8i20.0.1.status.ext-reset-not 7 bit OUT TRUE hm2_7i76e.0.8i20.0.1.status.no-enable 7 bit OUT FALSE hm2_7i76e.0.8i20.0.1.status.no-enable-not 7 bit OUT FALSE hm2_7i76e.0.8i20.0.1.status.pid-on 7 bit OUT TRUE hm2_7i76e.0.8i20.0.1.status.pid-on-not 7 bit OUT FALSE hm2_7i76e.0.8i20.0.1.status.sw-reset 7 bit OUT TRUE hm2_7i76e.0.8i20.0.1.status.sw-reset-not 7 bit OUT FALSE hm2_7i76e.0.8i20.0.1.status.wd-reset 7 bit OUT TRUE hm2_7i76e.0.8i20.0.1.status.wd-reset-not halcmd: show param *8i20* Parameters: Owner Type Dir Value Name 7 float RW 1 hm2_7i76e.0.8i20.0.1.angle-maxlim 7 float RW 0 hm2_7i76e.0.8i20.0.1.angle-minlim 7 float RW 1 hm2_7i76e.0.8i20.0.1.angle-scalemax 7 float RW 655.35 hm2_7i76e.0.8i20.0.1.bus-voltage-scalemax 7 float RW 65535 hm2_7i76e.0.8i20.0.1.card-temp-scalemax 7 float RW 10 hm2_7i76e.0.8i20.0.1.current-maxlim 7 float RW -10 hm2_7i76e.0.8i20.0.1.current-minlim 7 float RW 10 hm2_7i76e.0.8i20.0.1.current-scalemax 7 u32 RW 0x00004268 hm2_7i76e.0.8i20.0.1.nvbrakeoffv 7 u32 RW 0x00004A38 hm2_7i76e.0.8i20.0.1.nvbrakeonv 7 u32 RW 0x00009664 hm2_7i76e.0.8i20.0.1.nvbusoverv 7 u32 RW 0x00001194 hm2_7i76e.0.8i20.0.1.nvbusundervmax 7 u32 RW 0x00000DAC hm2_7i76e.0.8i20.0.1.nvbusundervmin 7 u32 RW 0x00000000 hm2_7i76e.0.8i20.0.1.nvkdihi 7 u32 RW 0x00007D00 hm2_7i76e.0.8i20.0.1.nvkdil 7 u32 RW 0x0000C350 hm2_7i76e.0.8i20.0.1.nvkdilo 7 u32 RW 0x00000032 hm2_7i76e.0.8i20.0.1.nvkdp 7 u32 RW 0x00000000 hm2_7i76e.0.8i20.0.1.nvkqihi 7 u32 RW 0x00007D00 hm2_7i76e.0.8i20.0.1.nvkqil 7 u32 RW 0x0000C350 hm2_7i76e.0.8i20.0.1.nvkqilo 7 u32 RW 0x00000032 hm2_7i76e.0.8i20.0.1.nvkqp 7 u32 RW 0x000003E8 hm2_7i76e.0.8i20.0.1.nvmaxcurrent 7 u32 RW 0x00000009 hm2_7i76e.0.8i20.0.1.nvrembaudrate 7 u32 RO 0x0000008B hm2_7i76e.0.8i20.0.1.swrevision 7 u32 RO 0x0A0000B7 hm2_7i76e.0.8i20.0.1.unitnumber halcmd:

Please Log in to join the conversation.

More
8 years 3 months ago #114231 by PCW
Ahh maybe the RAM parameter are not exposed so you would need to set the NV parameters (perhaps via setsserial) and then cycle the 8I20s low side power

I would try setting KQI,KQP,KDI,KDP to 1/2 of their current values

Please Log in to join the conversation.

More
8 years 3 months ago #114233 by blazini36
don't see a "KDI", or "KQI". there is a nvkdil and an nvkqil but there is also a nvkdilo and nvkdihi. am I changing everything of just the nvkdil and nvkqil?

Please Log in to join the conversation.

More
8 years 3 months ago #114234 by PCW
There should be NVKQP, NVKDP, NVKQI, and NVKDI (the NVXIL parameters are integral limit numbers which can probably be left alone)

Please Log in to join the conversation.

More
8 years 3 months ago #114235 by blazini36

PCW wrote: There should be NVKQP, NVKDP, NVKQI, and NVKDI (the NVXIL parameters are integral limit numbers which can probably be left alone)


Are you sure that "nvkqil" is the limit? judging by the converted hex values it is likely that nvkqilo and nvkqihi are the limits. If you look at the read out parameters that I listed above there is no nvkqi. If I can't see it's current parameter I can't set it.

This is what I worked up, please look at this, I only intend to set the ones with an asterisk because the others look like the limits
Code:
New Params (* = to be set) loadrt setsserial cmd="set hm2_7i76e.0.8i20.0.1.nvkdihi 0x00000000" (already 0) *loadrt setsserial cmd="set hm2_7i76e.0.8i20.0.1.nvkdil 0x00006400" (1600) loadrt setsserial cmd="set hm2_7i76e.0.8i20.0.1.nvkdilo 0x000061A8" (25000) *loadrt setsserial cmd="set hm2_7i76e.0.8i20.0.1.nvkdp 0x00000019" (25) loadrt setsserial cmd="set hm2_7i76e.0.8i20.0.1.nvkqihi 0x00000000" (already 0) *loadrt setsserial cmd="set hm2_7i76e.0.8i20.0.1.nvkqil 0x00006400" (1600) loadrt setsserial cmd="set hm2_7i76e.0.8i20.0.1.nvkqilo 0x000061A8" (25000) *loadrt setsserial cmd="set hm2_7i76e.0.8i20.0.1.nvkqp 0x00000019" (25) Original 7 u32 RW 0x00000000 hm2_7i76e.0.8i20.0.1.nvkdihi (0) 7 u32 RW 0x00007D00 hm2_7i76e.0.8i20.0.1.nvkdil (3200) 7 u32 RW 0x0000C350 hm2_7i76e.0.8i20.0.1.nvkdilo (50000) 7 u32 RW 0x00000032 hm2_7i76e.0.8i20.0.1.nvkdp (50) 7 u32 RW 0x00000000 hm2_7i76e.0.8i20.0.1.nvkqihi (0) 7 u32 RW 0x00007D00 hm2_7i76e.0.8i20.0.1.nvkqil (3200) 7 u32 RW 0x0000C350 hm2_7i76e.0.8i20.0.1.nvkqilo (50000) 7 u32 RW 0x00000032 hm2_7i76e.0.8i20.0.1.nvkqp (50)±

Please Log in to join the conversation.

More
8 years 3 months ago #114239 by PCW
I think either the parameters listed are missing the integral term or misnamed
that is nvkdqi and nvkdi are missing

Have you tried setting these (nvkdqi and nvkdi) with setsserial?

(take a look at the 8I20 manual for the proper parameter names)

Please Log in to join the conversation.

More
8 years 3 months ago #114240 by blazini36
Is there some way I can see their current values, or do you know the default? I don't want to write the parameter without knowing what to go back to. Otherwise I'm just guessing.

Please Log in to join the conversation.

Time to create page: 0.077 seconds
Powered by Kunena Forum