CAN数据包传输模式.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
CAN数据包传输模式 与上位机通讯方式 设备的CAN端口支持流传输模式和CAN数据包两种传输模式: 流传输模式兼容RS232/RS485工作方式。 CAN数据包传输模式支持包括CAN ID在内的所有CAN2.0A/B特性,数据结构及功能类似于传统的CAN接口卡。 设备默认设置为流传输模式,用户可以通过网络或RS232管理口,将CAN端口设置为CAN数据包模式。管理口参数为:9600bps,8数据位,1停止位,无校验,无流控。可以使用超级终端直接打开并登录到设备进行管理。 Socket TCP/IP通讯方式 上位机软件通过Socket规范与设备直接建立TCP/IP连接,在成功建立TCP/IP连接后,上位机与设备就可以进行双向数据通讯。 CAN-bus设备支持TCP/IP Server、Client两种工作模式,默认工作在Server模式,设备监听TCP/IP 6020端口,等待连接。 虚拟串口或硬件串口通讯方式 TNode-N、ICAN设备支持虚拟串口技术,可以将CAN端口对应TCP/IP连接映射为虚拟COM口。而TNode-232、485这些CAN转UART设备可以直接使用设备的硬件串口。 上位机软件只需要按照常规的串口编程方式,使用特定的数据结构就可以与设备进行通讯,无需编写复杂的网络代码。 通讯数据结构 CAN数据包模式所使用的NETWORK_CANFRAME通讯报文结构: typedef struct __attribute__ ((packed)) _NETWORK_CANFRAME { u_char candevindex; // [1个字节长度],CAN端口,0-3对应A-D // 四个CAN端口,接收有效,发送时忽略。 u_long id; // [4个字节长度],CAN包ID u_char len; // [1个字节长度],数据长度,1-8字节 u_char byte[8]; // [8个字节长度],CAN包数据 u_char ext; // [1个字节长度],1-为扩展消息格式, // 0-标准消息格式 u_char rtr; // [1个字节长度],远程传输位 u_long param1; // [4个字节长度],备用参数 } NETWORK_CANFRAME; 上述为GCC定义,单字节对齐,sizeof(NETWORK_CANFRAME)为20个字节。 TNetwork_CANFrame=packed record candevindex:byte; // CAN端口,0-3对应A-D四CAN端口 // 上位机接收有效,发送忽略。 id:LongWord; // CAN包ID len:byte; // 数据长度,1-8字节 candata:array[1..8] of Byte; // CAN包数据 ext:byte; // 1-为扩展消息格式,0-标准消息格式 rtr:byte; // 远程传输位 param1:LongWord; // 备用参数 end; 上述结构为Delphi定义,单字节对齐,sizeof为20个字节。 使用上述结构体或直接构建使用20字节原始报文都可以与设备进行通讯。CAN总线参数(如速率等)可以通过设备本身的参数配置功能,透明的进行设置,无须编写任何代码。 发送CAN报文详解 // 发送缓冲 NETWORK_CANFRAME sendbuf; //CAN2.0A使用sendbuf.id的低11位,CAN2.0B使用低29位。 //将CAN ID设置为1,CAN ID更详细说明请参考后面的文档。 sendbuf.id=0x01; sendbuf.byte[0]=0; // 8个CAN数据,第1个字节 … sendbuf.byte[7]=7; // 8个CAN数据,最后1个字节 sendbuf.ext=1;// ext=1使用CAN 2.0B格式,ext=0使用CAN 2.0A格式。 sendbuf.rtr=0;// rtr=1为远程传输帧。 sendbuf.param1=0;//4字节备用参数,此参数仅用于未来扩展或二次开发。 sendbuf.candevindex=0; // CAN端口索引发送时忽略,所以设置为0。 对应生成的20字节原始发送报文,发送顺序为左-右,蓝字为第一个发送字节: 0008 0001020304050607 01 00报文说明:

文档评论(0)

zefm2pj7 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档