WhyCan Forum(哇酷开发者社区)

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn

您尚未登录。

#1 2020-09-27 10:37:26

thy442156388
会员
所在地: 新疆乌鲁木齐
注册时间: 2018-10-21
累计积分: 69

linux下使用socket can收发数据帧丢失情况。

我们最近做CAN收发的时发现,nuc977在linux下读取can帧的时候有丢帧现象。
我们另外一头连接的是PLC设备,该设备能够保证在20ms内发送9帧数据,但是我们在nuc977上接收的时候发现出现丢帧。你们遇到过这个问题么?
我用周立功USBCAN检测了,可以确保PLC设备能够在20ms内发送出来9帧数据。

最近编辑记录 thy442156388 (2020-09-27 10:38:03)

离线

#2 2020-09-27 12:41:16

vip888888
会员
注册时间: 2020-07-16
累计积分: 87

Re: linux下使用socket can收发数据帧丢失情况。

你这是linux下的应用接收丢帧还是硬件自己就丢了?
如果是应用的话,20ms 9帧的话,如果硬件没有FIFO存下来的话。是非常有可能丢失的。linux下调度nice 值最大是+19基本时间片是5ms。
你这每帧传输时间都是小于5ms的,在单核CPU的情况下如果其他应用占用了CPU的话,应用丢帧就正常了。毕竟Linux不是一个实时操作系统。

离线

#3 2020-09-27 18:07:00

thy442156388
会员
所在地: 新疆乌鲁木齐
注册时间: 2018-10-21
累计积分: 69

Re: linux下使用socket can收发数据帧丢失情况。

下午我这边仔细检查了一下,发现是串口速率过慢的问题,CAN配置的是1M速率, 每一帧数据都打出来的情况下,串口的数据丢失了。导致我认为是CAN接收丢帧。
后面将程序输出信息重定向到文件当中,分析发现没有丢帧现象。

离线

#4 2020-09-30 11:23:53

thy442156388
会员
所在地: 新疆乌鲁木齐
注册时间: 2018-10-21
累计积分: 69

Re: linux下使用socket can收发数据帧丢失情况。

另外补充一下,后面做了时间测定,在CAN在1M的速度下,收发18帧数据时间不到2ms,在一个调度时间片内应该是可以完成。我遇到的问题是调试手段不到位的原因。

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB