7i97+8i20 error function not found

20 Dec 2022 00:06 #259914 by andypugh
You can try running the motors with just HAL. It's a bit of a fiddle, but takes out a lot of the unknowns.

You can create a HAL file looking a bit like this (not exactly, as I don't know your pin allocations)
loadrt hostmot2
loadrt hm2_eth board_ip=
loadrt bldc config=f,f,f
loadrt threads
addf hm2_7i97.0.read  thread1
addf bldc.0  thread1
addf bldc.1  thread1
addf bldc.2  thread1
addf hm2_7i97.0.write  thread1

net m0-pos bldc.0.rotor-angle hm2_7i97.0.8i20.0.0.angle
net F1 hm2_7i97.....

..... I will come back to this...

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

20 Dec 2022 00:08 #259915 by andypugh
Looking through the pin dump above I don't see any HAL inputs being allocated to reading the Fanuc commutation signals. Are the F1, F2, F4, F8 signals actually connected into the system (and into bldc) anywhere?

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

05 Mar 2023 20:05 #265938 by saquzi
Yep so i got the servo moving a while ago, BUT not sure what the final problem with it was for not working.. But after that, i added 7i85 too for rest 8i20 amplifiers, Installed all the hardware to the mill, tried to use just the abz encoder but then i realised and remembered that I really need the grayscale commutation working, because i need the full torque on startup when i hit enable. But i don´t have a clue that how it should be connected in hal to the BLDC component?

At for now i have only this:

net x-gray-c1-in     bldc.0.C1
net x-gray-c2-in     bldc.0.C2
net x-gray-c4-in     bldc.0.C4
net x-gray-c8-in     bldc.0.C8

# --- X-GRAY-C1-IN ---
net x-gray-c1-in     <=        hm2_7i97.0.inmux.00.raw-input-08

# --- X-GRAY-C2-IN ---
net x-gray-c2-in     <=        hm2_7i97.0.inmux.00.raw-input-09

# --- X-GRAY-C4-IN ---
net x-gray-c4-in     <=        hm2_7i97.0.inmux.00.raw-input-10

# --- X-GRAY-C8-IN ---
net x-gray-c8-in     <=        hm2_7i97.0.inmux.00.raw-input-11


File Attachment:

File Name: takisawa_2...3-05.hal
File Size:13 KB

Thanks for all the help this far. Getting really close  that I have figured out all the hard stuff..

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

06 Mar 2023 10:45 - 06 Mar 2023 10:46 #265950 by andypugh
It looks approximately right except you have not configured for gray code encoder:
loadrt bldc cfg=qi,qi,qi

Needs to be
loadrt bldc cfg=fq,fq,fq

(I think, I haven't run a Fanuc servo. Though I did write the bldc component)
You could try f,f,f first, and then see if changing to fq,fq,fq makes things smoother.
Can you check that you see the bldc.0.C1...C8 values changing as you rotate the motor by hand? You should also see bldc.0.rotor-angle change too. (and in a vaguely logical way)[/code][/code]
Last edit: 06 Mar 2023 10:46 by andypugh.

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

06 Mar 2023 17:56 - 06 Mar 2023 18:05 #265963 by saquzi
When loaded with fq, the servo seems to be behaving just like in qi. It runs away in opposite direction when trying to jog it, sometimes it finds a sweet spot and after that i can jog it normally and home it. Exept without index it would not find home. Should i use  fqi for index homing? Or can the fq be as accurate for homing, should it use one of the comm signals for homing... Not sure how the fanuc system originally works, does it use index for something or not.

With F mode it will move + but with lots of shaking. When tryin to move it to - it just shakes but does not move. Is this some sort of an issue thats need figuring out? Encoder in wrong position? Atleast it should be in exact same position as it were when it last had the fanuc control.

Would be intresting to get this working properly like with (working) fanuc control with the grayscale. Do you happen to know if somebody has got it working earlier?

E:  Here is video with "when it starts to work" fq mode.. looks like the rotor angle changes 0-1 every 90degree of rotation. 
Last edit: 06 Mar 2023 18:05 by saquzi.

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

07 Mar 2023 21:32 #266069 by andypugh
Try taking feedback out of the equation (assuming that you are in a position that you can afford for the motor to spin freely without crashing an axis)

With just the gray-code commutation pins connected and the rotor angle connected to 8i20.angle you should be able to "setp" the 8i20 current at the command-line and make the motor spin smoothly in both directions.

You say that the angle varies between 0 and 1 4x a rev, so do you have the motor poles set to 4 in the bldc config? (this should only matter if using the encoder)

You might have to try swapping your UVW wires around so that the commutation and the motor/drive agree about where rotor zero is.

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

08 Mar 2023 22:12 #266154 by saquzi
Tried the "setp" commandline trick but for some reason did not have luck with it.. But, It is now maybe right and working (atleast almost)! Tried to start to swap UVW wires place. They were originally marked and with uvw (fanuc), wired like it to the 8i20, the acts were as described earlier. Second i tried to put the wires like 8i20 UVW - VUW servo, it maybe changed a little, but shaked the machine like hell if remember correctly. Third time i put them UVW - VWU, and with only "F" mode it worked pretty much like it should (NOTE: had to change encoder scale from negative to positive, and rev from 1 to 0. Without this it would not move, only stays in one position) I could enable the machine no matter of the servo position, soon as enable hits the servo seemed to have full torque. When machine was turned of and the axis were rotated by some amount (tested several times), it always stays on its position and moves when jogging like should. Added mode "fq" and used all the rest bldc component pins for quadrature encoder (like I had before as in the hall i posted), and it seems to work. Only when i tried "fqi" mode it would do the servo jumping stuff again, maybe at some points it stopped doing that. I am pretty sure it is because of the index hunting and something is wrong according to that..

But to the next question, how about homing with fq mode? It just trusts the home switch with the values? Can I get it as close as index homing? Or do I need to still use index for homing, but only in some other way written to hal.

Thanks for the help Andy


File Attachment:

File Name: takisawa_2...3-08.hal
File Size:13 KB
current hal. Only X axis grayscale for now, have to wire rest of the gray scale inputs tomorrow.

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

08 Mar 2023 22:30 #266156 by andypugh
I would suggest using fq mode, as the encoder index doesn't really add anything extra on top.
I don't know if Fanuc use the encoder for commutation, the 16-step commutation from just the grayscale sensors is probably fairly smooth compared to the normal 6-step that hall-sensor motors use.
And the pure f-mode should be very "robust", it can't lose it's position.

You can use the encoder index for axis homing without using it for commutation.

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

09 Mar 2023 23:21 #266241 by saquzi
Played more with this few hours tonight. Wired all 3 axis grayscales to 7i97 0-4 encoder inputs and putting jumpers to single ended position. abz inputs and coder power and ground goes to 7i85.

Tried to use fq mode, swapped motor wirings to all combinations and tested them all, maybe one of them would work the best, others not so good or not at all. It usually worked right a long time just by changing the bldc scale -+, or rev 1/0. Tried to jog it in different speeds, enable on/off, e-stop and other things that used to trip it in a way that caused servo runaway. Otherwise was really good, but sometimes when powered off couple minutes and enabled, the servo would runaway. And when it worked but ferror/error in ini was 0.1, there would be a join follow error immediatly in X- direction, but not in X+.

Had same settings to X and Y axis (same servos), but Y axis was more prone for runaway. The weird thing there was, it usually became ok for a small amount of time when switched the rev... And then in some time it started to runaway at powerup. 

Otherwise it looks like the grayscale works good, does not matter if the axis moves when powered off, the position will not change at all in enable. Z axis worked also sometimes, but usually it just dropped so had to hit e-stop.. Starting to look that maybe i should just use the F mode without quadrature, for safe operation.

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

11 Mar 2023 16:35 #266415 by saquzi
Now i have really weird issue, what i thought would have been simple fix but once again, it was not

So, Trying to use just f mode on x/y axis, (z also when i get the y working first) been testing only X and Y axis now. When moving X+- on linuxcnc servo works like it should, but when moving Y+- there is rough vibration and jump. And what makes it weird, it does not matter which servo, servo drive I swap wires. real y axis servo works also perfect when wired it so can move it in hall, x real servo therefore jumps..

What have been tested/done so far according this problem:
-New hal part for Y axis (x axis copied, changed only all the numbering and x/y markings to suite it)
-tested all three  8i20 across swapping wires
-Changed all encoder cabling across
-Changed sserial cables across
-Moved Y encoder input on 7i85 board from enc1 to enc4
-tried swapping servo power wires across, all combinations thorough on Y axis servo
-inspected all the encoder wiring so the pins match and no shortages

So for me it feels like a code/hal issue? Think that all hardware/wiring has been tried that could matter


File Attachment:

File Name: takisawa_2...3-11.hal
File Size:14 KB

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

Moderators: cmorley
Time to create page: 0.110 seconds
Powered by Kunena Forum