7i80 and 7i77

More
11 Nov 2015 12:44 #65120 by perra_e
Replied by perra_e on topic 7i80 and 7i77
Thanks! That is fast enough. At least to start with.

--Per

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

More
22 Dec 2015 08:45 #67232 by jeeybee
Replied by jeeybee on topic 7i80 and 7i77
More trouble with the 7i80:

I got a steady 22000 at the latency test with no spikes at all but still I loose connection with the 7i80.
If I set the servo period to 100000 I loose it instantly and if I set it to 1000000 I loose it at random occasions, sometimes in a few minutes and sometimes in an hour.

The error I get is:
Unexpected realtime delay on task 0

hm2/hm2_7i80.0: Smart serial port 0:Dolt not cleared from previous servo thread. Servo thread rate probably too fast
and som more.

Any idea what could cause this?

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

More
22 Dec 2015 12:09 #67234 by andypugh
Replied by andypugh on topic 7i80 and 7i77

Any idea what could cause this?


Which version of LinuxCNC are you using?

The code says this
if (doit_err_count == 4 ){ // ignore 4 errors at startup
                        HM2_ERR("Smart Serial port %i: DoIt not cleared from previous "
                                "servo thread. Servo thread rate probably too fast. "
                                "This message will not be repeated, but the " 
                                "%s.sserial.%1d.fault-count pin will indicate "
                                "if this is happening frequently.\n",
                                i, hm2->llio->name, i);
                    }
                    *inst->fault_count += inst->fault_inc;
                    *inst->command_reg_write = 0x80000000; // set bit31 for ignored cmd
                    break; // give the register chance to clear
                }

You can make LinuxCNC carry on despite the the error by setting the sserial.inc pin to less than the sserial.dec pin.
man sserial for more details.
But, it would be a good idea to monitor the fault-count pin to get a feel for how serious the problem is.

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

More
22 Dec 2015 12:45 - 22 Dec 2015 13:13 #67236 by PCW
Replied by PCW on topic 7i80 and 7i77
Yes

There is too much jitter in the network access
The real time error means that the total thread time exceeded the thread period even at 1 KHz
The sserial error is a side effect of this jitter (A doit command very late from previous cycle means
the sserial cycle is not finished in the next cycle)

BTW this does not mean that you have lost connection to the 7I80,
it means that the thread took too long and LinuxCNC is complaining about it


Possible causes:
1. Servo thread too fast (100000 = 10 KHZ will not work on even PCI/PCIE hardware)
2. New hardware and old Preempt-RT kernel (the 3.2.60 kernel is too old to work well with Haswell chips or newer)
3. MAC that has RT issues (Atheros and Broadcom are useless for RT, Intel and Realtek work fine)
4. Intel MAC but IRQ coalescing not disabled
5. Too slow CPU, Atom 330s,D525s, D2800s are marginal at anything above 1 KHz servo thread

Fixes:
1. Use a 1 KHz servo thread (4 KHz is possible with a fast CPU)
2. Use the latest Preempt-RT kernel (latest is 4.1.13-rt15 )
3. If the Motherboard has a Atheros or Broadcom LAN chip, use a plug-in Intel
or Realtek LAN card for RT
4. Turn IRQ coalescing off (something like "sudo ethtool -C eth2 rx-usecs 0" )
5. Either get a better CPU or run the servo thread slower

Diagnostics:
"watching" or HALScoping
hm2_7i80.0.read.time
hm2_7i80.0.read.tmax
hm2_7i80.0.write.time
hm2_7i80.0.write.tmax

Will give you some idea of the average and peak Ethernet
transaction times
Note that these times are in CPU clocks, _not_ ns
Last edit: 22 Dec 2015 13:13 by PCW.

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

More
22 Dec 2015 15:21 #67239 by jeeybee
Replied by jeeybee on topic 7i80 and 7i77
Thank you for your thoroughly answers.

I use LinuxCNC 2.7.3 with Preemt RT kernel 4.1.5 with a "mini" industrial computer with 1.8ghz intel celeron 1037U.

1. Ok I did somehow miss all this time that 1000000 is not waay too slow as I have thought so if it run on that or 1500000 or so it would be alright?
2. RT 4.1.5, that solved the issue with latency spikes that you helped me solve erlier in this thread.
3. Its Realtek so it should be good.
4. dont know but will have a look at it
5. dont know hos this compares to the ones you stated.

I tried to install it on a new slightly different computer and it has been running for some time now on 1000000 so maybe that solved the problem now that I know that 1000000 is ok.

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

More
12 Jan 2016 14:53 #68240 by uli12us
Replied by uli12us on topic 7i80 and 7i77
I have made long time nothing wih the project, because shortage of money for all the missing parts.

Now I have bought a small laptop computer for the machine, so I don't need to install several parts in my machine.
But the old configuration with a separate computer board, don't run an the laptop, so I have made a new
installation. I've tried it at least have a douzen times to install, but in every case, I can't get the hm2_eth driver in
root/usr/realtime-3-.4-9-rtai-686-pae/modules/Linuxcnc/
Where can I get a copy of this driver, without the normal installation, that don't run ok.
The LC2.7 that is actually for download, don't installs, it always break down at the eth configuration.

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

More
12 Jan 2016 14:56 #68241 by andypugh
Replied by andypugh on topic 7i80 and 7i77
hm2_eth will not work with an RTAI kernel.

You need an rt-preempt kernel. Follow the instructions here:
linuxcnc.org/docs/2.7/html/getting-start...th_preempt_rt_kernel

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

More
29 Jan 2016 11:45 - 29 Jan 2016 11:47 #69228 by jeeybee
Replied by jeeybee on topic 7i80 and 7i77
Puh, more strange things.
I tried it on my desktop with an MPG to try the encoder inputs and tacho outputs and evertything worked fine, but now when I have started to connect the machine and I have disconnected all but the encoder on the servomotor but still I get a series of errors as soon as I turn the motor, I still have contact enough for the encoder but the analog outputs does not work after that.

It does not help to slow the servo thread, 1000000, 2000000, 4000000 same thing.

Any ideas?
Attachments:
Last edit: 29 Jan 2016 11:47 by jeeybee.

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

More
29 Jan 2016 15:10 #69235 by PCW
Replied by PCW on topic 7i80 and 7i77
Yes, this means (the break error) that you either have a severe noise issue in the cable between the 7I80 and the 7I77
or you are losing 5V power at the 7I77 end.
( Severe noise because a break error means more than 1.4V noise pulse in the cable that lasted longer than 4 uSec )

Hardware things to do

Verify that the 7I77 has 5V (+- 5%)

Make sure the cable between the 7I80 and 7I77 is a IEEE1284 cable or if a flat cable is as short as possible

Also make sure the cable in not routed parallel to any noise sources (power or motor wires)

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

More
15 Mar 2017 09:14 - 15 Mar 2017 09:22 #89650 by jCandlish
Replied by jCandlish on topic 7i80 and 7i77

Diagnostics:
"watching" or HALScoping
hm2_7i80.0.read.time
hm2_7i80.0.read.tmax
hm2_7i80.0.write.time
hm2_7i80.0.write.tmax

Will give you some idea of the average and peak Ethernet
transaction times
Note that these times are in CPU clocks, _not_ ns


How does one enable the 'tmax' pins? They seem to be missing in 2.8.0-pre1.

How does one convert CPU clocks into ns?

I am visiting this issue because of an overnight sserial doit not cleared message.
Owner   Type  Dir         Value  Name
    26  s32   OUT             0  hm2_7i80.0.read-request.time
    26  s32   OUT        298592  hm2_7i80.0.read.time
    26  s32   OUT          9439  hm2_7i80.0.write.time
    26  bit   OUT         FALSE  hm2_7i80.0.packet-error
    26  bit   OUT         FALSE  hm2_7i80.0.packet-error-exceeded
    26  s32   OUT             0  hm2_7i80.0.packet-error-level
    26  u32   OUT    0x00000000  hm2_7i80.0.sserial.port-0.fault-count
    26  u32   OUT    0x00000001  hm2_7i80.0.sserial.port-0.port_state
    26  bit   IN           TRUE  hm2_7i80.0.sserial.port-0.run

Read times are pretty uniformly around 300000 CPU clock units.

How can I find the cause of the "Smart Serial port 0: DoIt not cleared ..." message?

Thanks
.

Edit: adding
eth0      Link encap:Ethernet  HWaddr 80:ee:73:bc:64:65  
          inet addr:10.100.10.101  Bcast:10.100.10.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:55977614 errors:0 dropped:0 overruns:0 frame:0
          TX packets:111931592 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:8951042030 (8.3 GiB)  TX bytes:14097590057 (13.1 GiB)
          Interrupt:16 Memory:df100000-df120000 
Last edit: 15 Mar 2017 09:22 by jCandlish.

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

Moderators: PCWjmelson
Time to create page: 0.109 seconds
Powered by Kunena Forum