物联网工程 | CAN(Controller Area Network)控制器局域网络详解

概述

  本节详细介绍了CAN是什么,干什么用,并举以实例来说明其怎么用。

一、定义介绍

  CAN(Controller Area Network),译为控制器局域网络。CAN是一种规定好标准、协议的网络,窄意的CAN总线(bus)就是一堆实际的线。物理器件包括CAN控制器、CAN收发器、CAN模块等等,凡是用于CAN通信的硬件都可以加个CAN作为描述。CAN的构建和使用需要一定物理设备的支持,如果没有必要的CAN硬件设备,CAN通信无法进行。
  CAN最早由德国博世公司发明,最初用于汽车控制,目前主要使用行业也是汽车行业,但随着CAN的发展,一些自动控制、工业控制等行业也在使用CAN。

二、功能作用

  CAN允许微控制器和设备在没有主机的情况下与彼此的应用程序进行通信,通信方式那么多,之所以选择CAN是因为它具有以下优势:
①CAN的传输数据量大、传输距离远
②CAN的数据传输速度快
③CAN具有很强的抗干扰性,不容易出现问题
④CAN可以接很多很多个节点

三、原理解读

  CAN网络的组成包含硬件和软件,硬件软件也分别包含一些东西。就像轮子、方向盘等才能组成车一样,单一的轮子不能称为车;CAN也一样,CAN的某单一部分不能称为CAN网络。
  完整的CAN网络(由于大家叫惯了,习惯将一整套CAN网络称为CAN总线、CAN系统等,但狭义的CAN总线指的就是一堆传输信号线)包括以下几部分:

(一).CAN收发器(硬件)

  CAN收发器是一种硬件,里面由设计好的硬件电路组成,主要通过物理办法互转逻辑信号(0、1)和模拟信号(高低电平)。之所以需要CAN收发器是因为CAN的线路是差分信号传输方式,因此程序出来的逻辑信号需要转换才能传输,接收到的差分信号也需要转换才能被程序所识别,而为什么选用差分信号后面解释。
  CAN收发器的一端有接口直连双绞信号线,接口不固定,端子、航插等都可以;另一方面连接CAN控制器,与CAN控制器的物理连接方式也不固定,电路板直连、硬件接口连接等都可以。

(二).CAN控制器(硬件)

  CAN控制器也是一种硬件,之所以需要CAN控制器是因为CAN收发器只能实时一个Bit一个Bit的转换,而正常数据不可能就一个Bit,数据得缓存起来,因此就有了CAN控制器,CAN控制器内部是拥有物理存储介质的。此外,CAN控制器不单只用于缓存,它还需要负责与上层(此处的上层可以是主机,比如服务主机;也可以是设备,比如电机)进行交互或者直接处理相关数据,因此其内部是需要拥有简单的微处理功能,也就是物理上拥有芯片。根据CAN控制器内部是否包含处理器、处理程序等,将其分为独立CAN控制器和非独立CAN控制器,但这个划分一般没有太严格的界定。有的CAN控制器集成的就跟个小电脑一样,还可以装系统,其实就是把下面的中央处理单元和CAN控制器结合在一起了。

(三).CAN总线(硬件)

  CAN总线就是实际的线。CAN标准规定其传输方式为差分信号传输,一般使用双绞线进行信号传输,双绞线由两根线互相缠绕组成,两根线之间的电压差作为信号。由于CAN是半双工通信,如果既要收也要发,一般情况是两根双绞线,共四根线。双绞线物理性质上就有下面的好处:抗干扰能力强、传输距离远、传输质量高,这也是用它作为信号传输的原因。
  由于是差分信号传输,CAN在接多个设备的时候,它们的线端都必须端接,假设一个主设备CAN,两个子设备CAN1和CAN2,接的时候需要CANH端接CAN1H、CAN2H,CANL端接CAN1L、CAN2L。

(四).CAN中央处理单元(软硬)

  CAN中央处理单元不是必要存在的,就像上面说的,一般没有太严格的规定。如果CAN控制器集成了处理单元或者有的地方根本就不需要中央处理单元,那么该部分就可以不要。但一般情况下,CAN系统一般都会有一个中央处理单元,可以理解为一个主机,就像服务器和客户机一样。中央处理单元与CAN控制器之间可以通过RJ45、USB等转换器进行连接。CAN中央处理单元可以接收控制器的数据、向控制器发送数据。此外,其最主要的功能就是可以加入自己的程序来实现相应的功能,比如某个电机发来了异常信号,经过判断可以由CAN中央处理器向其他设备发送CAN信号来停机或者怎么怎么。

(五).CAN驱动(软件)

  所有的处理单元,只要想加程序,不论是集成在CAN控制器的还是CAN中央处理单元,与CAN控制器进行交互都必须拥有CAN驱动,否则你只能去用硬件实现算法或者逻辑。CAN驱动一般由制作CAN控制器或CAN模块的厂商给出,不同的厂商驱动设计可能也不相同,不同的系统驱动也不同。

(六).CAN程序(软件)

  CAN编程需要遵循CAN的标准协议(现在又有了CANOpen协议),而标准只是个定义,对应实现了该标准的代码前人也给我们写好了,比如C++语言,有canlib、socketcan等。有了库接下来就可以编写你需要的功能了。

(七).CAN协议(标准)

  之所以最后提,是因为CAN协议是贯穿软硬件的总体标准,所有的软硬件设计都是基于CAN协议的。这是CAN标准的官方链接:ISO-CAN,不过需要花钱买,这是预览ISO-CAN-Preview,有兴趣可以读读。

四、使用方法

①连接CAN总线硬件,包括控制器、驱动器、电机、电源、线路等
②连接用于控制CAN的设备,如电脑、遥控器(还得有接收器)等
③如果是遥控器需要配对遥控器和接收器,如果是电脑需要安装驱动
④如果用程序控制,需要安装遵循CAN标准的类库
⑤如果用程序控制,需要编写相应的程序代码
⑥如果用遥控控制,那么直接遥控即可

五、实例演示

  本实例以金陵运康DBMCA2驱动控制器加上电机等硬件为例,展示如何使用CAN。

(一).硬件组成

硬件包括如下所示几个:金陵运康DBMCA2驱动控制器、电机、USB-CAN转换器、电源(没放图)
在这里插入图片描述

金陵运康DBMCA2驱动控制器

在这里插入图片描述

电机

在这里插入图片描述

USB-CAN转换器

(二).硬件连接

1.控制器连接电源

如下图所示,控制器的两个接口分别连接上电源供电。该控制器是双驱的,因此两边是对称的,接另一边的也可以。
在这里插入图片描述

2.电机连接

①电机电源
如下图所示,电机的三相电源线接到控制器的三相电源输出端。三相电共六种接法,有三种是可以运行的,实际操作时可以多尝试一下,接错了也没事,只要别三根或两根线接一块
在这里插入图片描述

②电机控制
电机控制有五根线,两根供电,另外三根是霍尔信号线,按如下图所示分别接到控制器对应的位置上。
在这里插入图片描述

厂商给的接口示意图

实拍如下

电机线实拍

在这里插入图片描述

电机接控制器实拍

3.USB-CAN连接

一端接控制器的CAN口,一端接USB-CAN的CAN口,USB就插电脑就行了,线束接法根据厂商说明书为准。
在这里插入图片描述

USB-CAN转换器

(三).软件控制

1.连接USB-CAN

连接USB-CAN设备需要下载特定的软件,由于我的USB-CAN转换器就是维特的产品,他们提供了维特USB-CAN软件,因此我就直接下载安装即可。下载安装完毕后如下图所示,以管理员运行该软件。

在这里插入图片描述

2.软件使用

①配置参数
软件打开之后如下图所示,此时还不能直接使用,请在“设置模块”中找到对应的波特率等参数,修改成该CAN需要的。
在这里插入图片描述

②发送指令
指令如上图所示,不同的数据表示不同的指令,具体需要参考你设备厂家的手册。编写完指令直接发送,此例中就可以控制点击运转了。

到此,你已经会使用CAN了。

来自:九七的物联网
作者原创文章,文章版权归本文作者所有,未经作者同意请勿以任何方式进行复制、转载等盗版操作,请勿用于商业、违法用途!违者自行承担法律责任!

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Nines~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值