文档介绍:CAN数据包传输模式
与上位机通讯方式
设备的CAN端口支持<流传输模式>和<CAN数据包>两种传输模式:
<流传输模式>兼容RS232/RS485工作方式。
<CAN数据包>传输模式支持包括CAN ,数据结构及功能类似于传统的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/口。而TNode-232、485这些CAN转UART设备可以直接使用设备的硬件串口。
上位机软件只需要按照常规的串口编程方式,使用特定的数据结构就可以与设备进行通讯,无需编写复杂的网络代码。
通讯数据结构
<CAN数据包>WORK_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;
定义,单字节对齐,WORK_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总线参数(如速率等)可以通过设备本身的参数配置功能,透明的进行设置,无须编