8i20/BLDC component, limited spindle speed

More
26 Apr 2018 08:53 #109639 by andypugh

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 or Create an account to join the conversation.

More
15 Jul 2018 17:58 #114227 by blazini36

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 or Create an account to join the conversation.

More
15 Jul 2018 18:10 #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 or Create an account to join the conversation.

More
15 Jul 2018 18:56 #114230 by blazini36

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:
~ $ '/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 or Create an account to join the conversation.

More
15 Jul 2018 19:13 #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 or Create an account to join the conversation.

More
15 Jul 2018 19:40 #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 or Create an account to join the conversation.

More
15 Jul 2018 19:50 #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 or Create an account to join the conversation.

More
15 Jul 2018 20:09 #114235 by blazini36

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
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 or Create an account to join the conversation.

More
15 Jul 2018 20:38 - 15 Jul 2018 20:39 #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)
Last edit: 15 Jul 2018 20:39 by PCW.

Please Log in or Create an account to join the conversation.

More
15 Jul 2018 21:02 #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 or Create an account to join the conversation.

Time to create page: 0.217 seconds
Powered by Kunena Forum