FOC电机控制理解与实战之通讯方式

      大家好,又见面了,本来这一讲我准备来讲一讲FOC的观测器的,但是我最近不是在搞一个FOC项目嘛,板子都已经画完焊完了,目前在调试各个模块阶段,这两天正好在调试板子的通讯是否正常,所以这一讲我们来聊一聊通讯吧。因为通讯也是搞FOC的重要一环嘛,再者说在电机控制工作中,也是需要用到各种通讯的嘛,比如CAN,LIN等等(由于我这板子目前只是加了CAN和串口,所以我们今天就只来谈一谈通讯吧)

      先一起来看看CAN通讯吧。我们以ISO11898为例(CAN 协议经 ISO 标准化后有 ISO11898 标准和 ISO11519-2 标准两种,ISO11898 是通信速度为 125kbps-1Mbps 的 CAN 高速通信标准,ISO11519 是通信速度为 125kbps 以下的 CAN 低速通信标准),在总线空闲的时候,CANH与CANL电位差为基本上为0,我们把这种叫做为隐性电平,我们用逻辑“1”来表示。而当数据要开始传输的时候,CANH的电压变为3.5V左右,从如下图中可以看出,CANL的电压变为1.5V左右,此时电位差为3.5-1.5=2V左右,为显性电平,我们用逻辑“0”来表示。是不是有点懵,莫急。有个很好记的方法是关注CANL。当CANL为2.5V左右时,为1,当CANL为1.5V左右时,为0。

      然后我们看到在CAN总线的两端接有120欧的电阻,这种我们叫做终端电阻,作用是抗阻匹配,减少回波反射。可以看到我的原理图中就接有一个120欧的终端电阻。

      需要注意的是前面刚刚提到的ISO11898 与 ISO11519-2这两种规格是有专门的驱动IC的,如果我们自己画PCB的时候要注意不要用错了,这里主要列举几种常用的驱动IC。对应关系如下,另外我上面原理图的驱动IC是继PCA82C250和PCA82C251之后的第三代CAN高速收发器

      我们了解了CAN的基本知识后,我们再来看一看为什么CAN会收到如此的欢迎不管是在汽车上还是在其他工业或者医疗上。这就不得不谈一谈CAN的特点了。

      1.多主控制:在总线空闲时,所有的单元都可开始发送消息,最先访问总线的单元可获得发送权,多个单元同时开始发送时,发送高优先级 ID 消息的单元可获得发送权

      2.消息的发送:在 CAN 协议中,所有的消息都以固定的格式发送,如果有多个单元同时发送信息,会根据ID决定优先级。

      3.系统的柔软性:与总线相连的单元没有类似于“地址”的信息。因此在总线上增加单元时,连接在总线上的其它单元的软硬件及应用层都不需要改变。

      4.通信速度:在同一个网络中,所有单元必须设定为统一的通信速度。如果不一样,就会输出错误信号,但是不同网络间可以设置不同的速度

      5.远程数据请求:可通过发送“遥控帧” 请求其他单元发送数据

      6.错误检测功能·错误通知功能·错误恢复功能

      7.故障封闭:CAN 可以判断出错误的类型是总线上暂时的数据错误还是持续的数据错误

      8.连接:CAN 总线是可同时连接多个单元的总线。可连接的单元总数理论上是没有限制的。但实际上可连接的单元数受总线上的时间延迟及电气负载的限制。降低通信速度,可连接的单元数增加;提高通信速度,则可连接的单元数减少

      这个特点在CAN的官方协议上都可以找到,当然这也不是我凭空捏造的奥。这些我们只稍微了解一下即可。接下来才是重点。

      CAN协议有5种帧,分别是数据帧,遥控政,错误帧,过载帧,帧间隔,需要注意的是数据帧和遥控帧有标准格式和扩展格式两种(标准格式有 11 个位的ID,扩展格式有 29 个位的 ID)

      不懂吗,来看看下面这个,先使用标准帧,我设置的ID最大只能为7FF,为什么?因为标准格式只有 11 个位的ID

      然后在来看看扩展帧,这里最大的ID就是1FFFFFFF也就是29个位的ID

         然后我们再来看看这五种帧具体里面是怎么发送的,先来看看数据帧:数据帧由 7 个段构成,分别是帧起始(表示数据帧开始的段),仲裁段(表示该帧优先级的段,ID),控制段(表示数据的字节数及保留位的段),数据段(数据的内容,可发送 0~8 个字节的数据),CRC段(检查帧的传输错误的段),ACK段(表示确认正常接收的段),帧结束(表示数据帧结束的段)。用示波器抓取CANH波形如下。可以用示波器解析或者自己写本子上进行解析。解析出来后可以看到和他的定义一致(注:当连续输出5个相同的位,则需要插入一个反码位 ,如连续输出5个0则需要插入一个1,但这个1在读数时要去掉)

      从下面的波形中读取到的数据是10111011101100011110111001111101011111001111101001111100111101111011011101由于前面降讲到的CAN协议的逻辑电平形式则要把0变位1,把1变为0。但我们还是根据上面那种只管的形式来分析一下如下所示。

      其中DLC为数据长度码,对应关系如下:如上图DLC为1101实际为0010也就是2,所以发送的数据字节数为2.  最大为8个字节

      然后我们再来看看CAN的采样点。我们知道要将信号从A传到B,是需要数模转换的。比如A的发送器将数字信号(1111 0000)先要转化为模拟电压,即CANH与CANL之间形成电压差,也就是我前面提到的,这里用VDiff表示。当电压差为0时,也就是CANL为2.5V时,需要传输的数字为1。反之则为0。B的接收器将接收到VDiff后进行解码。再通过Rx引脚将信号传输到B

      那么B是怎么解码的呢。它是怎么知道这个电压差的呢。当然是采样了。我们把这采样的地方叫做采样点。通信节点之间使用相同的通信速率,因此每一个Bit传输的时间固定。比如通信速率是500K。那么传输一个Bit的时间则是1/500=2us

      至于什么时候采样,我们一般设置为tBit的80%,如上图也就是采样时间=tBit*80%=1.6us的时候进行采样,为什么要这样设置当然有他的道理。因为CAN H或者CAN L引脚的拉高、拉低取决于对应电容充/放电速度,因此,CANH或者CANL的电压改变时,有一个斜率。如果我们在斜率点进行采样,采集到的数据就会不准。

      所以为了精准采样,前人就在规划中将一个Bit划分为4个段:分别为同步段(SS),传播段(PS),相位缓冲段1(PBS1),相位缓冲段2(PBS2)。如下图所示。

      既然说到这里了,那必须说一下CAN的同步机制硬同步和重同步。硬同步就是所以节点都检测到起始显性位("0"),此刻,总线上所有节点可以公平竞争。重同步就是当CAN总线上出现相位差时,通过延长PBS1或者缩短PBS2来弥补采样误差。

      当总线上的Bit流由隐性位("1")变为显性位("0")时,如果下降沿落在了SS之后,采样点之前,接收节点会延长PBS1长度,以此弥补发送节点滞后导致的偏差。PBS1延长的宽度等于SJW,如下所示:

      当总线上的Bit流由隐性位("1")变为显性位("0")时,如果下降沿落在了采样点之后,SS之前,接收节点会缩短PBS2长度,以此弥补发送节点提前导致的偏差。PBS2缩短的宽度等于SJW,如下所示:

     至于为什么总线上的下降沿会提前或者滞后呢?这是因为总线上的节点,虽然处于同一个局域网内,但是,每个节点的晶振精度未必相同,节点晶振之间可能存在偏差,因此,晶振主导的时钟频率就可能存在相位差,即:不同的节点

      好了,今天就先聊到这里吧。相信对CAN通信这方面应该也有了一个大致的了解了。我们下期见。

声明:本内容为作者独立观点,不代表电子星球立场。未经允许不得转载。授权事宜与稿件投诉,请联系:editor@netbroad.com
觉得内容不错的朋友,别忘了一键三连哦!
赞 2
收藏 4
关注 84
成为作者 赚取收益
全部留言
0/200
成为第一个和作者交流的人吧