CAN总线自定义协议使用说明

合集下载

can通讯协议

can通讯协议

竭诚为您提供优质文档/双击可除can通讯协议篇一:can协议通信格式can协议通信格式can协议通信格式中有四种帧格式:数据帧、远程帧、出错帧和超载帧。

其中断帧和远程帧的发送需要在cpu控制下进行,而出错帧和超载帧的发送则是在错误发生或超载时自动进行的。

数据帧结构如图1所示。

一个完整的数据帧格式,除了仲裁场、控制场、数据场外都是can控制器发送数据时自动加上去的,而仲裁场、控制场、数据场则必须由cpu控制给出。

用sja1000时,写出发送缓冲器的txid0、txid1即设定了相应的仲裁场和控制场。

txid0即为仲裁场的高8位,txid1的高3位为仲裁场的低3位,组成共11位的仲裁场。

txid1的第5位为RtR位,即远程请求位。

其在数据帧中为“0”;txd1低4位标示数据场所含字节数的多少,称为dlc。

RtR和dlc共同构成控制场。

发送的数据组成数据场,最多不超过8个字节。

远程帧和数据帧的形式差别在于没有数据场。

除此之外,在远程帧中RtR位必须置“1”,表示请求数据源节点向它的目的节点(即发送远程帧的节点)发送数据。

源节点接收到该帧后,把要发磅数据用帧发给目的节点,完成数据请求。

cRc场与ack场都是在低层次上为提高传输的可靠性而自动进行的。

任何帧与帧之间是帧间空间。

帧起始lf中裁场制场l数据场icRc场lack场1帧结图1数据帧结构3。

3can总线系统的构成从原理和实现的角度,只要有两个can节点和将它们连接成一体的通信媒体就可以构成一个can总线系统,这两个节点之间通过通信媒体交换信息。

而由can总线构成的控制网络的结构一般由控制器节点、传感器节点、执行器节点以及其他的监控节点如人机界组成,can作为控制局域网还可以通过网关和其他网络如以太网互联构成维普资讯170杨春英:can现场总线系统设计技术及实现总第160期大型复杂的控制网络结构,如图2所示。

图2can总线控制网络结构图4can接口模块的设计Rcan接口模块是实现上位机系统和can总线的连接接口,它的作用和以太网卡相同。

CAN协议教程

CAN协议教程

CAN协议教程协议名称:Controller Area Network(CAN)协议教程一、引言CAN协议是一种用于实时通信的串行通信协议,广泛应用于汽车、工业控制、航空航天等领域。

本教程将详细介绍CAN协议的基本原理、通信模型、帧格式、数据传输和错误处理等内容,以帮助读者全面理解和应用CAN协议。

二、CAN协议基本原理1. CAN总线结构:CAN总线由两根线组成,分别是CAN高线(CAN_H)和CAN低线(CAN_L)。

这两根线通过终端电阻连接成环状,形成一个CAN网络。

2. 差分信号传输:CAN总线采用差分信号传输,即CAN_H线和CAN_L线之间的电压差表示数据的传输状态,这种传输方式具有抗干扰能力强的优点。

3. 帧优先级:CAN协议使用基于标识符的帧优先级来控制数据传输,优先级越高的帧将在总线上优先传输。

三、CAN协议通信模型1. 数据帧和远程帧:CAN协议定义了两种基本类型的帧,即数据帧和远程帧。

数据帧用于传输实际的数据信息,而远程帧用于请求其他节点发送数据。

2. 帧格式:CAN协议定义了标准帧和扩展帧两种帧格式。

标准帧使用11位标识符,扩展帧使用29位标识符。

帧格式中还包括控制位、数据长度码和CRC等字段。

3. 帧传输过程:CAN协议采用CSMA/CR(载波监听多路访问/冲突检测)机制来控制帧的传输。

节点在发送帧之前会先监听总线上的信号,如果没有冲突,则发送帧;如果检测到冲突,则暂停发送,并在一段时间后重新发送。

四、CAN协议数据传输1. 数据长度码:CAN协议使用数据长度码(DLC)字段来表示数据帧中实际数据的长度,取值范围为0-8字节。

2. 数据传输速率:CAN协议支持多种数据传输速率,常用的有1Mbps、500kbps、250kbps和125kbps等。

3. 数据传输方式:CAN协议采用异步传输方式,在发送数据帧之前,节点需要等待总线上的前一个帧传输完成。

4. 数据帧过滤:CAN协议支持基于标识符的数据帧过滤,节点可以根据标识符来选择接收哪些数据帧。

CAN总线协议

CAN总线协议

CAN总线协议协议名称:Controller Area Network (CAN) 总线协议一、引言CAN总线协议是一种用于在汽车电子系统中进行通信的标准协议。

它提供了一种可靠、高效、实时的通信方式,被广泛应用于汽车行业。

本协议旨在定义CAN总线协议的基本要求、通信规则和数据格式,以确保各个设备之间的正常通信和数据交换。

二、范围本协议适用于所有使用CAN总线协议进行通信的汽车电子系统,包括但不限于车辆控制单元(ECU)、传感器、执行器等。

三、术语和定义1. CAN总线:Controller Area Network,一种串行通信总线,用于在电子设备之间传输数据。

2. 数据帧:CAN总线中的数据传输单位,包括标识符、数据、控制位等。

3. 标识符:用于标识数据帧的唯一标识,包括标准标识符和扩展标识符。

4. 数据长度码(DLC):用于表示数据帧中数据字段的长度。

5. 帧类型:数据帧分为数据帧和远程帧两种类型,分别用于数据传输和请求数据。

6. 位定时:CAN总线中的时间单位,用于定义数据帧的传输速率。

四、通信规则1. 数据帧格式a. 标准标识符:11位二进制数,用于标识数据帧的发送和接收。

b. 扩展标识符:29位二进制数,用于标识数据帧的发送和接收。

c. 数据长度码(DLC):4位二进制数,表示数据帧中数据字段的长度。

d. 数据字段:0-8字节的数据,用于传输实际数据。

e. 控制位:用于定义数据帧的类型、错误检测和传输控制。

2. 数据帧传输a. 发送:发送方将数据帧按照协议规定的格式发送到总线上,并等待接收方的确认。

b. 接收:接收方根据标识符和控制位判断数据帧的类型,并进行相应的处理。

3. 错误检测a. 帧检测:接收方通过校验数据帧的控制位和CRC校验码来检测传输过程中的错误。

b. 错误报告:接收方在检测到错误时,通过错误报告机制将错误信息发送给发送方。

五、数据格式1. 标准标识符格式| 位数 | 说明 ||------|----------------|| 11 | 标准标识符 |2. 扩展标识符格式| 位数 | 说明 ||------|----------------|| 29 | 扩展标识符 |3. 数据长度码(DLC)格式| 位数 | 说明 ||------|----------------|| 4 | 数据长度码 |4. 数据字段格式| 位数 | 说明 ||------|----------------|| 0-8 | 数据字段 |5. 控制位格式| 位数 | 说明 ||------|----------------|| 1 | 帧类型 || 1 | 错误检测 || 1 | 过载检测 || 1 | 传输控制 |六、安全性1. 数据加密:对于敏感数据,可以使用加密算法对数据进行加密,确保数据的安全性。

CAN转RS485串口设备ECAN-101自定义协议转换模式说明

CAN转RS485串口设备ECAN-101自定义协议转换模式说明

ECAN-101型CAN转RS485串口数据自定义协议转换模式说明CAN转RS485串口设备中自定义协议转换模式,必须是完整的符合自定义协议规定的串行帧格式,要包含用户所配置模式下的串行帧所有内容,除数据域外若其他字节内容若有误此帧将不能成功发送。

串行帧包含的内容:帧头、帧长度、帧信息、帧ID、数据域、帧尾。

注意:此模式下用户配置的帧ID和帧类别无效,将根据串行帧里边的格式进行数据转发。

串行帧转CAN报文串行帧格式必须符合规定的帧格式,由于CAN帧格式是基于报文的,串行帧格式是基于字节传输的。

因此为了让用户方便使用CAN-bus,将串行帧格式向CAN帧格式靠拢,在串行帧中规定了一帧的起始及结束,即AT命令中的“帧头”和“帧尾”,用户可自行配置。

帧长度指的是从帧信息开始到最后一个数据结束的长度,不包括串行帧尾。

帧信息分为扩展帧和标准帧,标准帧固定表示为0x00,扩展帧固定表示为0x80,与透明转换和透明带标识转换不同,自定义协议转换中,无论每帧数据域包含的数据长度为多少,其帧信息内容都固定不变。

当帧类型为标准帧(0x00)时,帧类型后两个字节表示帧ID,其中高位在前;当帧信息为扩展帧(0x80)时,帧类型后4个字节表示帧ID,其中高位在前。

注意:自定义协议转换中,无论每帧数据域包含的数据长度为多少,其帧信息内容都固定不变。

固定为标准帧(0x00)或者扩展帧(0x80)。

帧ID需要符合ID范围,否则ID可能出错。

CAN报文转串行帧CAN总线报文收到一帧即转发一帧,模块会将CAN报文数据域中的数据依次转换,同时会向串行帧添加帧头、帧长度、帧信息等数据,实际为串行帧转CAN报文的逆向形式。

CAN报文转换成串行帧串行帧转CAN报文自定义协议模式转换示例该示例配置的CAN配置参数。

转换模式:自定义协议,帧头AA,帧尾:FF;转换方向:双向。

帧ID:无需配置,帧类别:无需配置,CAN转RS485串口设备上位机配置如下:则转换前后数据如下:因为已经设置了帧头为AA,帧尾为FF,要发送数据域为11223344,帧ID为0x123的标准帧数据,串口调试助手这边就按照协议发送:AA0700012311223344FF,设备CAN端转换成来的数据在下方CANT调试器(ECAN-U01)上显示的就是数据域11223344,帧ID 为0x123的标准帧。

CAN总线协议

CAN总线协议

CAN总线协议协议名称:Controller Area Network (CAN) 总线协议协议简介:Controller Area Network (CAN) 总线协议是一种用于在汽车和工业领域中传输数据的串行通信协议。

CAN总线协议最初由德国Bosch公司于1986年开发,并于1991年成为国际标准ISO 11898。

CAN总线协议具有高可靠性、实时性和容错性,被广泛应用于汽车电子系统、工业自动化、医疗设备等领域。

协议内容:1. 物理层CAN总线协议使用双绞线作为物理传输介质,支持两种传输速率:高速CAN (1 Mbps)和低速CAN(125 Kbps)。

双绞线的长度可以根据需求灵活调整,最大长度为40米。

CAN总线采用差分信号传输,其中一个线路为CAN_H(高电平表示逻辑1),另一个线路为CAN_L(低电平表示逻辑0)。

2. 数据帧格式CAN总线协议使用数据帧进行通信,数据帧由以下几个部分组成:- 帧起始位(SOF):用于标识数据帧的开始。

- 标识符(ID):用于区分不同的数据帧,包括标准帧和扩展帧两种类型。

- 控制位(Control):用于指定数据帧的类型和长度。

- 数据域(Data):用于传输实际的数据。

- CRC(Cyclic Redundancy Check):用于检测数据传输过程中的错误。

- 确认位(ACK):用于确认数据帧是否被成功接收。

- 结束位(EOF):用于标识数据帧的结束。

3. 数据帧类型CAN总线协议定义了四种不同类型的数据帧:- 数据帧(Data Frame):用于传输实际的数据。

- 远程帧(Remote Frame):用于请求其他节点发送数据。

- 错误帧(Error Frame):用于指示数据传输过程中的错误。

- 过载帧(Overload Frame):用于指示接收节点无法及时处理数据。

4. 数据传输CAN总线协议采用了一种基于优先级的访问机制,称为非冲突分配(Non-Destructive Arbitration)。

CAN协议教程

CAN协议教程

CAN协议教程协议名称:Controller Area Network(CAN)协议教程一、引言CAN(Controller Area Network)是一种广泛应用于汽车、工业控制和其他领域的串行通信协议。

本协议教程旨在介绍CAN协议的基本概念、工作原理、数据帧格式以及应用案例,帮助读者全面理解和应用CAN协议。

二、概述CAN协议是一种多主机、多节点的串行通信协议,其主要特点包括高可靠性、实时性和高带宽。

CAN协议广泛应用于汽车行业,用于车辆内部各个控制单元之间的通信,如引擎控制单元、制动系统、仪表盘等。

三、CAN协议的工作原理1. 物理层CAN协议使用两根差分信号线CAN_H和CAN_L进行通信,采用差分信号可以有效抵消噪声干扰,提高通信的可靠性。

常用的物理层标准有ISO 11898-2和ISO 11898-3。

2. 数据链路层CAN协议采用CSMA/CR(Carrier Sense Multiple Access with Collision Resolution)的数据链路层协议。

节点在发送数据前会先监听总线上是否有其他节点正在发送数据,如果没有则开始发送数据,如果有冲突则会进行冲突检测与解决。

3. 帧格式CAN协议中的数据传输通过数据帧来实现。

数据帧包括标准帧和扩展帧两种格式,其中标准帧使用11位标识符,扩展帧使用29位标识符。

数据帧包括帧起始位、帧类型、标识符、数据长度码、数据域、CRC校验码和帧结束位等字段。

4. 错误检测与恢复CAN协议具有强大的错误检测和恢复能力。

每个节点在发送数据时都会对发送的数据进行CRC校验,接收节点在接收数据时也会对接收到的数据进行CRC校验,以确保数据的完整性和准确性。

四、CAN协议的应用案例1. 汽车行业CAN协议在汽车行业中被广泛应用。

例如,引擎控制单元通过CAN协议与其他控制单元进行通信,从而实现对引擎的控制和监测。

制动系统、仪表盘、车载娱乐系统等也都使用CAN协议进行通信。

CAN总线协议

CAN总线协议

CAN总线协议协议名称:Controller Area Network (CAN) 总线协议一、引言CAN总线协议是一种高度可靠的串行通信协议,广泛应用于汽车、工业自动化、医疗设备等领域。

本协议旨在规范CAN总线的通信方式、数据帧格式、错误检测和纠正等关键要素,以确保系统之间的可靠数据传输。

二、范围本协议适用于使用CAN总线作为通信介质的系统和设备,包括但不限于以下方面:1. 汽车电子系统,如发动机控制单元(ECU)、车身控制单元(BCU)等;2. 工业自动化系统,如PLC、机器人等;3. 医疗设备,如医疗监护仪、手术机器人等。

三、术语和定义在本协议中,以下术语和定义适用:1. CAN总线:Controller Area Network,一种串行通信协议;2. 数据帧:CAN总线上的数据传输单元,包含标识符、数据域、控制域等;3. 标识符:用于标识数据帧的唯一标识符,包括标准标识符和扩展标识符;4. 数据域:数据帧中用于传输数据的部分;5. 控制域:数据帧中用于控制传输的部分;6. 错误检测和纠正:CAN总线协议提供的机制,用于检测和纠正传输过程中的错误。

四、通信方式1. 帧格式CAN总线协议定义了两种数据帧格式:标准帧和扩展帧。

标准帧使用11位标识符,扩展帧使用29位标识符。

数据帧包含数据域、控制域和标识符。

2. 数据传输CAN总线采用异步、非时钟同步的通信方式。

数据传输通过数据帧进行,发送节点将数据帧发送到总线上,接收节点通过监听总线上的数据帧来接收数据。

3. 帧发送优先级CAN总线协议规定了帧发送的优先级,优先级高的帧将在总线上优先传输。

优先级由标识符的位值决定,位值越小的帧优先级越高。

五、数据帧格式1. 标准帧格式标准帧使用11位标识符,包含以下字段:- 标识符(11位):用于唯一标识数据帧;- 远程帧标志位(1位):用于标识是否为远程帧;- 数据长度码(DLC)(4位):用于表示数据域的字节数;- 数据域(0-8字节):用于传输数据;- CRC(15位):用于检测数据传输过程中的错误;- CRC分隔符(1位):用于标识CRC的结束;- 帧结束(EOF)(7位):用于标识帧的结束。

can总线通讯协议书

can总线通讯协议书

can总线通讯协议书甲方(以下简称“甲方”):地址:法定代表人:职务:联系电话:乙方(以下简称“乙方”):地址:法定代表人:职务:联系电话:鉴于甲方与乙方就CAN总线通讯技术的应用与合作达成一致,根据《中华人民共和国合同法》及相关法律法规的规定,经双方协商一致,特订立本协议书。

第一条协议目的1.1 本协议旨在明确双方在CAN总线通讯技术领域的合作内容、权利与义务,以及双方应遵守的规范和标准。

第二条合作内容2.1 甲方同意向乙方提供CAN总线通讯技术的相关支持与服务。

2.2 乙方同意按照本协议的规定,使用甲方提供的CAN总线通讯技术,并支付相应的费用。

第三条技术提供与使用3.1 甲方应保证提供的CAN总线通讯技术符合国家相关标准和行业规范。

3.2 乙方应保证在协议约定的范围内使用CAN总线通讯技术,不得用于非法目的。

第四条费用与支付4.1 双方应根据本协议的约定,确定技术使用的费用及支付方式。

4.2 乙方应按照约定的时间和方式向甲方支付相应的费用。

第五条保密条款5.1 双方应对在合作过程中知悉的商业秘密和技术秘密负有保密义务。

5.2 未经对方书面同意,任何一方不得向第三方披露、泄露或允许第三方使用上述保密信息。

第六条知识产权6.1 甲方提供的CAN总线通讯技术及相关知识产权归甲方所有。

6.2 乙方在本协议约定的范围内使用甲方的技术,不得侵犯甲方的知识产权。

第七条违约责任7.1 如一方违反本协议的约定,应承担违约责任,并赔偿对方因此遭受的损失。

7.2 违约方应支付违约金,具体金额由双方协商确定。

第八条协议的变更与解除8.1 本协议的任何变更或补充,应经双方协商一致,并以书面形式确认。

8.2 双方可协商一致解除本协议,但应提前通知对方。

第九条争议解决9.1 本协议在履行过程中发生的任何争议,双方应首先通过友好协商解决。

9.2 如协商不成,双方同意提交甲方所在地人民法院通过诉讼方式解决。

第十条其他10.1 本协议未尽事宜,双方可另行协商解决。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

CAN总线自定义协议使用说明
用C语言实现自己的协议
进入EV5000安装目录下builddriver目录(如图1),这个目录里面的fbserver.c文件即协议程序,用户不需要了解CAN口的细节编程,只需要按照该框架,用C语言来编写自己的协议即可。

不可随意更改该文件中的函数名及头文件引用。

图1
CAN 自定义协议程序的流程图
接收线程流程
主程序流程
图2
需要用户实现的函数
void Init(CAN_PORT canport)
调用方式:仅在组态程序运行的时候执行一次
功能:用户程序的初始化
void main_process (CO_Data* d, UNS32 id)
调用方式:周期性执行,默认周期为10ms ,周期可以在void Init(CAN_PORT canport)中调用Set_Cycle 来设定,最小周期为10ms
功能:用户程序的“main 函数”
void MsgDispatch (CO_Data* d, Message *m)
调用方式:每接收到一帧CAN 数据,就执行一次
功能:常用于对接收到的数据做解析,或者做出响应
供用户调用的API函数
void Set_Cycle(ms)
功能:用于设定main_process的运行周期,
参数:ms的单位为毫秒, 非零
UNS8 Send_Msg(CAN_PORT port, Message *m,UNS8 bExtended)
功能:向CAN总线发送一帧CAN数据
参数:port指向已打开CAN口的句柄,m指向Message结构体的指针,bExtended为1时按扩展帧发送,为0时按标准帧发送
void Write_LW8K (UNS32 n,UNS16 val)
功能:将val 写入LW8000+n的寄存器
参数:n偏移量、最大999,val待写入的值
UNS16 Read_LW8K (UNS32 n)
功能:读取LW8000+n的寄存器的值
参数:n偏移量、最大999
void Set_Timer(TimerCallback_t callback,TIMEVAL value, TIMEVAL period)
功能:使用定时器,经过设定的时间后,调用callback函数
参数:callback回调函数指针,value单次定时时间,period周期定时时间
void CopyToLW(UNS32 offset,const void *src, size_t n);
功能:由src所指内存区域复制n个字节到LW8000+offset所在内存区域
说明:src和LW8000+offset所在内存区域不能重叠
void CopyFromLW(UNS32 offset,const void *src, size_t n);
功能:由LW8000+offset所在内存区域复制n个字节src所指内存区域
说明:src和LW8000+offset所在内存区域不能重叠
相关的结构体定义
typedef struct {
UNS32 w; /* 32 bits */
} SHORT_CAN;
/** Can message structure */
typedef struct {
SHORT_CAN cob_id; /* l'ID du mesg */
UNS8 rtr; /* remote transmission request. 0 if not rtr,
1 for a rtr message */
UNS8 len; /* message length (0 to 8) */
UNS8 data[8]; /* data */
} Message;
typedef void* CAN_PORT;
编译、生成驱动
编写好程序后,只需运行图1中的“build.bat”批处理文件即可生成驱动文件,生成的驱动文件位于EV5000安装目录下\lib\fieldbus driver中,名称为“CAN Custom.so” “CAN Custom.ge”
如何使用驱动
1.在组态工程中,打开HMI属性对话框,如图3
图3
2.点击“现场总线配置”,进入现场总线配置对话框,点击“增加”选择使用何种协
议,如图4
图4
3.选择“CAN Custom Slave”,如图5
图5
4.制作自己的组态画面,目前组态画面与CAN协议之间,通过L8000~LW8999来交
换数据。

相关文档
最新文档