当前位置:文档之家› CAN总线自定义协议使用说明

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

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 数据,就执行一次

功能:常用于对接收到的数据做解析,或者做出响应。与main_process 没有关联。

供用户调用的API_V0.1

除了C语言标准库中的API可以使用外,还提供以下AP I

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周期定时时间

int CopyToLW(UNS32 addr,const void *src, size_t n)

功能:由src所指内存区域复制n个字节到LW +addr所在内存区域

参数:addr 为LW寄存器地址、最大8999;src待写入数据缓冲的指针;n写入的字节数 说明:src和LW8000+addr所在内存区域不能重叠

返回值:失败,返回‐1

成功,返回写入的字节数

int CopyFromLW(UNS32 addr,const void *src, size_t n)

功能:由LW8000+addr所在内存区域复制n个字节src所指内存区域

说明:addr 为LW寄存器地址、最大9999;src存储读取数据缓冲的指针;n读取的字节数 返回值:失败,返回‐1

成功,返回读取的字节数

早期的版本只能使用LW8000~8999这段寄存器,现在已取消该限制,CopyToLW,CopyFromLW 这个两个API的参数意义有所变化,现在CopyToLW,CopyFromLW的第一个参数表示LW的地址,而之前用0~999表示LW8999~LW8999。因此,之前的代码需要做小的改动,如: 老版本

CopyFromLW(100,readbuff, 8)

表示将从LW8100开始的8个字节读取到readbuff中

现在需要改成CopyFromLW(8100,readbuff, 8)才具有相同的效果。

UNS16 Read_LW(UNS32 n,short *perror)

功能:读取LWn的寄存器的值

参数:n 为LW寄存器地址、最大9999,perror返回错误码的指针

返回值:当*perror=‐1时,地址超出范围,返回0

当*perror=0是,成功,返回LWn的值

UNS16 Write_LW(UNS32 n,UNS16 val,short *perror)

功能:将val写入LWn寄存器中

参数:n 为LW寄存器地址、最大8999;val 待写入的数据;perror返回错误码的指针

返回值:当*perror=‐1时,地址超出范围,返回0

当*perror=0是,成功,返回1

int SetLB(unsigned int n,unsigned char val)

功能:将val的值写入LBn

参数:n 为LB寄存器地址、最大8999;val待写入的值(0或1)

返回值:地址超出范围,返回‐1

成功,返回LBn的值

int GetLB(unsigned int n)

功能:读取LBn的值

参数:n 为LB寄存器地址、最大9999

返回值:地址超出范围,返回‐1

成功,返回LBn的值

int SetLWB(unsigned int n, unsigned int offset,unsigned char val)

功能:将val的值写入LW.Bn

参数:n 为LW寄存器地址、最大8999;offset 该位在LWn中的偏移量;val待写入的值(0或1)

返回值:地址超出范围,返回‐1

成功,返回LBn的值

int GetLWB(unsigned int n, unsigned int offset)

功能:读取LW.Bn的值

参数:n 为LW寄存器地址、最大9999;offset 该位在LWn中的偏移量;

返回值:地址超出范围,返回‐1

成功,返回LBn的值

相关的结构体定义

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 Protocol”,如图5

图5

4.制作自己的组态画面。

TCP自定义通讯协议

一.设计 1.详细设计: 2个字节的起始字头,1个字节的命令字,1个字节的数据包编号,4个字节的报文总大小, 4个字节的传输数据总大小, 2个字节的文件名大小, 1个字节的保留(备用)字,若干字节的数据块. 2.详细内容 (1)报头的内容: 1.标志位, 2.命令字, 3.数据包的编号, 4.该报文的总大小, 5.该段传输 数据的大小, 6.文件名的大小, 1)命令字: 1.普通图片, 2.普通文档, 3.普通消息, 4.加密图片, 5.加密文档, 6.加密消息. 2)数据包编号: 1.对大文件或长消息体, 以一定的大小进行分割. 一次编号. 3)文件名大小: 1.数据包的数据块中, 刚开头的部位, 进行写文件名, 用来保证每段新数据写入对应的文件. 4)标志位: 1.消息体中需要对与报头,校验字相同的内容进行转义. (2)消息体: 1.文件名或消息名; 2.文件或消息的具体内容. 定义一个规则,发送的时候按照规则封装,接收的时候再按照这个规则解封装(TLV)。 二.TCP报文分段传输的依据: (1)MTU(最大传输单元) 是链路层中的网络对数据帧的一个限制,以以太网为例,MTU为1500个字节。 一个IP数据报在以太网中传输,如果它的长度大于该MTU值,就要进行分片传输,使得每片数据报的长度小于MTU。分片传输的IP数据报不一定按序到达,但IP首部中的信息能让这些数据报片按序组装。IP数据报的分片与重组是在网络层进完成的。

(2)MSS(最大分段大小) MSS是TCP里的一个概念(首部的选项字段中)。MSS是TCP数据包每次能够传输的最大数据分段,TCP报文段的长度大于MSS时,要进行分段传输。 TCP协议在建立连接的时候通常要协商双方的MSS值,每一方都有用于通告它期望接收的MSS选项(MSS选项只出现在SYN报文段中,即TCP三次握手的前两次)。 MSS的值一般为MTU值减去两个首部大小(需要减去IP数据包包头的大小20Bytes和TCP数据段的包头20Bytes)所以如果用链路层以太网,MSS的值往往为1460。而Internet 上标准的MTU(最小的MTU,链路层网络为x2.5时)为576; 如果不设置,则MSS的默认值就为536个字节。很多时候,MSS的值最好取512的倍数。TCP报文段的分段与重组是在运输层完成的。 TCP分段的原因是MSS,IP分片的原因是MTU,由于一直有MSS<=MTU,很明显,分段后的每一段TCP报文段再加上IP首部后的长度不可能超过MTU,因此也就不需要在网络层进行IP分片了。因此TCP报文段很少会发生IP分片的情况。 对于TCP协议来说,整个包的最大长度是由最大传输大小(MSS)决定,MSS就是TCP 数据包每次能够传输的最大数据分段。 为了达到最佳的传输效能TCP协议在建立连接的时候通常要协商双方的MSS值.这个值TCP协议在实现的时候往往用MTU值代替(需要减去IP数据包包头的大小20Bytes和TCP 数据段的包头20Bytes)所以往往MSS为1460。通讯双方会根据双方提供的MSS值得最小值, 确定为这次连接的最大MSS值。

can总线协议完全解析

CAN总线协议解析 李玉丽 (吉林建筑工程学院电气与电子信息工程学院,吉林长春,130021 ) 摘要:现场总线的发展与应用引起了传统控制系统结构的改变。控制局域网(C AN)总线因其自身的特点被广泛应用于 自动控制领域。本文对C AN总线协议作了详尽解析。 关键词:C AN总线;隐性位;显性位;节点 中图分类号:T U 85 文献标识码:A CAN(Cont roll e r A rea N et work)是分布式实时控 制系统的串行通信局域网,称谓CAN总线。在数据 实时传输中,设计独特、低成本,具有高可靠性,得到 广泛应用。 本文着重解析C AN 技术规范2.0B 版的CAN 的分层结构规范和CAN 报文结构规范。重点在于 充分理解CAN总线协议精髓,有助于CAN总线的 局网设计、软件编程、局网维护。 一、C AN的分层结构 CAN 遵从O SI ( Ope n Syste m I nte rc onnec ti on Re fe re nce Mode l ) 模型,其分层结构由高到低如图1 所示。 图1 C AN的分层结构 对应OSI 模型为两层,实际为三层,即LLC、 MA C、PL S。由此而知,对应于CAN总线系统每个 节点都是三层结构。数据发送节点数据流为LLC→ MA C→P LS ,然后将数据发送到总线上;而对于挂在 总线上的所有节点(包括发送节点)的接收的数据流 为PL S→MA C→LLC。 这种分层结构的规范保证了CAN 总线的多主 方式工作模式,即不分主从,非破坏性的仲裁工作模 式。而LLC 层的报文滤波功能可实现点到点、一点 对多点、全局广播、多点对一点,多点对多点等数据 传递方式。 各分层主要功能如下: LLC 层:接收滤波、超载通知、恢复管理; MAC 层:控制帧结构、执行仲裁、错误检测、出 错标定、故障界定。该层是CAN的核心; PL S 层:位编码/ 解码、位定时。 二、CAN总线的报文规范 CAN报文的传送有4 种不同类型的帧结构,数 据帧、远程帧、出错帧、超载帧。CA B2.0B 有4 种帧 格式。 (一)数据帧

自定义应用层通信协议

1.通信协议的概念及其要素 在OSI开放互联参考模型中,对等实体之间数据单元在发送方逐层封装,在接收方的逐层解析。发送方N层实体从N+1层实体得到的数据包称为服务数据单元(Service Data Unit,SDU)。N层实体只将其视为需要本实体提供服务的数据,将服务数据单元进行封装,使其成为一个对方能够理解的数据单元(Protocol Data Unit,PDU),封装过程实际上是为SDU增加对等实体间约定的控制信息(Protocol Control Information,PCI)的过程。为了保证网络的各个功能的相对独立性,以及便于实现和维护,通常将协议划分为多个子协议,并且让这些协议保持一种层次结构,子协议的集合通常称为协议簇。 网络协议的分层有利于将复杂的问题分解成多个简单的问题,从而分而治之。各层的协议由各层的实体实现,通信双方对等层中完成相同协议功能的实体称为对等实体。对等实体按协议进行通信,所以协议反映的是对等层的对等实体之间的一种横向关系,严格地说,协议是对等实体共同遵守的规则和约定的集合。 通信协议精确地定义了双方通信控制信息和解释信息:发送方能将特定信息(文本、图片、音频、视频)按协议封装成指定格式的数据包,最终以串行化比特流在网络上传输;接收方接收到数据包后,根据协议将比特流解析为本地化数据,从而获取对方发送过来的原始信息。通信协议包括三个要素: (1)语法:规定了信息的结构和格式; (2)语义:表明信息要表达的内容; (3)同步:规则涉及双方的交互关系和事件顺序。 整个计算机网络的实现体现为协议的实现,TCP/IP协议是Internet互联网的核心协议。2.通信协议开发步骤 (1)协议的开发主要包括协议设计、协议形式描述、协议实现和协议一致性测试。协议的开发过程与步骤如图1所示。 图1 协议开发过程与步骤 (2)协议设计过程中的分组发送接收模型如图2所示。

CAN总线协议的物理层和报文类型

CAN总线协议的物理层和报文类型 CAN 总线的物理层是将ECU 连接至总线的驱动电路。ECU 的总数将受限 于总线上义了物理数据在总线上了物理数据在总线上各节点间的传输过程,主 要是连接介质、线路电气特性、数据的编码/解码、位定时和同步的实施标准。BOSCH CAN 基本上没有对物理层进行定义,但基于CAN 的ISO 标准对物理 层进行了定义。设计一个CAN 系统时,物理层具有很大的选择余地,但必须 保证CAN 总线协议中媒体访问层非破坏性位仲裁的要求,即出现总线竞争时, 具有较高优先权的报文获取总线竞争的原则,所以要求物理层必须支持CAN 总线中隐性位和显性位的状态特征。在没有发送显性位时,总线处于隐性状态,空闲时,总线处于隐性状态;当有一个或多个节点发送显性位,显性位覆盖隐 性位,使总线处于显性状态。在此基础上,物理层主要取决于传输速度的要求。 在CAN 中,物理层从结构上可分为三层:分别是物理层信令(Physical Layer Signaling,PLS)、物理介质附件(Physical MediaAttachment,PMA)层和介质从属接口(Media Dependent:Inter-face,MDI)层。其中PLS 连同数据链路层功能由CAN 控制器完成,PMA 层功能由CAN 收发器完成,MDI 层定义了电 缆和连接器的特性。目前也有支持CAN 的微处理器内部集成了CAN 控制器和 收发器电路,如MC68HC908GZl6。PMA 和MDI 两层有很多不同的国际或国 家或行业标准,也可自行定义,比较流行的是ISOll898 定义的高速CAN 发送 /接收器标准。理论上,CAN 总线上的节点数几乎不受限制,可达到2000 个,实际上受电气特性的限制,最多只能接100 多个节点。CAN 的数据链路层 是其核心内容,其中逻辑链路控制(Logical Link control,LLC)完成过滤、过载 通知和管理恢复等功能,媒体访问控制(Medium Aeeess control,MAC)子层完成数据打包/解包、帧编码、媒体访问管理、错误检测、错误信令、应答、串

通信电源规约CSU03B通信协议-通信局电源、空调及环境集中监控管理系统前端智能设备通信协议

CSU03B通信协议更改记录 2006-06-13:V1.0;其中历史告警记录有重大调整,其他与CSU03A兼容。

CSU03B通信协议 本协议以电信总局《通信局(站)电源、空调及环境集中监控管理系统前端智能设备通信协议》(一九九九年三月)为基础制定;与CSU03A通信协议兼容(历史数据和历史告警除外)。 一.物理接口 1.串行通信口采用RS232/RS485,数据传输速率2400bps; 2.信息传输方式为异步方式,起始位1位,数据位8位,停止位1位,无校验。 3.局站监控系统(SU)与设备监控单元(SM)的通信为主从方式。SU呼叫SM并下发命令,SM收到命令后返回响应信息。SU500ms内收不到SM响应或接收响应信息错误,则认为本次通信过程失败。 二.信息类型及协议的基本格式 1.信息分两种类型: (1) 由SU发出到SM的命令信息(简称命令信息); (2) 由SM返回到SU的响应信息(简称响应信息)。 基本格式的注解见表2.2、表2.3。 表2.2 协议的基本格式 说明: COMMAND INFO由以下控制命令码(其中一部分)组成: COMMAND GROUP(1字节):表示同一类型设备的不同组号; COMMAND ID(1字节):表示同一类型设备相同组内的不同监控点; COMMAND TYPE(1字节):表示不同的遥控命令或历史数据传输中的不同控制命令; COMMAND TIME(1字节):表示时间字段。 DA TA INFO由以下应答码(其中一部分)组成: DATAI:含有整型数的应答信息;

RUNSTATE:设备的运行状态; WARNSTA TE:设备的告警状态; DATAFLAG:标示字节;本协议中该字节无效,固定为00H; DATATIME:时间字段。 表2.3返回码RTN 3.数据格式 3.1 基本数据格式 在表2.1基本格式中各项除SOI和EOI是以十六进制解释(SOI=7EH,EOI=0DH),十六进制传输外,其它各项都是十六进制解释,十六进制—ASCII码的方式传输,每个字节用两个ASCII码表示,即高四位一个ASCII码表示,低四位用一个ASCII码表示。 例:CID2=4BH,传送时顺序发送34H和42H两个字节。 3.2 LENGTH数据格式 LENGTH共两个字节,由LENID和LCHKSUM组成,LENID表示INFO项的ASCII 码字节数,当LENID=0时,INFO为空,即无该项。LENGTH传输中先传高字节,再传低字节,分四个ASCII码传送。 校检码的计算:D11D10D9D8+D7DD6D5D4+D3D2D1D0,求和后模16余数取反加1。例:I NFO项的ASCII码字节数为18,即LENID=0000 0001 0010B。 D11D10D9D8+D7D6D5D4+D3D2D1D0=0000B+0001B+0010B=0011B,模16余数为0011B,0011B取反加1就是1101B,即LCHKSUM为1101B。 可得: LENGTH为1101 0000 0001 0010B,即D012H。 3.3 CHKSUM数据格式 CHKSUM的计算是除SOI、EOI和CHKSUM外,其他字符按ASCII码值累加求和,所得结果模65536余数取反加1。 例:收到或发送的字符序列是:“~1203400456ABCDFEFC72C C R R”(“~”为SOI,“C C R R”为EOI),则最后五个字符“FC72C C R R”中的FC72是CHKSUM,计算方法是: ‘1’+‘2’+‘0’+…+‘A’+‘B’+…+‘F’+‘E’ = 31H + 32H + 30H + …+ 41H + 42H + …+ 46H + 45H = 038EH 其中‘1’表示1的ASCII码值,‘E’表示E的ASCII码值。038EH模65536余数是

CAN总线及CAN通讯协议

CAN总线及CAN通讯协议 CAN,全称为Controller Area Network,即控制器局域网,是国际上应用最广泛的现场总线之一。最初,CAN 被设计作为汽车环境中的微控制器通讯,在车载各电子控制装置ECU 之间交换信息,形成汽车电子控制网络。比如:发 动机管理系统、变速箱控制器、仪表装备、电子主干系统中,均嵌入CAN 控 制装置。一个由CAN 总线构成的单一网络中,理论上可以挂接无数个节点。实际应用中,节点数目受网络硬件的电气特性所限制。例如,当使用Philips P82C250 作为CAN 收发器时,同一网络中允许挂接110 个节点。CAN 可提供高达1Mbit/s 的数据传输速率,这使实时控制变得非常容易。另外,硬件的错 误检定特性也增强了CAN 的抗电磁干扰能力。CAN 通讯协议主要描述设备之间的信息传递方式。CAN 层的定义与开放系统互连模型(OSI)一致。每一 层与另一设备上相同的那一层通讯。实际的通讯发生在每一设备上相邻的两层,而设备只通过模型物理层的物理介质互连。CAN 的规范定义了模型的最下面两层:数据链路层和物理层。下表中展示了OSI 开放式互连模型的各层。应用层 协议可以由CAN 用户定义成适合特别工业领域的任何方案。已在工业控制和 制造业领域得到广泛应用的标准是DeviceNet,这是为PLC 和智能传感器设计的。在汽车工业,许多制造商都应用他们自己的标准。CAN 通讯协议主要描述设备之间的信息传递方式。CAN 层的定义与开放系统互连模型(OSI)一致。每一层与另一设备上相同的那一层通讯。实际的通讯发生在每一设备上相邻的 两层,而设备只通过模型物理层的物理介质互连。CAN 的规范定义了模型的最下面两层:数据链路层和物理层。下表中展示了OSI 开放式互连模型的各层。 应用层协议可以由CAN 用户定义成适合特别工业领域的任何方案。已在工业 控制和制造业领域得到广泛应用的标准是DeviceNet,这是为PLC 和智能传感

汽车can总线协议

汽车can总线协议 篇一:史上最全can总线协议规则 一、CAN总线简介 CAN是控制器局域网络(Controller Area Network,CAN)的简称,是由研发和生产汽车电子产品著称的德国BOSCH 公司开发了的,并最终成为国际标准(ISO11898)。是国际上应用最广泛的现场总线之一。在建立之初,CAN总线就定位于汽车内部的现场总线,具有传输速度快、可靠性高、灵活性强等优点。上世纪90年代CAN总线开始在汽车电子行业内逐步推广,目前已成为汽车电子行业首选的通信协议,并且在医疗设备、工业生产、楼宇设施、交通运输等领域中取得了广泛的应用。 二、CAN总线技术及其规范 2.1性能特点 (1) 数据通信没有主从之分,任意一个节点可以向任何其他(一个或多个)节点发起数据通信,通信方式灵活,且无需站地址等节点信息; (2) CAN网络上的节点信息分成不停的优先级,可满足不同的实时要求,高优先级节点信息最快可在134μs内得到传输;

(3) 采用非破坏性总线仲裁技术,当多个节点同时向总线发送信息时,优先级较低的节点会主动退出发送,而高优先级的节点可不受影响的继续发送数据,从而大大节省了总线冲突仲裁时间。尤其是在网络负载很重的情况下也不会出现网络瘫痪的情况; (3) 通信距离最远可达10KM(速率低于5Kbps)速率可达到1Mbps(通信距离小于40M); (4) 通信的硬件接口简单,通信线少,传输介质可以是双绞线,同轴电缆或光缆。CAN总线适用于大数据量短距离通信或者长距离小数据量,实时性要求比较高,多主多从或者各个节点平等的现场中使用。 (5) 采用短帧结构,传输时间短,受干扰概率低,每帧信息都有CRC校验及其他检验措施,数据出错率极低; (6) 节点在严重错误的情况下具有自动关闭输出的功能,以使总线上其他节点的操作不受影响。 (7) CAN总线使用两根信号线上的差分电压传递信号,显性电平可以覆盖隐形电平。 2.2技术规范 2.2.1CAN的分层结构 图1 CAN的分层结构 逻辑链路控制子层(LLC)的功能:为数据传送和远程数据请求提供服务,确认由LLC子层接收的报文实际上已被

常用几种通讯协议

常用几种通讯协议 Modbus Modbus技术已成为一种工业标准。它是由Modicon公司制定并开发的。其通讯主要采用RS232,RS485等其他通讯媒介。它为用户提供了一种开放、灵活和标准的通讯技术,降低了开发和维护成本。 Modbus通讯协议由主设备先建立消息格式,格式包括设备地址、功能代码、数据地址和出错校验。从设备必需用Modbus协议建立答复消息,其格式包含确认的功能代码,返回数据和出错校验。如果接收到的数据出错,或者从设备不能执行所要求的命令,从设备将返回出错信息。 Modbus通讯协议拥有自己的消息结构。不管采用何种网络进行通讯,该消息结构均可以被系统采用和识别。利用此通信协议,既可以询问网络上的其他设备,也能答复其他设备的询问,又可以检测并报告出错信息。 在Modbus网络上通讯期间,通讯协议能识别出设备地址,消息,命令,以及包含在消息中的数据和其他信息,如果协议要求从设备予以答复,那么从设备将组建一个消息,并利用Modbus发送出去。 BACnet BACnet是楼宇自动控制系统的数据通讯协议,它由一系列与软件及硬件相关的通讯协议组成,规定了计算机控制器之间所有对话方式。协议包括:(1)所选通讯介质使用的电子信号特性,如何识别计算机网址,判断计算机何时使用网络及如何使用。(2)误码检验,数据压缩和编码以及各计算机专门的信息格式。显然,由于有多种方法可以解决上述问题,但两种不同的通讯模式选择同一种协议的可能性极少,因此,就需要一种标准。即由ISO(国际标准化协会〉于80年代着手解决,制定了《开放式系统互联(OSI〉基本参考模式(Open System Interconnection/Basic Reference Model简称OSI/RM)IS0- 7498》。 OSI/RM是ISO/OSI标准中最重要的一个,它为其它0SI标准的相容性提供了共同的参考,为研究、设计、实现和改造信息处理系统提供了功能上和概念上的框架。它是一个具有总体性的指导性标准,也是理解其它0SI标准的基础和前提。 0SI/RM按分层原则分为七层,即物理层、数据链路层、网络层、运输层、会话层、表示层、应用层。 BACnet既然是一种开放性的计算机网络,就必须参考OSIAM。但BACnet没有从网络的最低层重新定义自己的层次,而是选用已成熟的局域网技术,简化0SI/RM,形成包容许多局 域网的简单而实用的四级体系结构。 四级结构包括物理层、数据链路层、网络层和应用层。

CAN总线协议

CAN总线协议 依据国际标准化组织/开放系统互连(International Standardi-zation Organization/Open SystemInterconnection,ISO/OSI)参考模型,CAN的ISO/OSI参考模型的层结构如图7-6所示。下面对CAN协议的媒体访问控制子层的一些概念和特征做如下说明: (1)报文(Message) 总线上的报文以不同报文格式发送,但长度受到限制。当总线空闲时,任何一个网络上的节点都可以发送报文。 (2)信息路由(Information Routing) 在CAN中,节点不使用任何关于系统配置的报文,比如站地址,由接收节点根据报文本身特征判断是否接收这帧信息。因此系统扩展时,不用对应用层以及任何节点的软件和硬件作改变,可以直接在CAN中增加节点。 (3)标识符(Identifier) 要传送的报文有特征标识符(是数据帧和远程帧的一个域),它给出的不是目标节点地址,而是这个报文本身的特征。信息以广播方式在网络上发送,所有节点都可以接收到。节点通过标识符判定是否接收这帧信息。 (4)数据一致性应确保报文在CAN里同时被所有节点接收或同时不接收,这是配合错误处理和再同步功能实现的。 (5)位传输速率不同的CAN系统速度不同,但在一个给定的系统里,位传输速率是唯一的,并且是固定的。 (6)优先权由发送数据的报文中的标识符决定报文占用总线的优先权。标识符越小,优先权越高。 (7)远程数据请求(Remote Data Request) 通过发送远程帧,需要数据的节点请求另一节点发送相应的数据。回应节点传送的数据帧与请求数据的远程帧由相同的标识符命名。 (8)仲裁(Arbitration) 只要总线空闲,任何节点都可以向总线发送报文。如果有两个或两个以上的节点同时发送报文,就会引起总线访问碰撞。通过使用标识符的逐位仲裁可以解决这个碰撞。仲裁的机制确保了报文和时间均不损失。当具有相同标识符的数据帧和远程帧同时发送时,数据帧优先于远程帧。在仲裁期间,每一个发送器都对发送位的电平与被监控的总线电平进行比较。如果电平相同,则这个单元可以继续发送,如果发送的是“隐性”电平而监视到的是“显性”电平,那么这个单元就失去了仲裁,必须退出发送状态。 (9)总线状态总线有“显性”和“隐性”两个状态,“显性”对应逻辑“0”,“隐性”对应逻辑“1”。“显性”状态和“隐性”状态与为“显性”状态,所以两个节点同时分别发送“0”和“1”时,总线上呈现“0”。CAN总线采用二进制不归零(NRZ)编码方式,所以总线上不是“0”,就是“1”。但是CAN协议并没有具体定义这两种状态的具体实现方式,如图7-7所示。 10)故障界定(Confinement) CAN节点能区分瞬时扰动引起的故障和永久性故障。故障节点会被关闭。 (11)应答接收节点对正确接收的报文给出应答,对不一致报文进行标记。

CAN总线的特点及J1939协议通信原理、内容和应用

CAN总线的特点及J1939协议通信原理、内 容和应用 众多国际知名汽车公司早在20世纪80年代就积极致力于汽车网络技术的研究及应用。迄今已有多种网络标准,如专门用于货车和客车上的SAE的J1939、德国大众的ABUS、博世的CAN、美国商用机器的AutoCAN、ISO的VAN、马自达的PALMNET等。 在我国的轿车中已基本具有电子控制和网络功能,排放和其他指标达到了一定的要求。但货车和客车在这方面却远未能满足排放法规的要求。计划到2006年,北京地区的货车和客车的排放要满足欧Ⅲ标准。因此,为了满足日益严格的排放法规,载货车和客车中也必须引入计算机及控制技术。采用控制器局域网和国际公认标准协议J1939来搭建网络,并完成数据传输,以实现汽车内部电子单元的网络化是一种迫切的需要也是必然的发展趋势。 1 CAN总线特点及其发展 控制器局域网络(CAN)是德国Robert bosch公司在20世纪80年代初为汽车业开发的一种串行数据通信总线。CAN是一种很高保密性,有效支持分布式控制或实时控制的串行通信网络。CAN的应用范围遍及从高速网络到低成本底多线路网络。在自动化电子领域、发动机控制部件、传感器、抗滑系统等应用中,CAN的位速率可高达1Mbps。同时,它可以廉价地用于交通运载工具电气系统中,如灯光聚束、电气窗口等,可以替代所需要的硬件连接。它采用线性总线结构,每个子系统对总线有相同的权利,即为多主工作方式。CAN网络上任意一个节点可在任何时候向网络上的其他节点发送信息而不分主从。网络上的节点可分为不通优先级,满足不同的实时要求。采用非破坏性总线裁决技术,当两个节点(即子系统)同时向网络上传递信息时,优先级低的停止数据发送,而优先级高的节点可不受影响地继续传送数据。具有点对点、一点对多点及全局广播接收传送数据的功能。 随着CAN在各种领域的应用和推广,对其通信格式的标准化提出了要求。1991年9月Philips Semiconductors制定并发布了CAN技术规范(Versio 2.0)。该技术包括A和B两部分。2.OA给出了CAN报文标准格式,而2.OB给出了标准的和扩展的两种格式。1993年11月ISO颁布了道路交通运输工具-数据信息交换-高速通信局域网(CAN)国际标准ISO11898,为控制局域网的标准化和规范化铺平了道路。美国的汽车工程学会SAE于2000年提出的J1939,成为货车和客车中控制器局域网的通用标准。 2.J1939协议通信原理及内容 (1)J1939与CAN J1939是一种支持闭环控制的在多个ECU之间高速通信的网络协议冈。主要运用于载货车和客车上。它是以CAN2.0为网络核心。表1介绍了CAN2.0的标准和扩展格式,及J1939协议所定义的格式。表2则给出了J1939年的一个协议报文单元的具体格式。可以看出,J1939标识符包括:PRIORTY(优先权位);R(保留位);DP(数据页位);PDU FORMAAT(协议数据单元);PDU SPECIFIC(扩展单元)和SOURCE ADDRESS(源地址)。而报文单元还包括64位的数据场。

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

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 */

can总线的通信协议

竭诚为您提供优质文档/双击可除 can总线的通信协议 篇一:停车场系统can总线通信协议 停车场系统can总线通信协议 本系统主控制器采用Rs485通信方式以同管理机(pc)通信。主控制器同分控制器之间采用can通信方式。协议按can2.0a规范设计。 标识符用法定义如下: 1定义通行的主机和从机,主控制器为主机,分控制器为从机。2通信速率为100kbps,使用can2.0a标准帧格式。 3使用id10为命令/应答标志,id10=1时该帧为命令帧,id10=0时该帧为应答帧。4id9出/入口标志,0表示入口/1表示出口;id8~id3为系统标识地址。5id2广播标识。0为广播帧,1为非广播帧。 主/从机在发送数据时必须判断总线上的数据是否为多帧数据,若是则必须等多帧数据结束才可以上传数据,而不至于使多帧数据被打断。 (1)有效数据包含命令和数据。 (2)主机/从机接收数据后,分析data1若为本机机号或

广播地址,则必须处理后续数 据,否则不予处理。主机/从机接收的有效数据应该从 数据场的第二个字节开始,共7个字节。 二)应用层协议 该层协议定义了主机和从机之间的命令和数据格式(定 义在报文的数据区,由于data1参与了滤波,所以从data2 开始),包括两部分:从机主机协议和主机从机协议。主从 机之间相互传递的有效数据的最后一个字节为有效数据中 除去命令字节和数据长度字节之外所有数据的异或和(bcc)。 1)从机主机协议:说明: 1.如果数据长度超过5个字节,则必须多帧发送。2.分机主动上传卡号时,data2=5ah。,数据长度=05h(其中卡号data4—data6为 卡号,data8为bcc。 3.数据长度为data4至data8有效数据字节数。 4.从机应答命令:在分机接收到主机的命令后,返回 一个应答帧。通知主机是否接正 确收到命令和返回执行命令的结果。此时,如果接收命令和执行命令正确,data2为主机发送的命令字节数据,如 果接收的命令不正确或执行失败,则data2为将主机发送的命令字节数据的最高位置1后的字节数据。5.从机请求命令:(1).command:5bh功能:上传开闸设置length:3

三菱FX系列通信协议

FX系列PLC专用协议通信指令一览 以下将详细列出PLC专用协议通信的指令: 指令注释 BR 以1点为单位,读出位元件的状态 WR 以16点为单位,读出位元件的状态,或以1字为单位,读出字元件的值 BW 以1点为单位,写入位元件的状态 WW 以16点为单位,写入位元件的状态,或以1字为单位,写入值到字元件 BT 以1点为单位,SET/RESET 位元件 WT 以16点为单位,SET/RESET 位元件,或写入值到字元件 RR 控制PLC运行RUN RS 控制PLC停止STOP PC 读出PLC设备类型 TT 连接测试 注:位元件包括X,Y,M,S以及T,C的线圈等; 字元件包括D,T,C,KnX,KnY,KnM等。 三菱FX系列PLC编程口通信协议总览 该协议实际上适用于PLC编程端口以及FX-232AW 模块的通信。通讯格式: 命令命令码目标设备 DEVICE READ CMD "0" X,Y,M,S,T,C,D DEVICE WRITE CMD "1" X,Y,M,S,T,C,D FORCE ON CMD " 7" X,Y,M,S,T,C FORCE OFF CMD "8" X,Y,M,S,T,C 传输格式: RS232C 波特率: 9600bps 奇偶: even 校验: 累加方式(和校验) 字符: ASCII 16进制代码: ENQ 05H 请求 ACK 06H PLC正确响应 NAK 15H PLC错误响应 STX 02H 报文开始 ETX 03H 报文结束 帧格式: STX CMD DATA ...... DATA ETX SUM(upper) SUM(lower) 例子: STX ,CMD ,ADDRESS, BYTES, ETX, SUM 02H, 30H, 31H,30H,46H,36H, 30H,34H, 03H, 37H,34H SUM=CMD+......+ETX; 30h+31h+30h+46h+36h+30h+34h+03h=74h;

设备通讯协议

设备通信协议

目录 1.适用范围 (3) 2.协议框架 (3) 3.协议内容 (3) 3.1设备内部组网协议(或者MCU透传模式协议) (3) 3.1.1 通讯命令格式 (3) 3.1.2 配对机制 (3) 3.1.3 连接机制 (4) 3.1.4 心跳机制 (5) 3.2 设备与云端通讯协议 (5) 3.2.1 通讯命令格式 (5) 3.2.2 连接流程 (5) 3.3 数据包格式定义 (6) 3.3.1 设备间通讯数据格式 (6) 3.3.2 设备与云、APP通讯数据格式 (11) 4. ..............................................................................................................................................公共命令定义 11 5. ........................................................................................................................................................... 编码表 18 5.1节点类型编码表 (18) 5.2命令回应编码表 (18)

1.适用范围 本协议定义WiFi模块与MCU控制单元,WiFi模块与云APP间,以及主从模块之间的通讯协议框架。 2.协议框架 协议基于二进制协议框架,完成命令发送接收、命令上报、内部组网等功能。 3.协议内容 3.1设备内部组网协议(或者MCU透传模式协议) 备内部组网协议包括设备配对、连接、心跳机制等,目的是将一个子设备加入到设备组中,并保持连接。3.1.1 通讯命令格式 采用二进制的通讯协议格式,包格式如下表: 详细的包格式在后续章节介绍 3.1.2 配对机制 配对机制仅适用于设备内组网模式,MCU透传模式不需要组网协议。 进入配对模式由主从设备分别触发,只有在进入配对模式后,才处理相关的配对命令。 从设备进入配对模式后定时发送配对请求,直到收到请求回应。 主设备收到请求后分配一个设备ID给从设备,标识此ID被占用,并等待采集器的上线通知,一定时间内收到通知之后确认存入设备列表,如果没有上线通知,则认为设备没有配对成功,从子设备中删除。 从设备收到配对回应后存储设备ID,并且发送上线通知,收到上线通知后完成配对。 配对的过程如下图所示:

基于串口自定义协议的数据通信方式设计

基于串口自定义协议的数据通信方式设计 ?引言 计算机与计算机之间的数据交换不仅可以采用常用的通信协议进行联网方式交换,还可以采用串行通信方式或并行通信方式通过非常规的通信协议方式交换。不同安全等级的计算机之间需要进行数据传输(出于安全考虑,多数是从安全等级高的计算机向安全等级低的计算机单向传输数据) ,而不同安全等级的计算机是不允许进行直接网络连接的,由此设计了自定义通信协议下通过串行通信端口RS2232 实现处于不同安全等级的计算机之间进行数据传输。 1.RS232 串行端口 一组比特数据在多条线上同时被传送的传输方式被称为并行传输。在传输过程中各数据位可并行传送,传送速度快、效率高,多用于要求实时、快速的场合。但是有多少数据位就需要多少根数据线,传送成本高。而串行端口通信是数据通过一根传输线逐位传送,数据传送按位顺序进行,至少只需要一根传输线即可完成,节省传输线。由于串行通信方式使用线路少、成本低,特别是在远程传输时,避免了多条线路特性的不一致而被广泛采用. 1.1 RS 2232 端口简介 RS232 串行通信端口属于PC 机(个人计算机)及电信应用领域中最为成功的串行数据标准。它被定义为一种在低速率串行通信中增加通信距离的单端标准,是目前PC 机与通信工业中应用最广泛的一种串行通信接口。现在的PC机一般有1 到2 个串行通信端口COM1 及COM2 ,这些串行通信端口均为9 个引脚,即异步通信的9 个信号。在通信速率低于20 kbit / s时,与其直接连接的电缆最大物理距离为15 m(即直接传输距离) 。RS232 标准规定,若不使用Modem ,在码元畸变小于4 %的情况下,数据终端设备(DTE)和数据通信设备(DCE)之间最大传输距离为15 m。一般应用中当通信距离小于12 m 时,可以用电缆线直接连接标准RS232 端口。若距离较远, 须附加调制解调器(Modem) 。本方案中传输数据的2 台计算机距离很近,采用最基本的接法,将RS232 端口的关键引脚直接用电缆线相连。 RS2232 端口引脚说明见表1。

史上最全can总线协议规则

一、CAN总线简介 CAN是控制器局域网络(Controller Area Network, CAN)的简称,是由研发和生产汽车电子产品著称的德国BOSCH公司开发了的,并最终成为国际标准(ISO11898)。是国际上应用最广泛的现场总线之一。在建立之初,CAN总线就定位于汽车内部的现场总线,具有传输速度快、可靠性高、灵活性强等优点。上世纪90年代CAN总线开始在汽车电子行业内逐步推广,目前已成为汽车电子行业首选的通信协议,并且在医疗设备、工业生产、楼宇设施、交通运输等领域中取得了广泛的应用。 二、CAN总线技术及其规范 2.1性能特点 (1)数据通信没有主从之分,任意一个节点可以向任何其他(一个或多个)节点发起数据通信,通信方式灵活,且无需站地址等节点信息; (2)CAN网络上的节点信息分成不停的优先级,可满足不同的实时要求,高优先级节点信息最快可在134μs内得到传输; (3)采用非破坏性总线仲裁技术,当多个节点同时向总线发送信息时,优先级较低的节点会主动退出发送,而高优先级的节点可不受影响的继续发送数据,从而大大节省了总线冲突仲裁时间。尤其是在网络负载很重的情况下也不会出现网络瘫痪的情况; (3)通信距离最远可达10KM(速率低于5Kbps)速率可达到1Mbps(通信距离小于40M); (4)通信的硬件接口简单,通信线少,传输介质可以是双绞线,同轴电缆或光缆。CAN总线适用于大数据量短距离通信或者长距离小数据量,实时性要求比较高,多主多从或者各个节点平等的现场中使用。 (5)采用短帧结构,传输时间短,受干扰概率低,每帧信息都有CRC校验及其他检验措施,数据出错率极低; (6)节点在严重错误的情况下具有自动关闭输出的功能,以使总线上其他节点的操作不受影响。 (7)CAN总线使用两根信号线上的差分电压传递信号,显性电平可以覆盖隐形电平。 2.2技术规范 2.2.1CAN的分层结构

CAN232MB CAN总线协议转换器用户手册

GY850X CAN232MB/CAN485MB/CAN422MB CAN总线协议转换器 型号产品名称描述 CAN总线协议转换器 CAN总线转RS232 GY8502 CAN232MB CAN总线协议转换器 CAN总线转RS485 GY8503 CAN485MB CAN总线协议转换器 CAN总线转RS422 GY8504 CAN422MB 说明书时间硬件版本软件版本 V1.0 2006年11月V1.0 V1.0 Beta发布 V2.2 2008年4月V2.1 V2.1 CAN232MB,CAN485MB手册整理V2.3 2008年5月 V2.2 V2.2 说明书整理,增加CAN422MB

目录 目 录 (2) 第一章 产品简介 (4) 1.1 概述 (4) 1.2 性能与技术指标 (4) 1.3 典型应用 (5) 1.4 产品销售清单 (6) 1.5 技术支持与服务 (6) 第二章 硬件描述与使用方法 (7) 2.1 产品外观 (7) 2.2 CAN总线接口定义 (7) 2.3 DB9端接口定义 (8) 2.4 指示灯定义 (8) 2.5 CAN总线连接 (8) 第三章 配置说明 (9) 3.1 配置方法 (9) 3.2 软件说明 (9) 3.2.1 配置基本参数 (10) 3.2.2 配置串口参数 (12) 3.2.3 配置CAN接口参数 (12) 3.2.4 举例介绍验收滤波的设置 (14) 3.2.5 软件下方按钮说明 (16) 第四章 应用说明 (16) 4.1 模式1 透明转换模式 (17) 4.1.1 串行帧转CAN 报文 (17) 4.1.2 CAN报文转串行帧 (18) 4.2 模式2 透明带ID标识转换 (18) 4.2.1 串行帧转CAN 报文 (18) 4.2.2 CAN报文转串行帧 (20)

CAN总线协议转换器

GY850X CAN232MB/CAN485MB CAN总线协议转换器 型号 产品名称 描述 GY8502 CAN232MB CAN总线协议转换器 CAN总线转RS232 GY8503 CAN485MB CAN总线协议转换器 CAN总线转RS485 说明书 时间 V1.0 2006年11月 Beta发布 V2.2 2008年4月 CAN232MB,CAN485MB手册整理 V2.3 2008年5月 说明书整理 V2.4 2008年10月 增加ModbusRTU协议支持 V2.5 2009年3月 增加透明带协议头转换模式 V2.51 2010年6月 文档整理,去掉422接口产品说明

目 录 目 录 (2) 第一章 产品简介 (4) 1.1 概述 (4) 1.2 性能与技术指标 (4) 1.3 典型应用 (5) 1.4 产品销售清单 (5) 1.5 技术支持与服务 (6) 第二章 硬件描述与使用方法 (6) 2.1 产品外观 (6) 2.2 CAN总线接口定义 (7) 2.3 DB9端接口定义 (7) 2.4 指示灯定义 (8) 2.5 CAN总线连接 (8) 第三章 配置说明 (8) 3.1 配置方法 (9) 3.2 软件说明 (9) 3.2.1 配置基本参数 (10) 3.2.2 配置串口参数 (12) 3.2.3 配置CAN接口参数 (12) 3.2.4 举例介绍验收滤波的设置 (13) 3.2.5 软件下方按钮说明 (15) 第四章 应用说明 (16) 4.1 模式1 透明转换模式 (16) 4.1.1 串行帧转CAN 报文 (17) 4.1.2 CAN报文转串行帧 (17) 4.2 模式2 透明带ID标识转换 (18) 4.2.1 串行帧转CAN 报文 (18) 4.2.2 CAN报文转串行帧 (19) 4.3 模式3 Modbus RTU转换 (20)

相关主题