之前被分配任务做上位机,但是因为没有接触过CAN通讯,对于上位机只是处于使用阶段,所以花了很长时间才理清楚中间一些问题。文章主要针对刚接触CAN通讯和上位机的小伙伴,不知道怎么入手的小白可以从这篇文章里面找灵感。
1 设备支持
市面上有很多CAN转USB的设备,这种设备一般叫CAN分析仪,主要功能就是把CAN信号转换成电脑能接收的USB信号。比较有名的是周立功的,我还用过其他的一些CAN,如果要做二次开发,即上位机,建议用周立功、创芯的。因为这两家的CAN分析仪二次开发的案例资料比较多、全面,更适合编程能力没那么强的朋友。
2 软件选择
我的是NI的LabWindows/CVI软件。这个软件入手比较容易,对具备一定C语言编程能力,但是没有那么专业的新手比较友好。利用这个软件做上位机可以分两个部分,一个是上位机界面,一个是底层代码编写,基本上会C语言的话就能入门。如果会用C++的话,Qt做上位机也是个合适的选择。
得解释一下为什么不用使用面更广得LabView,因为这个软件我还在学习过程中,它确实很强大,但是要做项目的话需要一定积累。新手可以接触了解,简单的项目应用不难,网上也有比较详细的教程。
还有其他一些上位机制作软件,可以根据个人实际情况选择。
3 关于CAN分析仪参数设置
关于CAN分析仪的参数一般包含波特率、CAN分析仪型号、CAN通道、帧格式、帧类型、索引号、滤波方式、接受模式等。CAN分析仪型号根据厂家定义,不同型号对应不同的阿拉伯数字,厂家提供的资料里有很详细的内容。索引号是指电脑连接了几台CAN分析仪设备,一般情况下都是一台,该值为0。其他参数会在项目通讯协议里有详细叙述,或者下位机设定。上位机是服务于下位机的,跟下位机保持一致即可。这些参数怎么设置在CAN分析仪厂家提供的文档里有详细叙述。
4 编写上位机的准备工作
以周立功CAN分析仪为例,厂家提供了如图所示的二次开发文件。
根据工程设计,把这些文件加到工程文件里即可。有了这些文件,才能对CAN分析仪进行操作,包括打开分析仪、接收数据等。
注意:不同厂家提供的二次开发文件不一样,不一定兼容。
5 数据怎么处理
上位机接收到的每一帧数据都有ID,根据数据定义内容,按ID处理数据即可。举个例子,我接受到ID为0x12345678的数据11 22 33 44 55 66 77 88,按照定义,这个数据第一位11是电压,单位是10V,无偏置,换算为十进制就是17,实际电压值是170V。第二位和第三位是转速,转速十六进制应该为3322,再根据单位、偏置计算实际转速值。
数据处理后,将数据显示在上位机界面即可。
6 总结
以上是我刚开始做CAN通讯上位机项目时最先面临的问题,现在有了一定的项目经验再回头看,这些事情很简单,可能叙述的不是很清楚,还有部分问题我不知道怎么描述,所以没有写。我能理解那种接触新任务的无力感,要求只说要一个东西,但是怎么入手很茫然。大家有任何问题都可以问,我能回答的一定回答。