您的位置:首页 > 教育 > 培训 > 通信协议_C#实现CAN通信

通信协议_C#实现CAN通信

2024/10/6 4:02:10 来源:https://blog.csdn.net/weixin_63243357/article/details/140560707  浏览:    关键词:通信协议_C#实现CAN通信

CAN协议

  • CAN(Controller Area Network)即控制器局域网络。
  • 特点
  1. 多主网络:网络上的任何节点都可以主动发送数据,不需要一个固定的主节点。
  2. 双绞线:使用双绞线作为通信介质,支持较远的通信距离。
  3. 差分信号:使用差分信号传输,增强了抗干扰能力。
  4. 非破坏性仲裁:多个节点同时发送数据时,具有更高优先级(较低ID)的帧会获得总线控制权。
  5. 错误检测:具有错误检测和容错机制,能够检测出传输错误并自动重传。
  6. 数据帧:标准数据帧长度为8字节,扩展数据帧可以更长。
  7. 传输速率:通常在125 kbps至1 Mbps之间,高速CAN可达5 Mbps。
  • 工作原理
  1. 帧格式:CAN协议定义了多种帧类型,包括数据帧、远程帧、错误帧和过载帧。
  2. 仲裁:通过帧ID进行仲裁,ID越低优先级越高。
  3. 位速率:所有节点必须以相同的位速率通信。
  • CAN协议中主要帧类型的格式:
1. 数据帧

数据帧用于传输实际的数据。

2. 远程帧

远程帧用于请求发送具有特定ID的数据帧。

数据帧和远程帧格式:
帧起始 | 仲裁场 | 控制场 | 数据场 | CRC场 | ACK场 | 帧结束1位    1-2字节   1字节    0-8字节   3字节   2位    7位
3. 错误帧

当某个节点检测到错误时,它会发送错误帧来中断当前传输。

错误帧格式:
错误标志 | 错误界定符6位         8位
4. 过载帧

过载帧用于在需要更多时间来处理接收到的帧时暂时停止总线活动:

过载帧格式:
过载标志 | 过载界定符6位         8位

基于Kvaser实现CAN通信

配置环境:1.官网下载KvaserCANKing,KvaserCANDriver,KvaserCANDll ->
2.进行安装 -> 3.开启驱动 -> 4.开启CANKing -> 5.新建项目。

在这里插入图片描述
配置VS项目:1.在下载的DLL文件中找到Kvaser.Canlib库 -> 2.将此库导入vs项目 ->
3.将项目构建为X86 -> 4.将canlib32.dll放入项目文件的debug文件夹中 -> 5.重构项目

在这里插入图片描述
发送消息Demo:

    {//初始化Can对象Canlib.canInitializeLibrary();//打开通道,获取句柄int handle = Canlib.canOpenChannel(0, Canlib.canOPEN_ACCEPT_VIRTUAL);//通过句柄设置波特率Canlib.canSetBitrate(handle, Canlib.canBITRATE_500K);//打开连接Canlib.canBusOn(handle);//发送byte[] dates = new byte[] { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 };//句柄,消息标识符,数据,数据位,帧类型Canlib.canWrite(handle, 456, dates, 8, Canlib.canMSG_STD);//关闭连接Canlib.canBusOff(handle);}

接收消息Demo:

  {//初始化Can对象Canlib.canInitializeLibrary();//打开通道,获取句柄int handle = Canlib.canOpenChannel(1, Canlib.canOPEN_ACCEPT_VIRTUAL);//通过句柄设置波特率Canlib.canSetBitrate(handle, Canlib.canBITRATE_500K);//打开连接Canlib.canBusOn(handle);//接受byte[] dates = new byte[8];Canlib.canRead(handle, out int id, dates, out int dlc, out int flag, out long time).ToString();textBox1.Text= BitConverter.ToString(dates)+id.ToString();Canlib.canClose(handle);}

实现功能:
在这里插入图片描述

  • 接触过的通信协议Demo合集

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com