7i80 and 7i77
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
--Per
Please Log in or Create an account to join the conversation.
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?
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.
22 Dec 2015 12:09 #67234
by andypugh
Which version of LinuxCNC are you using?
The code says this
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.
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.
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
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.
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.
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.
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.
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.
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
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.
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?
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?
Last edit: 29 Jan 2016 11:47 by jeeybee.
Please Log in or Create an account to join the conversation.
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)
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.
15 Mar 2017 09:14 - 15 Mar 2017 09:22 #89650
by jCandlish
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.
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
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.
Time to create page: 0.316 seconds