知方号

知方号

基于单片机和CAN控制器sja1000实现分布式监控系统设计

基于单片机和CAN控制器sja1000实现分布式监控系统设计

引言

can(controller area network)即控制器局域网,是国际上应用最广泛的现场总线之一。与一般的总线通信相比,can的数据通信具有突出的可靠性、实时性和灵活性。本课题设计了一种基于can总线的监控系统,并对位定时这一关键问题进行了详细的阐述。借助该系统,使用者可以实现对can网络的实时监控,并可对系统参数进行优化。

监控系统整体结构

整个监控系统(如图1)是一个分布式控制系统,由三部分组成:上位机、转换模块、can节点。上位机负责监控整个系统的运行状况;转换模块作为各个节点与上位机的通信中介,实现上位机与节点间的双向通信;各个can节点均可以在任意时刻,遵循通信协议完成上传信息和执行控制命令等任务。

can节点接口电路设计

can总线上各节点均采用atmel公司生产的8位单片机为主控器,除完成节点自身的控制功能外,还与can控制器sja1000配合以实现can网络通信功能。

设计中选择sja1000控制器并采用其性能优越的pelican扩展模式。can收发器tja1050是philips公司生产的高速can总线驱动器。tja1050具有速率高、低功耗、电磁性能优越等特点。can接口电路如图2所示。

节点模块中采用高速光耦来实现收发器与控制器之间的电气隔离,抗干扰。光耦选择高速器件tlp113以满足在最高速率500kbps下的电气响应。采用dc/dc模块提供5v电源并实现系统电源与网络电源之间电气隔离措施。为了确保该系统的安全,在dc/dc模块及系统的输入和输出端增加tvs保护。

系统通信的实现

can控制器协议

can控制器实现的串口通信网络遵循osi模型,划分为两层:数据链路层和物理层。物理层按照ieee802.3lan标准构造,实现将数据发送到传输介质上和接收数据流的功能。在数据链路层实现比特流的拼装。can通信协议约定了4种不同的帧格式,本系统中使用标准帧格式,其格式如表1。can首先接收到仲裁场,根据仲裁场的内容判断所接收到的信号是哪种帧格式,用户将相应的数据写入数据场中进行发送,或从数据场中读取接收到的数据。

can应用层协议

在can 2.0规范中,只对物理层和数据链路层作了规定,用户需要根据自己的需求制定应用层协议。本设计以各个节点为控制对象,设计其应用层通信协议。can总线上传输的信息一般可分为2类:

命令信息:包括上位机要数命令、上位机控制命令。每周期上位机经can—rs232转换模块下发至各个节点要数命令。上位机接到状态信息后,根据情况下发控制命令,经由转换模块下发至各个节点模块。

状态信息。节点接到命令信息后,由各个节点采集现场数据信息,发送到can—rs232转换模块,再由其上传给上位机。信息包括:设备开关状态,电压电流量等。

根据系统实际情况,本系统can2.0标准帧格式的基础上(见表2),制定了一个多帧传输的应用层协议。协议中,实用软件滤波,即屏蔽了验收滤波器,将除了帧信息外,包括11位标识符的第二、三字节都进行了分配,如表3所示。

其中,帧信息可以根据实际情况而定。

标识符id10~id3代表模块地址,所以协议理论上可满足256个控制节点,标识符id2、id0以及该字节后六位定义为帧类型:命令帧或状态帧,数据信息这样划分简单明了。上位机根据模块地址收集判断节点信息,并下发相应命令。协议还规定,按优先权由高到低,从低向高为模块分配地址,以保证总线竞争中优先权高的节点能更先占有总线。

系统软件设计

基于总体设计要求和硬件组成,结合can总线协议的模型结构,整个系统的软件设计可以分为两部分:节点部分、上位机部分。

节点部分包括:初始化模块,can通信模块,串行通信模块,数据处理模块。正确的can初始化,可以充分利用can总线的优势,保证can通信正确可靠工作。对can节点初始化只有在复位模式下才可以进行,初始化主要包括工作方式的设置、接收滤波方式的设置、接收屏蔽寄存器(amr)的设置、接收代码寄存器(acr)的设置、波特率参数设置和中断允许寄存器(ier)的设置等。在完成can控制器的初始化设置以后,can控制器就可以回到工作状态,执行正常的通信任务。其他模块,不再详述。

上位机部分:上位机软件由vc++6.0软件编写,应用mfc类库编写并生成了具有windows风格的人机交互界面。软件应用mscomm控件通过串行端口传输和接收数据,为应用程序提供了串行通讯功能。microsoft communications control(mscomm)是microsoft公司提供的简化windows下串行通信编程的activex控件,为应用程序提供了通过串行接口收发数据的简便方法。具体来说,它提供了两种处理通信问题的方法:一是事件驱动(event-driven)方法,一是查询法。我们采用事件驱动方式。使用者可以通过良好的人机界面对整个系统进行实时监控。

位周期参数确定

在初始化can控制器的时候,要考虑配置总线时序寄存器的配置等重要问题。事实上,can通信协议中规定、通信波特率、位周期的取样点以及取样个数均可以自主设定,这样为用户在网络通讯性能的优化上提供了空间。如果位周期采样点偏后,可以接受较大的信号传输延迟,相应总线的传输距离可以延长;如果周期的取样点接近中间,则可以容忍系统节点间的参考时钟误差。这些矛盾直接影响了网络系统性能,所以总线位定时非常重要,合理的位定时可以提高系统的整体性能。

can 总线周期由4个部分组成: 同步段(sync_seg) 、传播延时段、相位缓冲段1 ( phase_seg1) 和相位缓冲段2 (phase_ seg2) ,如表4所示。

同步机制

can是有效支持分布式实时控制的串行通讯网络。从位定时的同步方式考虑,它实质上属于异步通讯协议,每传输一帧,以帧起始位开始,而以帧结束及随后的间歇场结束。这就要求收/发双方从帧起始位开始必须保持帧内信息代码中的每一位严格的同步。从位定时编码考虑,它采用的是非归零编码方式,位流传输不像差分码那样可以直接用电平的变化来代表同步信号,它属于自同步方式(接收端设法从收到的信号中提取同步信息的方式),can节点从一个位值到另一个位值的转变中提取时钟信息。为保证同步质量,can协议定义了自己的位同步方式:硬同步和重同步。

通过同步机制,可以消除由于相位误差带来的影响,保证信息正确解码。硬同步后,内部的位时间从同步段重新开始。因此,硬同步强迫同步沿处于重新开始的位时间同步段之内。重新同步的结果使相位缓冲段1增长,或使相位缓冲段2缩短。相位缓冲段加长或缩短的数量有上限,此上限由重新同步跳转宽度给定。

一个沿的相位误差由相关同步段的沿的位置给出。相位误差定义如下:

le = 0如果沿处于同步段里;

le 》 0 如果沿处于采集点之前;

le 《 0 如果沿处于前一个位的采集点之后。

当引起重新同步沿的相位误差的幅值小于或者等于重新同步跳转宽度的设定值时,重新同步和硬同步的作用相同。当相位错误的量级大于重新同步跳转宽度时有2种情况:

如果相位误差为正,则相位缓冲段1被增长,增长的范围与重新同步跳转宽度相同;

如果相位误差为负,则相位缓冲段2被缩短,缩短的范围与重新同步跳转宽度相同。

硬同步和重新同步是同步的2种形式,遵循以下规则:

在一个位时间里只允许一个同步;

仅当采集点之前探测到的值与紧跟沿之后的总线值不相符合时,才把沿用作于同步;

总线空闲期间,有一“隐性”转变到“显性”的沿,无论何时,硬同步都会被执行。

位时间参数计算规则

位时间参数计算规则是为保证系统在极端恶劣条件的两个节点间,能够正确接受并解码网络上的信息帧。极端恶劣条件是指这两个节点的钟振偏差在系统容忍偏差极限的两端,并且两个节点间具有最大的传输延迟。在没有噪音干扰的正常通信情况下,相位误差累计的最坏情况是:重同步边沿之间间隔有10个位周期(5个显性位后跟5个隐性位)。实际系统都运行在噪音环境中。由于噪音干扰,可能会导致重同步边沿之间的间隔超过10个位周期,在这种情况下必须进行严格的采用,否则可能进入错误处理模式。本监控系统各节点模块是以sja1000作为can控制器的。所以,考虑各方面的影响,位定时参数在只有1个取样点时的公式设置如下:

( sjw) min =max{(20×nbt×δf)/(1 - δf) ,((nbt(1-25×δf )- prop max -(1 -δf)+prop min/2))/(1-δf)}

( s j w) max = 4

t(seg2) min = max{2 , s j w}

t(seg2) max =min{8,((n b t (1-25×δf ) - ( pro p) max)/

(1 - δf), (nb t(1 - 25×δf) - ( pro p)

max - (1-δf) + prop min )/ 2) / (1-δf )

以上所述为位时间参数的计算规则,在实际监控系统中,以此规则根据适当的方法进行位定时参数确定和优化,使系统性能达到最优。

结语

现场总线系统用开放的现场总线控制通信网络将自动化最底层的现场控制器和现场智能仪表设备互连的实时网络控制系统。是工业控制系统发展的一个新的阶段。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至lizi9903@foxmail.com举报,一经查实,本站将立刻删除。