我正在做一个项目,将通过CAN总线连接多个子系统(传感器、控制器等)。我正在使用SocketCAN,设置如下:
root@ngtianxun-desktop:~# ip -details -statistic link show can0
5: can0: <NOARP,UP,LOWER_UP,ECHO> mtu 16 qdisc pfifo_fast state UP mode DEFAULT group default qlen 10
link/can promiscuity 0 minmtu 0 maxmtu 0
can state ERROR-ACTIVE (berr-counter tx 0 rx 0) restart-ms 10
bitrate 500000 sample-point 0.600
tq 100 prop-seg 3 phase-seg1 8 phase-seg2 8 sjw 4
RDC_CAN: tseg1 5..16 tseg2 3..8 sjw 1..4 brp 2..131072 brp-inc 2
clock 20000000
re-started bus-errors arbit-lost error-warn error-pass bus-off
0 0 337 0 0 0 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535
RX: bytes packets errors dropped overrun mcast
27841616 3498429 0 0 0 0
TX: bytes packets errors dropped carrier collsns
9504120 2357958 0 0 0 0
root@ngtianxun-desktop:~#
编写Python脚本是为了不断监视子系统,并根据Python端的请求写入子系统
我的问题是-为什么每次python程序运行后,arbit lost都以大约5分钟的间隔递增1?这是否表明存在任何严重问题?这是否意味着数据帧丢失?如果我就让它这样,有什么关系吗?任何能够帮助回答和解释的人都将不胜感激
值得注意的是:项目开始约3天。只观察到arbit丢失,没有重新启动、总线错误、错误警告、错误通过和总线关闭。TX/RX字段中没有错误、丢弃、溢出、mcast、载波和collsns错误
通常,您可以安全地忽略仲裁丢失的错误。这只意味着一条消息在有利于另一条消息的仲裁中失败。谢天谢地,CAN已经变得足够强大,因此“仲裁败诉者”将再次被发送
我建议如下:
相关问题 更多 >
编程相关推荐