0.0 文本README要求ubuntu18.04 与内核版本kernel version进行匹配——ubuntu18.04可对应4.15.0
(1)旧版本advSocketCAN_V1.0.0.0 (该版本研华已经不推荐使用) 在最新内核下5.3.0-62-generic可以编译成功,但是该版本下设置波特率与端口号均需要基于linux相关命令进行,研华官网没有提供该相关配置函数来写入我们的相关程序中,而且每次重新启动电脑,can0与can1均处于down状态,每次都需要重新配置,才能让其进行正常的收发。这样很麻烦,而相关资料又很少,没有找到对其内置函数的介绍。
针对该问题的解决方案:
**_将命令加入到开机自启动项中,使得每次开机后不用重新up CAN0 与 CAN 1,并自动设置好波特率500k,**参考 博客,具体操作如下:
2)创建/etc/rc.local文件
touch /etc/rc.local
3)赋可执行权限
chmod 755 /etc/rc.local
4 )编辑文件 /etc/rc.local ,将命令添加到里边
5)执行reboot重启系统,然后查看test.log
(2)新版本advcan_source_v2.0.19.0,该版本下波特率和端口号均由研华工控机提供了内置函数,推荐使用该版本,看着功能也比较齐全,但是其缺点在于需要进行降核处理(因为该PCI-1680CAN卡官网是针对的4.9以前的,新版本与旧版本有个参数传递数量不同,会导致新版本下降核失败)——降核方法参考博客.
此处有如下疑问:
——1)降核成功后下载的是4.15.0,启动后查看却是4.15.8
——2)波特率设置一直没有匹配起来(设置时是基于baud.c文件进行设置的),但是感觉问题是一直在这里,所以导致can通信接口数据收发失败,起初能发不能收,但后边再启动就是既不能发也不能收了,原因尚未找到。
相关程序说明如下:
1)#define STDDEV "can0"用于设置端口号是can0还是can1,此处修改即可
2) int newbaud = 500;用于设置波特率的大小
0.1 命令查看ubuntu18.04(发行版本)下的内核版本:
现系统内核
0.2 当前socket can研华官网已经不推荐使用,后期可能会出现运行不稳定的稳定,目前推荐使用的版本是source版本,以下驱动安装与测试均是基于advSocketCAN_V1.0.0.0
其是基于linux与c的系统函数,端口号与波特率均是基于命令进行设置
0.3 advcan_source_v2.0.19.0版本说明
其可以在程序中内设波特率和端口号——can0或can1,该编程方式是由研华提供的。
make失败——推测原因是内核版本不匹配问题,因此需要进行降核处理,ubuntu18.04对应内核版本为4.15.0
官网链接.
PCI-1680U 双端口CAN通用PCI总线通信卡,含隔离保护功能
1.1 解压缩
tar -zxvf advSocketcan_vx.x.x.x.tar.gz
1.2 进入工作目录
cd /workdir/advsocketcan/driver/
make
sudo make install
gedit /etc/modules
**add the following content
lp
can
can_dev
can_raw
advsocketcan
advcan_sja1000**
ip link list
can0与can1都是处于down状态,需要让其up起来才能使用
设置can0与can1的波特率,二者只要保持一致就行
sudo ip link set can0 up type can bitrate 500000
sudo ip link set can1 up type can bitrate 500000
ip link list
此时发现can0与can1都是处于up状态就可以了
上述步骤执行完后,起初没有成功,后来又运行了以下几步才可以,原因没有细查
sudo ip link set can0 down
sudo ip link set can0 up
ip -details -statistics link show can0
研华工控机中安装了两个CAN卡——CAN A与CAN B,测试中将两个CAN卡的CAN_L分别连接,CAN_H分别进行连接
分别将can0与can1的2号引脚与2号引脚,7号引脚与7号引脚相连接,并在can 0的2号引脚与7号引脚间并联一个120欧的电阻==(此处应用中尚未并联电阻,直接测试的,还需了解下并联的意义)==
广成科技的CAN分析仪已经内置了该电阻,因此不需要进行连接
1 直接基于命令测试
2 基于下载的包中的example进行测试——基于版本advSocketCAN_V1.0.0.0
自己基于2号引脚与7号引脚可制作一个母头与研华工控机上的公头进行连接,引出两根线,再分别与广成科技的USBCAN-II Pro V502CAN进行连接,其中白色线为7号引脚——CAN-H,蓝色线为2号引脚——CAN-L
注意:EcanTools与PCI-1680的CAN的波特率均设置为500k,二者必须一致,否则通讯失败
EcanTools软件使用说明:启动后选择V5,设置波特率500k,然后打开设备即可
(1)ubuntu系统下执行以下读命令,EcanTools中写入数据
(2)ubuntu系统下执行以下发送数据命令,EcanTools中读取该数据
链接: 官网安装包.
其中,socket包已经不进行维护与更新,现在多用第2个source包
本文用的包是更早版本的socket包,发现也可以使用就没有进行更新,后期有问题再更改吧
USBCAN-II Pro 内容解读如下:
(1)PC基于USB接口向CAN分析仪供电,此时PWR与SYS灯亮
(2)CAN分析仪6个插拔接线端子介绍
(3)终端电阻接入
(4)指示灯的作用
(5)需要用到的软件——ECANtools
链接: 该软件及驱动下载.
该链接来自百度网盘,提取码: vbhw
链接:
浅谈CAN通讯协议博客参考.
USBCAN-II Pro 用户手册解析.
沈阳广成科技有限公司官网.
sudo apt-get install -y socat
socat -d -d pty,raw,echo=0 pty,raw,echo=0