总线网络设计范文

2024-06-21

总线网络设计范文(精选12篇)

总线网络设计 第1篇

关键词:CAN总线,SHT11,虚拟仪器,LabVIEW

1 研究背景

伴随着科学技术的迅速发展, 我国农业也逐渐地从传统农业向高产、优质、高效为目的的现代化农业转变。而蔬菜大棚, 自然也离不开现代化的科学技术。通过国内外大量的科学实验和生产的实践证明, 环境的控制对蔬菜生产起到非常重要的作用。对于蔬菜大棚内环境的控制主要是对环境温度、湿度和土壤水分等进行测量和控制。

在国内, 较多的是单因子监测控制, 控制主要采用传统的一些方法, 精度和稳定性方面与国外还有一定差距。在国外, 目前, 荷兰、以色列、美国等发达国家可以根据温室作物的生长要求和特点, 对温室内光照、温度、水、气、肥等诸多因子进行自动调控。而目前, 现场总线控制系统是一个以智能传感器、自动控制、计算机、通信、网络技术为主要内容的多学科交叉的新兴技术。本文采用CAN总线设计了一个高精度、高速度、稳定可靠的虚拟测控网络。

2 系统设计

2.1 网络平台虚拟测控系统设计

分析系统的结构, 我们把网络分为两层:顶层为处于集中管理地位的主站节点;下层为处于现场执行与监测的从站节点。通过CAN总线适配卡或转换卡 (该系统采用微型并口CANmini) , 采用总线型拓扑结构, 把现场总线控制系统中主站和从站 (测控装置) 互连起来, 并按现场总线的物理层、数据链路层、应用层协议, 实现网络的功能。本测控系统同一时间需要监控的参量主要有电机蔬菜大棚的实时温度和湿度, 下面从两个方面介绍发送/接受协议。

(1) 上位机发送下位机接受协议。在BasicCAN模式下, CAN总线每帧最多可以携带8个字节的数据, 如下表1所示。数据源I D代表本桢数据的来源, 即上位机ID。字节2 (命令字) 代表上位机给下位机发送的命令, 当命令字设定为各个参数时对应的数据由字节3、字节4表示, 如表2所示。下位机接受到上位机发送来的数据后, 将根据下述各表格决定执行的动作。 (表1, 表2)

(2) 下位机发送上位机接受协议。下位机通过C A N总线向上位机发送的数据包括温度和湿度信息, 如表3所示。上位机接受到下位机发送来的数据后将按照此下表来解析数据。 (表3)

虚拟仪器主要是加强了软件在仪器中的应用, 尽可能应用计算机软件去取代传统仪器中的电路或元件, 但是测量中信息的获取仍然离不开硬件的支持。考虑到系统的灵活性和通用性, 本系统的硬件的构成方式是由上述智能节点和上位机监控程序就可以建立一个完整的虚拟仪器监试网络, 即:“P C机+C A N总线通信+N个智能节点+N个蔬菜大棚”。该系统是将下位机智能节点采集到被测量转换成数字信号, 在计算机软件控制下, 通过CAN总线将数据发送到上位机, 调用数据处理模块计算原始数据, 实现对采集数据的在线处理和离线处理。而上位机则通过CAN总线向下位机发送各种控制命令, 以实现对蔬菜大棚实时控制的目的。

2.2 上位机监控系统设计

本文采用LabVIEW来开发上位机监控程序, 实现蔬菜大棚温湿度数据采集、数据实时显示、数据存储、报表的生成与打印等功能。为实现监控系统软件的可扩展和易维护性, 需要在系统软件设计阶段仔细设计软件结构, 使系统软件能够适应新的硬件模块和算法, 采用通用框架处理方法把软件系统分成四个部分:系统配置、数据采集与处理、数据存储及报表生成与打印四个部分。该系统功能框图如下 (图1)

其中:系统配置包括设备连接、启动/复位CAN和参数设置;数据采集与处理包括数据采集和数据处理功能模块;数据库管理软件部分包括建立数据库的建立、创建数据库表及数据库中数据的存储三部分;报表生成与打印部分包括生成和打印报表两部分。

2.3 下位机智能节点的硬件电路设计

下位机智能节点是由温湿度数据采集模块和通信模块组成, 通过对每一个蔬菜大棚进行温湿度测量, 将BCD码为00到70的温度采样值和00到99的湿度采样值 (分别对应为温度-2 0℃到5 0℃和湿度0%到9 9%R H) , 在液晶显示屏上显示出来。同时通过C A N总线实现上下位机之间的实时通信, 得到各个大棚温湿度的最新采样值, 并将数据进行储存和处理, 以备查询分析及打印报表等。要求系统温湿度偏差小于5℃, 这样才能更加准确的提供一个良好的温湿度环境, 从而适合蔬菜生长。其硬件电路图如下 (图2)

3 结语

本文设计了基于C A N总线的蔬菜大棚温湿度测试网络, 它是由下位机进行数据采集、C A N总线通信和上位机实时监控管理构成一套完整的虚拟仪器测试网络。该网络具有操作简单、可靠性高、可维护性好等特点。

参考文献

[1]刘君华等.基于LabVIEW的虚拟仪器设计.北京:电子工业出版社, 2003.

[2]饶运涛等.现场总线CAN原理与应用技术.北京:北京航空航天大学出版社.

[3]周凤余等.CAN总线系统智能节点设计与实现.北京:微计算机信息, 1999.6.

[4]曹军.智能温室控制系统[D].东北林业大学硕士学位论文, 2001.

总线网络设计 第2篇

基于PCI总线的多路数据总线接口设计与实现

提出了一种主处理机可以直接控制的1553B总线接口模块的设计与实现方案,并简要介绍了其硬件结构、工作过程和软件开发.利用PCI协议芯片实现PCI局部总线与军用1553B总线的.桥接,采用WDM技术编写驱动程序.所设计的总线接口模块符合MIL-STD-1553B总线标准,具有结构简单、成本低廉、操作方便等特点,可用于仿真,开发1553B总线产品.

作 者:张伟 吴勇 ZHANG Wei WU Yong 作者单位:西北工业大学,陕西,西安,710072刊 名:火力与指挥控制 ISTIC PKU英文刊名:FIRE CONTROL AND COMMAND CONTROL年,卷(期):200732(1)分类号:V247.1 V247.1+9关键词:1553B 总线接口 开放式体系结构

总线网络设计 第3篇

关键词:CAN总线;汽车网络;应用

中图分类号:TP393

关于CAN总线技术在汽车网络中的应用问题在国内已经有了广泛的研究,其主要原因是因为CAN总线技术具有的独特优势在汽车网络应用中体现的价值是其他总线技术无法比拟的。为了了解这一技术,我们首先了解什么是CAN总线技术。

1 CAN总线技术

CAN总线技术是一种在网络通信中控制端为了控制通信网络中的各个节点输出一种线路连接各个分节点的总线传输技术。网络传输中,各个节点的模拟信号以及数字信号的传输转换都可以在总线上完成。那么CAN技术就是一种这样为了连接控制端及各个网络节点的通信总线技术。

CAN总线技术在我国的发展可谓是十分迅速,目前的主要应用领域是在汽车的局域网络中承担总线传输工作。在汽车电子技术的发展过程中,全自动智能汽车已经是汽车电子行业发展的主要研究方向。而连接各个控制节点的正是CAN总线技术。在汽车电子通信网络中,CAN总线主要连接的各个节点有控制汽车机械运动节点,控制汽车舒适度节点,以及汽车微电子控制节点。

CAN总线技术的主要特点是传输速度快,信號抗干扰能力强、具有较好的实时性传输以及其特独特的错误识别及控制技术,在局域网络中的具体应用具有较好的传输性能。

2 汽车的控制局域网络

在汽车行业发展的过程中,各个公司都在以客户体验为基本操作理念进行开发各项应用技术,其主要原因是在于符合客户需求的技术才是最好的技术价值体现。而对于CAN总线技术来说,其产生与发展的过程也是符合这一标准的。

工控机就是局域网络中的控制端,在汽车局域网当中,主要负责的是控制各个节点指令的中央控制处理器。事实上,在汽车电子行业的发展中,是离不开电子通信行业,网络通信行业,以及机械控制业的发展的,在汽车电子控制系统出现的时候,汽车的这个小型局域网络就已经形成。而我们都知道局域网络形成的过程中,中央服务器是最为重要的一个总控制端。工控机就是汽车局域网络控制的中央控制服务器,其主要作用就是控制处理汽车各个分节点的信息指令。

在下属分节点中,有传感器控制系统,发动机及变速系统,电通控制系统,起重力矩限制系统,车身控制系统,执行控制器等。这些分节点都是汽车局域网络的组成部分。在传感器控制系统中,主要是针对汽车传感器的控制。我们日常开车的过程中,传感系统在汽车机械控制应用各领域中具有十分重要的地位。其主要控制的是当温度,重力,以及速度等传感变量出现变化时在传感控制系统中就会有相应的处理指令,如果变量的变化超出了正常极限范围,那么传感控制系统就会通过总线对工控机发出指令,再由工控机进行调节控制其他汽车控制部分。例如当汽车温度传感器发现汽车内部温度上升到极限温度时,就会对传感控制系统发出指令,再由传感控制系统将指令进行处理后,通过总线将信息迅速传递到工控机,当工控机接收到该指令时,处理系统就会通过分析指令,发出对汽车内部温度调节系统开启的指令,直至将温度降到可以正常行驶的标准位置。出于对汽车行驶安全的考虑,对于速度控制系统来说,最典型的装置就是汽车内部的限速控制系统。当速度达到一定极限值时,就可以通过限速控制系统对汽车的速度进行控制,而这些指令的传输,无一例外都必须要通过网络控制总线的传输才能完成。

3 CAN总线技术在汽车控制网络中的应用

CAN总线技术在汽车控制网络中的应用可以说是较为广泛。由于汽车系统中需要迅速的反映系统中所发出的任一指令,而传统的信号通信传输又无法达到这样的要求,所以需要CAN总线技术来拟补这一空缺。对于CAN总线技术来说,传递信号速度快是他的一个重要特点,在信号传输过程中,可以通过CAN总线进行传递处理。CAN总线模块中就有错误识别以及控制的功能,在这一功能中,对于错误的信号,就可以被及时的侦查出来,然后将错误的类型传递给信号控制端,由终极处理控制系统做出相应的反应。

对于CAN总线技术在汽车领域的应用来说,其主要控制的是有两个组成部分。第一是舒适系统网络,第二是机械系统网络。其中,各个控制点都是由CAN总线进行连接控制。车门控制单元,空调控制单元,仪表,中央锁控制单元,天窗控制单元以及电动座椅控制单元,这些控制单元都是为了驾驶员和乘客可以有一个更好的乘车环境而设置的电子控制系统。空调控制单元通过总线对空调机械控制进行调节车内空气环境,调节车内温度,保持车厢内部的空气清新,使车内人员对车内的空气感觉舒适即可。对于天窗控制单元来说也是一样的道理。不得不提到的是中央锁控制单元,这个控制单元是保证车内人员人身安全的重要组成部分。由于汽车的安全系统最外层的就是中央锁控制,如果一旦出现信号传输崩溃问题,中央锁无法完成其应有的功能,那么对于驾驶室内的人来说,安全问题就成为了一个巨大的事故隐患。

总线技术在整个车内的网络系统中所起到的作用是不容忽视的,一旦出现网络传输中断,其后果是不可想象的。假设一个系统中的总线传输出现问题,那么首先出现问题的就是网络控制终端发出的指令无法传递到各个分节点中去,那么很容易就会造成汽车形式故障,而且很有可能引发交通安全事故。

CAN总线既然在汽车控制网络承担如此多的重要作用,那么选择CAN总线技术的原因有以下几点:

第一,CAN总线技术可以承载多个主机,多个从机进行同时工作,如此工作,可以避免一条总线出现问题,其他线路处于瘫痪的状态。一旦发现CAN总线中出现信号中断情况,可以发出相应的故障指令,命令其他主机或从机停止工作。

第二,CAN总线技术可以将数据远距离高速传输。这个特点可以说是当前汽车网络控制领域中最为重要的一点,尤其是对于数据传输速度快这个问题来说,高速传输数据可以及时传递相应的信息,也可以避免一些不必要的损失。

第三,CAN总线技术可以在传递出现问题的自动重启指令。在总线传输过程中,如果出现错误指令,或者指令终端情况,CAN总线控制端可以重新启动该指令的传输。这样就可以避免传输过程中的传递信息中断而无法完成该指令的执行。

第四,CAN总线技术成本较低。在汽车电子网络发达的时代,降低汽车制造成本本身就是一件利民工程。而CAN总线成本较低而获得广泛的应用,也是不少汽车制造商选择其在汽车控制网络中应用的原因之一。

4 结束语

综上所述,本文通过对CAN总线技术,汽车网络的构成,以及CAN总线技术在汽车电子网络中的应用的论述,说明CAN总线技术能够在汽车网络中应用是具有其独特的优势的。相信在未来的汽车电子网络行业发展中,CAN总线技术凭借低成本,高性能的特点一定会在该领域中获得更多的应用和发展。

参考文献:

[1]杨建军.CAN总线技术在汽车中的应用[J].上海汽车.2007(06):32-34

[2]王磊,闫厉,田丽媛.CAN总线技术在汽车网络中的研究与实现[J].长春工业大学学报(自然科学版).2007(04):402-406

[3]童卫东.CAN总线技术在汽车中的应用研究[D].东南大学.2005

作者简介:魏翔(1983.01-),男,湖北黄陂人,本科,讲师,主要研究方向:计算机。

总线网络设计 第4篇

基于CAN通信的优越性,本文介绍一种可以将RS232通信网络转换成CAN通信网络的方法,以更好地解决用户建立远程通信网络的问题。

1 CAN总线简介

1.1 CAN总线概述

控制器局域网络CAN(Controller Area Network),属于现场总线的范畴,它是一种有效支持分布式控制或实时控制的串行通信网络,最初由德国Bosch公司于20世纪80年代用于汽车内部测试和控制仪器之间的数据通信[1]。其总线规范已被ISO国际标准组织定为国际标准,CAN协议经ISO标准化后有ISO11898标准和ISO11519标准两种,这两种标准对于数据链路层定义是相同的,但物理层不同。ISO11898是通信速度为125 kb/s-1 Mb/s的CAN高速通信标准;ISO11519是通信速度为125 kb/s以下的CAN低速通信标准。CAN协议建立在国际标准组织的开放系统互联模型基础上,但其模型结构只有三层:ISO底层的物理层、数据链路层和应用层;其信号传输介质可采用双绞线、同轴电缆和光纤等;通信最大距离可达10 km;最大通信波特率可达1 Mb/s,可挂设备最多达110个。CAN总线具有的特点,越来越广泛地被应用于各种工业现场,并被公认为是最有前途的现场总线之一。

1.2 CAN总线工作机制

1.2.1 CAN的报文类型

CAN系统中节点之间以报文的形式进行通信,其报文有五种类型:数据帧、远程帧、错误帧、过载帧和帧空间[2]。每种帧都有相应固定的格式,其中数据帧和远程帧与应用密切相关,其他类型帧由CAN控制器根据具体的情况自动传输。帧种类及用途如表1所示。

1.2.2 CAN节点的仲裁机制

只要总线空闲,任何单元都可以开始发送报文(多主控制)。最先访问总线的节点可获得总线控制权。若多个节点同时开始传送报文,就会有总线访问冲突,可使用识别符的位形式仲裁解决这个冲突。仲裁期间,每一个发送器都对发送位的电平与被监控的总线电平进行比较。如果电平相同,则这个节点继续发送。若发送的是隐性电平而监控到的是显性电平,则这个节点失去了仲裁,必须退出发送状态。ID越小优先权越高,发送高优先级ID消息的节点可获得发送权。

1.2.3 CAN节点的报文滤波机制

CAN控制器监听接收总线上的所有报文,只有通过CAN控制器的报文筛选器筛选的报文才能进入CAN的报文接收缓冲区,为该节点所接收并传送给应用程序。

1.2.4 CAN节点状态

CAN总线上每个节点都处于“错误主动”、“错误被动”和“总线关闭”三种状态之一。区分这几种状态的主要依据是发送错误计数器和接收错误计数器的值,并且这三种状态可以在一定条件下相互转化。

处于错误主动状态的节点,当发现总线上有错误传输时,将向总线上发“主动出错帧”;处于错误被动状态的节点,当发现总线上有错误传输时,将向总线上发“被动出错帧”;当节点进入总线脱离状态时,将完全退出总线操作。

2 硬件电路设计

2.1 硬件设计原理

RS232串口通信与CAN通信是两种不同的传输方式,无论是数据的传输方式还是逻辑电平的电压表示都是不同的,本设计主要完成RS232接口与CAN总线协议之间的转换,以及数据的双向传输。设计原理如图1所示。

RS232接口端信号经过RS232电平转换成TTL电平,直接输入到微控制器的通用同步/异步串行接口(US-ART),微控制器控制CAN控制器读出有效的数据经光电隔离的CAN收发器发送到CAN总线上。

本设计采用的RS232电平转换器为MAX232,微控制器为ATmega128,CAN总线控制器采用SJA1000,CAN总线收发器采用高速的具有收发和隔离功能的CTM1050控制器。ATmega128是整个模块的控制中心,控制着RS232接口和CAN总线的通信。器件连接示意图如图2所示。

RS232接口的发送数据端和接收数据端经MAX232电平转换分别与Atmega128串口、接收数据端PE0/RXD0、发送数据端PE1/TXD0相连;SJA1000的AD0~AD7连接到Atmega128的PA口,INT与Atmega128的INT0相连,ALE与Atmega128的PG2/ALE相连,读写端RD、WR分别连接Atmega128的PG1/RD、PG0/WR,CS连接到Atmega128的PC6,Atmega128的时钟取自SJA1000的振荡器,即SJA1000的CLKOUT连接到Atmega128的XTAL1;收发器CTM1050的RX0、TX0分别连接SJA1000T的RX0、TX0,CANH、CANL连接到CAN总线上。

2.2 主要芯片

RS232用正负电压来表示逻辑状态,与TTL以高低电平表示逻辑状态的规定不同。因此,为了能够同计算机接口或终端的TTL器件连接,必须在RS232接口与TTL电路之间进行电平和逻辑关系的变换。MAX232芯片可完成TTL圮RS232电平的双向转换。

ATmega128单片机是基于AVR RISC结构的8位低功耗CMOS微处理器,为AVR单片机系列中的高性能单片机。ATmega128单片机内部带有128 KB的系统内可编程Flash程序存储器,具有同时读写能力;4 KB的E2PROM;4 KB的SRAM;53个通用I/O端口线;32个通用工作寄存器;4个灵活的具有比较模式和PWM功能的定时器/计数器(T/C);2个USART;串行外围设备接口(SPI);与IEEE1149.1规范兼容的JTAG测试接口,可以用于片上调试;6种省电模式;53个可编程I/O端13线;由于其先进的指令集以及单周期指令执行时间,数据吞吐率高达1 MIPS/MHz等。

SJA1000是一种独立的CAN控制器,主要用于移动目标和一般工业环境中的区域网络控制,具有新的Peli CAN操作模式,这种模式兼容CAN2.0A和CAN2.0B两种技术规范[3]。SJA1000可完成CAN总线的物理层和数据链路层的所有功能,由CAN核心模块、发送缓冲区、接收FIFO、验收滤波器和接口管理逻辑组成[4]。

CTM1050是一款带隔离的高速CAN收发器芯片,该芯片内部集成了所有必需的CAN隔离及CAN收、发器件,其主要功能是将CAN控制器的逻辑电平转换为CAN总线的差分电平并且具有直流2 500 V的隔离功能及ESD保护作用。该芯片符合ISO 11898标准,可与其他遵从ISO 11898标准的CAN收发器互连。

3 软件设计

本设计程序主要包括:串口初始化程序、SJA1000初始化程序、单片机接收串口中断服务子程序、单片机发送数据到串口中断服务子程序、单片机接收CAN数据子程序、单片机发送CAN数据程序以及一些异常错误处理子程序等等。程序流程图如图3所示。

本设计可以将RS232通信网络转换成CAN通信网络,能够很方便地实现RS232多点组网、远程通信,且不需要更改原有RS232通信软件,用户可直接嵌入原有的应用领域,使系统设计达到更先进的水平。

摘要:基于CAN总线原理,结合CAN控制器SJA1000、CAN收发器CTM和ATmega128的特性,针对CAN总线和RS232互联问题,提出了RS232-CAN接口模块的设计方案,详细介绍了硬软件设计模块以及本设计的具体应用。

关键词:CAN,ATmega128,SJA1000,RS232

参考文献

[1]王黎明,夏立,邵英,等.CAN现场总线系统的设计与应用[M].北京:电子工业出版社,2008.

[2]饶运涛,邹继军,郑勇芸,等.现场总线CAN原理与应用技术[M].北京:北京航空航天大学出版社,2003.

[3]PHILIPS Corporation.SJA1000stand-alone CAN contro-ller product specification[S].2000.

PCI总线仲裁器的设计与实现 第5篇

摘要:基于Altera的CPLD器件的PCI总线仲裁器设计,实现仲裁器的AHDL编程,并结合仿真结果对PCI总线的仲裁进行了论述。

关键词:PCI仲裁器,CPLD,仿真

PCI总线仲裁器通常是集成在PCI芯片组中。随着计算机应用的深入,尤其是嵌入式系统的不断发展,集成的仲裁器难以满足某些场合的应用。而采用CPLD技术实现的独立的PCI总线仲裁器,则较好的适应了这方面的需求。

一pPCI总线仲裁机制

PCI的仲裁是基于设备访问,而不是基于时间分配的。在任一时刻,总线上的一个主设备要想获得对总线的控制权,就必须发出它的请求信号(PCIreqN),如果此刻该设备有权控制总线,总线仲裁器就使该设备的总线占用允许信号(PCIgntN)有效,进而获得总线的使用权。当有多个主设备同时发出总线控制请求时,就必须由仲裁器根据一定的算法判定,当前应该由哪个主设备获得控制权。

二、仲裁算法

常用的`仲裁算法有:公平算法、循环算法等。

本仲裁器设计采用的是循环算法,设备的优先级预先设定。目前的设计实现对四个PCI设备请求的仲裁,各设备优先级由高到低安排为:设备0 >设备1 >设备2 >设备3。

系统启动伊始,没有设备使用PCI总线,也没有设备请求使用PCI总线,仲裁器总是设定设备0拥有总线控制权,即将总线停靠于设备0。此时设备0的PCIgntN是有效的。而在此之后,仲裁器总是指定PCI总线的最后一个使用者为总线的停靠设备。

当有一个或多个设备提出拥有总线使用权的请求时,仲裁器将按照事先安排的设备优先级顺序逐一查询。对于只有一个设备请求的情况,该设备的请求将会马上得到响应;如果多个设备同时发出请求时,仲裁器裁定首先响应优先等级高的设备的请求,当此设备完成数据传输交出总线使用权后,再由优先等级低的设备使用总线。示意框图见图2。

如果一个设备已获得总线使用权并且正在进行地址、数据传输时,比它优先级别高的设备也发出了占用请求,仲裁器将会撤销优先级别低的设备的总线占用信号,并把总线使用权交给优先级别高的设备,同时还要确保在任一时刻不会出现多个设备同时占用总线的情况。具体见仿真分析。

三、编程设计与实现

本设计使用AHDL语言,在MaxplusII 10.0上编译通过,并进行了仿真。

1. 仲裁器信号定义

SUBDESIGN  PCI_arb

(       -- 输入

PCIclk         :INPUT  -- PCI时钟

Arbiter_rstN     :INPUT  -- 复位信号

PCIreqN[3..0]    :INPUT  -- 总线占用请求信号

frameN         :INPUT  -- 数据交易的启动或开始,主设备发出

irdyN           :INPUT  --交易数据准备好,主设备发出

-- 输出

PCIgntN[3..0]    :OUTPUT -- 总线占用允许信号

)

frameN和irdyN决定了总线的状态,只要两个信号中的一个有效,就表明总线上有数据通过,总线处于忙状态;当两个信号都无效时,则总线处于空闲状态。

2. 仲裁器状态机定义

parb_sm : MACHINE

OF BITS ( PARB2 , PARB1 , PARB0 )

WITH STATES (

PARB_SLT0  = 0, -- PCIgnt0#有效,设备0拥有总线使用权,总线空闲

PARB_SLT0D = 1, -- PCIgnt0#有效,数据在总线上传输,总线处于忙状态

P

ARB_SLT1  = 2, -- 以下类同

PARB_SLT1D = 3,

PARB_SLT2  = 4,

PARB_SLT2D = 5,

PARB_SLT3  = 6,

PARB_SLT3D = 7 );

3. 仲裁的实现

由于采用循环算法,对每一个设备而言状态的变换都是相同的,下面仅以设备0的状态转换为例:

CASE  parb_sm  IS

WHEN PARB_SLT0 =>

IF ( !frameN # !irdyN # frameN & irdyN & PARBtout4 ) THEN

IF ( !PCIreqN1 ) THEN

PCIgntN1  = GND;

parb_sm   = PARB_SLT1D;

ELSIF ( !PCIreqN2 ) THEN

PCIgntN2  = GND;

parb_sm   = PARB_SLT2D;

ELSIF ( !PCIreqN3 ) THEN

PCIgntN3  = GND;

parb_sm   = PARB_SLT3D;

ELSE

PCIgntN0  = GND;

parb_sm   = PARB_SLT0D;

ELSE

PCIgntN0  = GND;

parb_sm   = PARB_SLT0D;

END IF;

WHEN PARB_SLT0D =>

PCIgntN0    = GND;

IF ( frameN & irdyN ) THEN

parb_sm   = PARB_SLT0;

ELSE

Parb_sm   = PARB_SLT0D;

END IF;

为了避免AD线上和PAR线上出现时序竞争,一个设备的PCIgntN信号有效和另一个设备的PCIgntN的撤销,如果不是在总线空闲状态,则两者之间至少要有一个时钟的延迟。设计中,将每个设备占用总线的状态分为两部分,PARB_SLTx(总线空闲)和PARB_SLTxD(总线忙);状态机不能从一个设备的PARB_SLTxD状态直接转到另一个设备的PARB_SLTyD状态,中间必须经过至少一个时钟的PARB_SLTx状态的衔接,这样就避免了总线上竞争的出现。

代码中,PARBtout为一5位计数器,对PCI时钟个数进行计数,用来判别设备发出请求信号后是否在规定时间内(16个时钟,即PARBtout[4..0] = 10000)占据了总线,启动了数据的传输;如果超时,则撤销该设备的请求信号,并按预设的优先级顺序,对其余设备总线使用权进行新一轮的裁定。计数器的编程实现:

IF ( PARBtout4 # PCIreqN0 & PCIreqN1 & PCIreqN2 & PCIreqN3 ) THEN

PARBtout [ ] = 0;

ELSIF ( frameN & irdyN ) THEN

PARBtout [ ] = PARBtout [ ] + 1;

ELSE

PARBtout [ ] = 0;

END IF;

四、仿真分析

1. 单一设备总线请求情况

系统初始化后自动将总线停靠于设备0上,总线处于空闲状态,frameN、irdyN均为高电平。需要强调的一点是,仲裁所用的PCI控制信号均在PCI时钟信号的上升沿采样而得。如图3所示,设备2发出总线占用信号,仲裁器在时钟上升沿A处采样到该信号,并开始启动PARBtout计数,此时的frameN、irdyN为高电平,设备0仍然拥有总线使用权;随后设备2驱动使得frameN和irdyN有效,在时钟上升沿B处,仲裁器采样到frameN和irdyN,计数器清零,使设备2的PCIgntN2信号有效,从而占用总线,设备把地址、数据驱动到总线上,总线处于忙状态。

之后,设备2撤销其PCIreqN2信号,放弃对总线的占用;接着frameN、irdyN信号相继无效,表明数据传输的完成,总线变为空闲,仲裁器在C处采样后,将总线停靠在设备2上。

2. 多个设备同时请求总线使用权(以两个设备为例)

设备3首先发出请求信号,仲裁器在时钟A处采样后,计数器开始计数,此时总线仍然为设备0占用着;在时钟B处的采样,检测到frameN有效,表明数据传输的开始,仲裁器使得PCIgntN3信号有效,设备3获得总线所有权;

在随后的一个时钟上升沿,仲裁器采样到设备2的总线请求信号,此时由于frameN、irdyN依然有效,表明数据传输正在进行中,必须等当前数据传输完成后,设备2才能占用总线进行自己的数据传输,此时仲裁器隐含设定设备2拥有总线使用权。设备3在时钟C之前使得frameN、irdyN无效,总线进入空闲状态,停靠在设备3上。设备2检测到总线空闲,驱动自己的frameN、irdyN信号,仲裁器在时钟D处采样到有效的frameN、irdyN信号后,使PCIgntN2有效,设备2占据总线,开始数据的传输。设备2使用完总线后,使总线回到空闲状态,停靠在设备2上;设备3检测到总线空闲,再次驱动frameN、irdyN有效,从而再次获得总线使用权(时钟上升沿F处)。所有传输完成后,总线将停靠在设备3上。

值得一提的是,如果设备3在被迫交出总线前不能完成所有数据的传输,它必须使自己的PCIreqN3信号持续有效,这样在设备2用完总线后,仲裁器能将使用权交回,从而完成剩余数据的传输。

图5为设备获得总线使用权,在设定的16个时钟周期内没有启动传输,仲裁器状态的变换。仍以两个设备为例。

基于SPI总线接口的FRAM设计 第6篇

关键词:SPI总线;单片机;总线接口;FRAM设计

中图分类号:TP333 文献标识码:A 文章编号:1009-2374(2013)14-0011-03

随着科技的进步,电子技术的发展,在电子、工程控制、通信等行业内,单片机的应用范围也越来越广,而它的外围芯片接口应用也变得越来越重要。针对于一些记录测控的数据,记录通信的数据,都需要不掉电存储方式,所以不掉电存储也成为了控制系统中不可或缺的一个部分。在存储芯片的发展过程中,有很多产品诞生,如E2PROM或闪速存储作为存储介质,则速度较慢;在实时性要求较高的场合常采用电池支持的SRAM,它既有RAM的读写速度,又有ROM掉电数据不丢失的特性,但是电池支持的SRAM在实际使用过程中数据不可靠,容易丢失,且电池容易受到环境因数的影响;而RAMTRON公司研制的铁电存储成功解决了电池的问题,由于具有几乎无限次数擦写、高速读写、低功耗、数据能掉电保持等特点而广泛地应用在各种控制系统中。本文采用C8051F单片机对FRAM芯片的读写操作,从而完成了对于系统的参数及数据保存功能。

1 C8051F单片机的SPI总线接口

C8051F单片机微处理器具有SPI接口,所以可以和FM25V10直接通过SPI总线进行连接,并且SPI总线的速度完全可以达到要求。SPI总线只需四条线就可以完成MCU与各种外围器件的通讯,分别为:串行时钟线(CSK)、主机输入/从机输出数据线(MISO)、主机输出/从机输入数据线(MOSI)、低电平有效从机选择线(CS)。当SPI工作时,在移位寄存器中的数据逐位从输出引脚(MOSI)输出(高位在前),同时从输入引脚(MISO)接收的数据逐位移到移位寄存器(高位在前)。传输完一个字节之后,该字节便会进入到接收器件的移位寄存器中,这样就可以完成了两个器件之间的数据交换,SPI总线的主机的时钟信号来确保本次传输的同步,当SPI被配置为主器件时,最大数据传输率(位/秒)是系统时钟频率的二分之一。当SPI被配置为从器件时,如果主器件与系统时钟同步发出SCK、NSS和串行输入数据,则全双工操作时的最大数据传输率(位/秒)是系统时钟频率的十分之一。

2 FM25V10的工作原理及其特点

FRAM是靠材料特性来保存数据,这种材料并非磁性材料,所以从原理上讲,磁场对数据是没有影响的,在实际中,电场对数据也没有影响,所以其抗干扰能力强。在复杂环境中可以记录一些重要的数据,由于它的擦写次数多,所以可以记录每一个数据脉冲。

铁电存储器FRAM的特点:(1)具有非易失性,掉电后数据可以保存45年左右;(2)擦写次数很多,5V供电的FRAM的擦写次数多达10000亿次;(3)速度快,串口总线的FRAM的CLK的频率最高可达20M,没有等待写周期,并口的访问速度70ns;(4)功耗较低,静态电流小于10uA,读写电流小于150uA。

电路的工作环境会涉及到强电和弱点之间的转换和一定的电磁干扰,设计选用Ramtron公司的FM系列铁电存储器。

FM25V10为2M位的非易失性铁电随机存储器,结构容量为256K×8位,无限次的读写次数,掉电数据保持10年,写数据无延时,采用快速SPI串行协议,最高速度可以达到40M的总线速度。硬件上有完善的写保护,同时软件也可以进行写保护。工作电压:2.7~3.6V,静态工作电流:5uA。

3 FRAM与C8051F单片机的SPI硬件设计

由于FM25V10与其他的SPI设备一样,可以直接挂在SPI总线接口上,本文采用的是SPI的四线接口,因此需要额外的片选信号NSS,/HOLD和/WP直接连接到高电平上,所以不进行硬件保护操作和暂停操作,硬件连接如图1、单片机相应的端口分配如表1所示。

4 软件流程及其程序的编写

数据存储及读取模块软件的程序设计主要对象是铁电存储器FM25V10,通过对单片机内部集成的A/D采集模块进行数据的采集,并将数据进行实时的存储在铁电存储器FM25V10中,并且在存储结束后将数据读取出来,通过通信模块将数据传输给上位机。

数据的存储及读取过程中是通过SPI总线方式进行传输的,该方式可以有效地对数据进行快速、准确的存储及读取。C8051F单片机中的SPI提供了一个灵活的四线全双工串行总线,SPI所使用的4个信号分别是:MOSI、MISO、SCK、NSS。

该程序的编写主要分为两部分:一部分是对FM25V10的数据存储程序的编写;另一部分是对FM25V10的数据读取程序的编写。在对FM25V10的操作过程中,我们要根据FM25V10手册中所提供的操作码来操作,而且还要根据手册中提供的程序时序图来编写程序。表2是FM25V10手册所提供的操作码。

对于软件的编程之前,首先要把要编写程序的基本流程画出来,可以更清晰地了解程序的主要内容及其工作流程,图2就是本文中的读写数据软件流程。

下边是用到的最基本的程序块,包含了三个方面:数据的写入、数据的读取、地址的自动加一。

(1)将R0数据写入到SPI端口寄存器:

SPI_write:

CLR SPIF

MOV SPI0DAT,R0

JNB SPIF,$

CLR SPIF

RET

(2)读取SPI端口寄存器中的数据到R0:

SPI_read:

CLR SPIF

MOV SPI0DAT,#00H

JNB SPIF,$

CLR SPIF

MOV R0,SPI0DAT

RET

(3)地址自动加1:

DPTR_INC:

INC DPTR_LL

MOV A,#00H

CJNE A,DPTR_LL,DPTR_RET

INC DPTR_HL

MOV A,#00H

CJNE A,DPTR_HL,DPTR_RET

INC DPTR_HH

DPTR_RET:

RET

5 结语

通过对硬件电路进行设计及相对应的软件编程实现了数据的存储和读取功能,完成了基于SPI串口总线的单片机对FRAM存储芯片的读写操作,完成了实时参数及其数据保存功能,通过实验可以说明数据通信稳定可靠。由于FM25V10存储芯片具有重复擦写、非易失性等特点,所以目前采用SPI总线接口的芯片越来越多,在仪器仪表、工业控制、数字家电等方面普遍得到应用。本文采用的C5051F单片机SPI接口,该方法也可以适用于其他带SPI接口电路的微处理器。

参考文献

[1] 洪亮,鄢萍,易润忠.基于SPI和单片机的嵌入式系统扩展方法[J].微型电脑应用,2008,24(9).

[2] 汪永琳,丁一.一种3线制半双工SPI接口设计[J].集成电路设计与开发,2010,35(5).

[3] 宋晔,蔡慧,赵荣祥.采用SPI接口实现TMS3230F240DSP之间的通信[J].机电工程,2005,22(5).

[4] 杨瑞帆,郭晓鹏,崔顺.基于C8051F330D单片机的多路数据采集系统设计[J].电子测试,2010,(4).

[5] 冯金霞,张轮,熊天圣.基于SPI接口的异步串口扩展技术研究[J].微型电脑应用,2009,25(12).

[6] 贾伟,邵左文,张玉猛.基于SPI总线的高速串行数据采集系统设计[J].国外电子测量技术,2007,26(4).

总线网络设计 第7篇

1 系统概述

如图1为系统示意图,X系统1553B总线通信子系统是1553B总线网络中的一个RT终端系统。在总线系统中,X系统是一个需要被测控的子系统。X系统1553B总线通信子系统能够接收、解析和执行来自BC总线控制器的各项命令。同时,RT端控制器与X系统之间通过RS232串口进行通信,实现获取并存储X系统遥测数据和转发BC总线控制器命令的功能。此1553B通信系统中,BC总线控制器的指令主要有:遥测指令、遥控指令、上注指令、勤务指令和方式代码指令等,并且周期性的发送遥测指令与方式代码指令、不定周期发送上注指令、方式代码指令和勤务指令,RT终端系统对各项命令都进行反馈,上位机软件提取反馈的信息,实时监测X系统的状态和1553B总线状态。

2 RT系统软件设计与实现

2.1 软件设计与实现

软件的模块设计示意图,如图2所示。软件进行模块设计,划分为初始化模块、总线中断模块、串口中断模块、定时器中断模块和主循环模块。

微控制器对1553B总线芯片的初始化需要遵循寄存器配置的顺序,当配置RT为增强使能模式,总线芯片的初始化步骤,如图3所示。

其中,配置开始/复位寄存器为0x0001实现软件复位;配置中断屏蔽寄存器为0x0012,使能RT子地址控制字EOM中断和RT模式码中断;配置寄存器4为0x8000,使能外部BIT字;配置寄存器2为0x081B,使能“写覆盖无效数据”、中断状态自动清除、电平中断请求、增强型RT存储器管理、分离广播数据;配置寄存器3为0x8011,使能“增强模式”、禁止非法的RX传送、增强型模式码处理;配置寄存器5为0x0080,使能“禁止广播”;配置寄存器1为0x8F80,使能增强RT模式、清除动态总线控制位、清除忙位、清除服务请求位、清除子系统标志位以及清除RT标志位。

实现总线中断函数时,首先对接收到的指令数据中RT地址与实际RT地址进行对比判断。判断成功后,读取中断寄存器,解析总线指令。在总线中断函数中不进行数据处理,仅对相应指令的标志位置位,如图4所示。

本系统采用8位微控制器为小尾端处理器体系架构,而BC总线控制器采用大尾端模式的SPARC体系结构,总线芯片BU-65170工作于8位缓存模式,RT端向1553B主总线缓冲区存储待发送数据时,应该依据大尾端方式来排放字节数据。同时,在8位操作模式的微控制器对BU-65170寄存器进行读操作时,先读高字节,再读低字节,之后再读高字节和低字节,即需要连续读操作两次,才能够读出寄存器的状态值;写操作时,仅写入一次即可。

2.2 系统软件安全可靠性方面的考虑

保障系统软件的安全与可靠,可以从提高软件的容错和纠错能力着手,逐项提出与分析了以下方法措施,包括:(1)初始化总线芯片时,程序配置开始/复位寄存器后,需要进行约800μs的延迟,保证1553B总线芯片复位操作充分完成。(2)初始化时,程序对未使用子地址的读/写数据块指针设置为0xFE0,将指针明确指向一个不使用的数据块地址。同时,未使用的子地址控制字均赋值为0。此措施防止程序对未使用子地址的误操作,提高软件对误操作的容错能力。(3)初始化时,程序需要对总线芯片的全部数据区域进行初始化,数据初始化为0,防止误操作得到未知的数据,防止未知数据对程序运行造成影响。(4)对于总线中断函数处理时,对接收到的总线指令中RT地址与实际RT地址进行对比判断,防止系统接收到其他RT终端的总线指令而造成误操作,增强该RT系统的容错能力。(5)为避免遗漏总线中断,缩短总线中断函数的执行时间,在总线中断函数处理中,程序对总线数据不进行处理,仅对相应总线指令的标志置位。(6)初始化时,对1553B总线芯片的RAM区域进行自检,检测RAM区域能否使用,自检出错,则启用备用RAM芯片,提高系统的纠错能力。(7)系统运行过程中,实施定时刷新操作,即在定时时间内未能接收到总线中断,则进行总线芯片重新初始化,提高芯片的自我纠错能力。

3 系统软件验证

X系统1553B总线通信子系统软件是否能够正常稳定运行,通过RT终端与BC总线控制器相连实现遥测和遥控等功能进行验证。BC总线控制器向RT终端系统发送各项总线指令,能够实现获得系统遥测信息、控制系统状态和监测总线状态等一系列功能。如图5所示,BC总线控制器接收到的反馈信息数据帧经过上位机解析,将X系统的运行状态信息显示到上位机软件界面,各项状态信息显示X系统运行正常,并且遥测状态量和X系统实际工作状态一致,证明X系统1553B总线通信子系统及系统软件运行正常,其中对部分状态信息进行了隐藏。

4 结束语

本文对1553B总线网络中RT终端系统软件的设计与实现进行了详细说明,重点对提高RT终端系统软件容错能力和纠错能力的措施进行了分析,这些措施在一定程度上提高了系统软件的安全性和可靠性,保障了系统安全稳定地运行。经过系统验证,X系统1553B总线通信子系统及系统软件运行稳定,并且已成功应用于某型项目中。目前,系统运行状态良好。

摘要:基于采用1553B总线芯片BU-65170和8位微控制器实现的1553B通信子系统项目,文中针对提高RT终端系统软件安全可靠性的措施进行了探究,说明了重要函数的实现。提出与分析了一系列方法措施,提高了系统软件的容错和自我纠错能力,系统软件的安全性和可靠性有了一定的保障。

关键词:1553B总线,RT终端,BU-65170

参考文献

[1]赵月琴.基于BU-61580的嵌入式1553B终端设计[J].航空兵器,2004(4):28-31.

[2]郭坚,付连芳,王海涛.基于8051微控制器的1553B总线接口设计[J].计算机测量与控制,2006,14(7):946-949.

[3]DDC.ACE/Mini-ACE series BC/RT/MT advanced communication engine integrated 1553 terminal BU-65170user's guide[M].USA:DDC,2005.

[4]DDC.MIL-STD-1553A/B notice 2 RT and BC/RT/MT advanced communication engine[M].USA:DDC,1999.

[5]马忠梅,刘滨,戚军,等.微控制器C语言Windows环境编程宝典[M].北京:北京航空航天大学出版社,2003.

[6]凌志华,谭立英,陶坤宇.基于BU-65170的1553B终端设计[J].微计算机信息,2008,24(2):273-274.

[7]旷文聪,姜运生.基于BU-61580的1553B航空通讯总线设计[J].电子技术,2008,45(12):14-20.

总线网络设计 第8篇

系统设计采用CAN总线[1,2]与485总线相结合的方法,构成井下安全系统的通信网络系统[3,4],该系统具有自动地址分配、状态查询、安全措施控制的功能。且通过适当距离增加中继,实现理论上无限数目模块终端接入网络系统中,提高了井下安全系统的灵活性及易用性。

1 系统结构组成

本系统安全装置主要有8部分组成:井上监控系统、井下工控机兼主机模块、智能输入输出模块、中继模块、皮带急停开关、终端模块、井下各类保护传感器、井下安全措施装置及防爆电话。整体系统结构如图1所示。

煤矿井下随着采煤位置的变化,井下安全装置模块需采取一定的调整,来满足当时井下环境。因此井下安全装置需具有一定的组网灵活性,方便随时更换位置,及其删减、增加安全模块。如图1所示,煤矿井下系统具有自动组网能力,将其所有必要的模块进行入网通信。且本系统具有组网灵活性和数目、位置无限制的特点,因此图1仅展示了井下网络的其中一部分。

基于CAN总线与485总线相结合的自动组网通信系统结构如图2所示,通信系统由局内网与局外网两部分组成。局内网是指由主机模块为中心,具有双CAN总线与双485总线,每条总线均可接入有限个智能输入输出模块、皮带急停模块,且同时位于两中继模块间或中继模块和终端模块之间的所有网段。所有模块均有双485总线,连接入网时需将接入本模块其中之一的485总线接口,并从另一485总线接出。当总线一侧不再连接任何模块时,需接入终端模块。中继也具有双CAN总线用来连接所有局内网,完成局内网互连构成局外网,同时还具有局内网段中的终端功能。

2 系统硬件设计

主机模块和中继模块主芯片均采用ST公司的stm32f107系列,其具有双CAN、5路串口、USB OTG等丰富内部资源。皮带急停模块[6]、智能输入输出模块、终端模块等模块主芯片采用stm32f103系列,具有CAN总线、3~5路串口等资源。主机模块具有双CAN总线和双485总线,在没有中继的前提下使其传输距离增加1倍,同时也为局内网中心节点的设计提供可能。中继也同时具有双CAN总线,主要目的是连接局内网段。

为保证所有模块正常稳定工作,均采用双电源供电,同时采用光电隔离技术将总线信号与板载处理器进行隔离。同时为保证总线的可靠性及抗干扰性,对总线的设计进行过流保护、过压保护、匹配电阻和TVS管箝制等相关措施。CAN总线收发器的电路设计如图3所示。为增加485总线的灵活性,通过增加三极管作为电子开关,实现了485芯片自动收发使能功能,其总线收发器的电路设计如图4所示。

此外每台主机模块均配置一台工控机,采用USB HID设备协议与主机模块通信,实现了远程监控,其他所有模块均无操控功能。智能输入输出模块采用低湿液晶显示,可显示当前接入的所有传感器和控制状态。智能输入接口有A/D输入、开关量输入、频率输入,同时开关量和频率输入管脚重合,具有自动识别功能。皮带跑偏/急停模块采用两位数码管显示当前地址,当数码管闪烁时,所有跑偏/急停模块显示同一地址,表明此地址有动作反应,以此提醒所有位置的工作人员。

3 通信方案及其协议制定

主机模块是局内网服务器,其具有自动地址分配、自动查询和自动控制等功能,且本身也带有智能输入输出模块的功能,并具有连接传感器和安全措施等功能,是构成局内网的核心。在局内网段内的所有模块均受主机模块通信控制,且局内网段内模块数目、位置均可调整。这里需强调,主机具有双地址,局内网段内默认均为0,由于所有主机模块均配有工控机,而局外网地址需手动配置。

智能输入输出模块的主要功能是检测并控制连接本模块上所有传感器和安全控制措施。通过自动分配的地址,可与主机通信,及时反馈当前环境或响应主机命令。皮带急停模块是独立于所有模块的较高优先级的手动控制模块,仅采用485总线进行通信,同时可显示其他模块发生急停操作的地址编号。

中继模块既作为局内网的终端装置,同时也有信息转发功能。根据CAN的工作特点可知,CAN总线传输距离受到波特率的限制,同时传输距离仍有限,无法无限制连接所需模块,在增加中继后使其成为可能。同时为方便管理,中继将所有局内网进行隔离,仅使局外网协议包进行转发。

本通信方案中有两条总线,即CAN总线与485总线。其中485总线主要用于实现所有模块的自动地址分配与识别功能、获取总线上所有连接设备数量,同时与所有跑偏/急停传感器通信,获取急停、跑偏状态,而485总线工作范围仅在同一局内网有效。

CAN总线主要用于与所有智能输入输出模块进行通信,获取所有输入传感器状态信息,控制所有输出端口的状态,从而实现数据远程查询及控制功能。通过中继和其他局内网进行通信实现远程操作功能。

3.1 485总线协议方案说明

485通信方式全部为查询方式,在数据传输过程中,所有从机均不主动自行发送数据,必须收到前一台设备的查询帧时,才能将信息进行返回或继续传递到下一设备上。在485总线中传输均以帧为单位,每帧数据均由帧头、数据和校验位3部分组成。由主机向终端发送帧共有3条命令:地址自动分配帧、动作保护传输帧、动作保护查询帧。由终端或从机向主机方向发送共有4条命令:模块数量返回帧、急停动作返回帧、无动作应答帧、以及超时应答帧。工作方式解析如图5所示。

自动分配帧数据包括输入输出模块当前地址[7]、皮带跑偏/急停当前地址,主机地址默认0,发送时均设为1。当前模块一端接收此帧数据,识别本机地址,并将其地址数据自加,由另一端发送至下一从机,以此达到自动地址分配功能。当碰到终端或中继时,将返回模块数量返回帧回应主机。正常工作时,主机定时进行动作查询,当从机接收到此帧时,先判断有无动作保护:若无,应返回无动作应答帧;否则返回急停动作返回帧。然后继续转发动作查询帧,直至终端或中继结束。当主机接收到动作返回帧时,读取有动作保护的急停模块地址,并发送动作保护传输帧,通知所有急停模块利用数码管闪烁显示。

超时应答帧主要针对线路或连接总线某一模块出现故障时,会自动检测出第几号设备或线路出现故障。由485总线连接方式决定,485网络中所有模块均只能直接与其相邻模块通信。由主机方向传输命令帧,当一模块转发命令帧至下一相邻模块时,正常情况下该模块会立即接收下一模块的回应帧。若在规定时间内仍未收到将重发3次,仍旧未收到,则判断下一模块出现故障。回应超时应答帧,所有模块均进行转发,直至主机,超时应答帧中的数据部分为故障模块的地址。以此实现线路故障自动检测功能[8]。

3.2 CAN总线协议方案说明

CAN网络通信,是以485总线功能为基础。只有在485总线网络正常工作情况下,即所有模块地址正常分配,CAN网络通信才为有效。CAN通信网络主要实现两个功能:(1)局内网的所有智能输入输出模块的信息查询与控制,不含中继器。(2)局外网的所有主机之间通信,包含中继。

CAN传输数据包包括4 ByteCAN ID(最低3 bit固定)和8 Byte数据,通信数据包设计如表1所示。网段标识主要规定此数据包为何种网段数据包,当为局外网数据包时,仅有所有网段内主机和中继具有接收功能,中继仅做转发,主机具有处理功能。当为局内网数据包时,中继进行隔离,其他局内网段内不能接收其数据[9,10]。这也保证了不同网段内的从机模块,可具有相同地址且不冲突。目的地址与源地址也根据局内包和局外包有所区别,局外包其地址代表在外网段内主机地址,局内网地址为自动识别地址。数据类型、帧长度、帧编号可根据需要,进行设置,使用灵活且通用。

4 结束语

介绍了一种基于485总线和CAN总线相结合的通信网络,具有自动地址分配、故障自动检测、通用性较强等优点。经测试表明,本通信网络使用方便、性能良好、简单易用,适合井下复杂环境的远距离传输。

摘要:针对煤矿井下安全,设计了一种适用于井下矿用保护系统的通信网络。系统的网络结构,采用485总线实现井下各工作通信节点互连、自动地址分配、节点数量查询、线路故障自检等功能。采用CAN总线对已分配地址的输入输出模块节点通信进行井下环境监控,同时增加中继实现远距离通信。该网络系统具有通信节点接入灵活、地址自动分配等特点,适用于井下矿用保护系统。

关键词:通信网络,CAN总线,485总线,自动地址分配

参考文献

[1]杜尚丰.CAN总线测控技术及其应用[M].北京:电子工业出版社,2007.

[2]杨春杰.CAN总线技术[M].北京:北京航空航天大学出版社,2010.

[3]陈民龙.矿用电子技术[M].北京:北京煤炭工业出版社,1988.

[4]史丽萍,温树峰,黄延庆.基于CAN网通信的选择性短路保护的研究[J].电力系统保护与控制,2011,39(8):139-142.

[5]李淮江,苗曙光.基于CAN和WSNs的井下皮带机打滑保护监测系统研究[J].传感器与微系统,2011,30(12):40-42.

[6]梁红岩,马亮,徐琳君.井下皮带跑偏保护损坏频繁问题的分析[J].科技致富向导,2011,29(20):314.

[7]孟赵刘.皮带机跑偏原因分析及对策[J].科技信息,2010(3):104-154.

[8]廖义奎.Cortex-M3之STM32嵌入式系统设计[M].北京:中国电力出版社,2012.

[9]卢志刚,刘建华,刘宝旭,等.基于HID的USB监控技术的设计与实现[J].计算机工程,2010,36(4):1-3

总线网络设计 第9篇

关键词:Jini技术,控制器局域网总线,自适应性,车载网络

0 引 言

随着电子技术的发展, 越来越多的电子设备在汽车上安装使用。在带来方便的同时, 汽车内部的连线长度增多、空间紧张、布线复杂, 导致了汽车设计、测试、组装的难度急剧增加。这些汽车设计制造中的实际问题都推动了汽车网络研究的快速发展。CAN总线作为一种具有高性能、高可靠性以及设计独特的总线技术, 很好地解决了上述问题, 自从上世纪80年代由Bosch公司研发后, 即被广泛应用于汽车网络中[1]。而CAN作为一种事件驱动型总线, 在网络的容错性、灵活性方面还存在许多不足。但随着分布式技术的发展, CAN总线网络又作为一种分布式的网络, 也出现了许多将新型分布式技术应用于CAN总线网络的研究[2]。

本研究采用一种基于Java的全新的构建分布式系统技术Jini, 并将其与总线技术相结合, 在网络结构上进行深入的自适应研究。Jini具有动态的、自形成的和自管理的特性, 非常适合构建动态的分布式嵌入式系统, 将其应用于CAN网络, 设计一个面向汽车电子的自适应网络。

1 Jini体系结构

Jini是由Sun公司于1991年初推出的以Java技术为核心的一种分布式计算环境。它通过使用一个简易的“即插即用”模型, 能够随时改变硬件或者软件的配置, 形成一个Jini服务联盟, 从而提供了一个支持快速配置的分布式计算环境。Jini系统的目标是将网络转变成一个易于组织、易于管理的环境[3,4], 通过这个环境, 用户能够找到他们感兴趣的资源并加以利用。这里的资源既包括硬件设备, 也包括软件程序, 或者是两者的结合。Jini致力于使网络变成一个更富有动态性的环境, 可以灵活地增加和删除服务, 从而使环境能更好地适应实体的动态变化。

Jini系统在逻辑上由3部分组成[5]:基础设施 (Infrastructure) 、编程模型 (Programming Model) 和服务 (Service) 。基础设施用于构建一个Jini联邦系统, 服务则是这个系统中的实体。编程模型则是一组接口, 用于构建可靠的服务, 既包括基础设施中原有的服务, 也包括新加入联邦的服务。Jini体系结构的3个组成部分看似各自独立, 但实际上在很大程度上是综合在一起的。虽然在构建Jini系统或Jini系统的部分功能时, 可以使用上述全部的组成部分或只使用其中一部分, 但为了使建成的系统具有更完善的功能, 通常情况下都包括基础设施、编程模型和服务的概念。

尽管Jini系统由3部分组件组成, 但是它们之间的界限是模糊的, 组件之间紧密相连、彼此协作。Jini是建立在分布式系统、经常动态变化这一原则之上的。它的体系结构如图1所示。

2 车载控制系统

在现代汽车电控单元的数量逐渐增多的情况下, 出现了具有很多明确功能的局部的控制系统, 这些电控单元大致可分成动力传动装置控制 (如发动机控制和变速控制) 、底盘控制 (如汽车防抱死系统ABS) 和车身控制系统3类[6,7]。在本研究中主要针对车身控制系统进行了相关研究。车身控制系统主要用来提高驾驶的方便性和乘坐的舒适性, 该系统涵盖的范围较广, 包括灯光控制、车门控制、座位控制、气候 (空调) 控制、仪表盘显示等。传统的车身控制系统采用点对点的单一通讯方式, 不能满足越来越多的电子控制单元要求彼此的数据可以共享的发展趋势, 同时传统的车身控制系统类似于DCS的控制方式, 造成各种线束过于拥挤、出现故障难于及时排查的缺点。目前, 现代汽车的车身控制系统逐渐开始采用网络控制系统。

而控制器局域网总线 (CAN总线) 是由德国的BOSCH公司在上世纪80年代为汽车监控和控制系统而设计的。其具有传输速率高、抗干扰能力强、硬件连接方便等突出特点, 非常适合用于汽车系统中, 以解决众多测试与控制仪器之间的数据交换问题。

3 设计模型

本研究综合Jini技术与CAN总线技术, 设计了一个基于Jini的CAN总线自适应车载网络模型。

本研究所设计的自适应网络体系结构 (如图2所示) 与传统的CAN网络简单模型极其类似, 只是将Jini的核心查找服务放置于主机节点。CAN网络中的主机节点主要用于对各个从节点的监控, 而在Jini中查找服务有类似的功能, 用于各种服务的注册、发布新的服务等功能。从功能角度, 在主机节点部署查找服务具有很好的操作兼容性。同时也继承了原先主机节点的优点:便于整个网络的调度与管理;能够设计功能更丰富的应用软件, 且由于查找服务对各个节点的管理, 能够一定程度上实现容错性、自配置性、灵活性等自适应特征。

在Jini网络中有个重要的概念—服务, 而在CAN网络中仅有节点间数据的交换[8], 为了符合Jini的思想, 本研究中将具体车载CAN网络中的各节点 (如灯光控制器、车门控制器、座位控制器等) 描述成Jini中实体, 这里的实体仅是硬件设备即可, 并不需要像Jini中实体可能是硬件设备或是软件[9,10]。而每个节点都是一个能够提供数据服务的硬件设备。而节点间相互的数据传递也可以对应地理解为提供服务和使用服务。

4 关键技术

在该网络模型中, 首先启动主机的查找服务, 随后网络中的节点寻找网络中的查找服务, 在找到查找服务后, 节点将自己能产生何种数据等相关信息通知查找服务, 以便需要该数据服务的节点能够找到该节点。当某一节点需要获得某个节点提供的数据时, 首先, 它需要到查找服务中查找是否有该节点, 如果有则获得找到节点的ID号, 并与之通信, 如果没有, 则该节点的工作就暂时搁置。相对于传统的CAN总线中, 节点只能被动地接受其他节点传来的数据, 在这种工作模式下, 节点能够主动地向总线上的其他提供数据的节点请求所需要的数据, 这极大地提高了CAN总线网络的灵活性。而针对Jini与CAN的不同点, 本研究就消息的格式、消息的传播等关键技术进行了深入研究, 提出了解决方案。

4.1消息定义

针对在嵌入式系统中使用的绝大多数协议而言, 大部分此类总线协议 (包括CAN总线协议) 既没有主机名, 也没有端口号, 更不是基于套接字通信的。大消息域的需求无疑只会导致一些协议的效率很差, 在受限的嵌入式系统中这是一个很严重的问题。此外, 那些具有自身不同定义模式的总线协议必须为显示合适的接受者和发送者信息设计额外的机制。

而在CAN总线中发送的消息没有指明ID信息。为了解决非TCP协议中ID信息不足的问题, 利用一个ID产生器, 为每一个网络中的节点确定惟一的ID号。该ID产生器由服务管理器执行, 在节点接入网络后为每个节点分配惟一ID。这样, 在通信过程中, 无需知道主机和端口号, 只要知道相关节点的ID号就能进行通信。

在此, 通过将29位扩展的CAN标识符进行重新定义来标识每一个Jini消息。重新考虑定义的Jini消息ID模式如图3所示。

在CAN ID头部包含发送者节点的ID, 确保了每个CAN头部域的惟一性。这样处理由两个目的:首先, 它保证了从不同节点发送的相同消息不会有相同的标识符, 这是CAN总线纠错操作的首要条件;其次, 使得接收节点能够确定接收到的消息来自何处。节点ID可以是任何的6 bits的数, 能够满足大部门嵌入式网络应用的需求, 汽车网络中节点数一般不超过几百个, 足够满足汽车网络的需要。20位的优先级域被用来支持全局优先级。

在定义的Jini消息ID模式中, 除了在头部定义了3位的Jini消息ID域, 还在数据部分额外定义了一个字节的Jini消息类型。这样做能够避免消耗一大组CAN消息ID, 同时允许接收者只监听一个或两个消息类型, 而不是大范围的消息, 从而提高了效率。在数据部分定义的接收者ID域, 供接收者接收到消息后确认该消息是否发送正确。其中在CAN数据部分还定义了两个特殊位FP和PN, 用于处理大数据的分割问题。在数据部分的FP位 (即first packet) , 该位取值为1或者0, 当取值为1时, 表明传送的这段数据是首包, 而为0时, 则是后续的数据包。PN位 (即packet number) 表示一个大数据被分成的小数据包的数目。

4.2消息传递模式

在Jini中, 一旦Jini服务和查找服务间达成发现, 进一步的通信传输将交由RMI传输。Jini服务在发现彼此后的通信可以选择它们首选的方式, 但是在发现查找服务后所需要做的一系列通讯必须采用RMI:注册代理、发现其他服务、获取事件通知、管理服务以及事件租借等。RMI是一种分布式应用访问其他机器上方法的有效工具, 但是它需要使用TCP套接字来实现。显然, 在CAN中不能再使用RMI。在此, 本研究考虑用消息传递模式来代替RMI (如图4所示) 。

4.3多播和单播的处理

设计中遇到的另一个问题是在Jini中, 消息以多播和单播形式定义。为了实现TCP的最优化, Jini发送一小部分的多播消息, 然后再转换到单播通信。然而, 其他的一些协议只有单播、只有多播、只有广播或者是几种形式的结合。

显然CAN总线中无法发送多播和单播消息。但是CAN是一个广播总线, 可以使用随意的接收滤波器来达到多播传输。在CAN中对单播的处理也可以采用类似的方法, 使得单播消息在某些情况下仍然有用, 但是它不是要消耗宝贵的头部位, 就是需要在发送节点和接收节点间进行应用级的调和。

因此在CAN中, 单播通信不是必需的, 可以将其去除。在笔者的设计中, 单播通信的功能用相当的多播请求和应答来实现。对于单播发现, 相类似地由于CAN的广播特性, 也没有很大的用处, 但是如果去除, 则很难保证CAN消息ID的惟一性。同样的, 本研究仍然采用多播发现来代替单播发现, 在所有的情形下都只采用多播发现。多播通告都是单独用来从其他节点调用单播发现, 由于单播发现已采用多播发现替代, 多播通告也同样不是必需的。最终结果, 只需使用4种原始Jini消息中的两种, 即多播请求和单播应答, 而单播应答也是采用多播的方式发送。

“单播请求”与“多播请求”的交迭, 使得整个网络在实现有效的操作时会变得更加具有自适应能力。而查找服务在寻找发现请求时并不关心发现请求是通过单播还是多播请求的。同样的, 发现者也不关心查找服务的应答是通过单播还是多播发送的。所以, 仅采用两种消息类型并不会影响Jini机制的执行, 尽管看上去消息不再属于Jini消息协议。

5 结束语

本研究针对传统CAN总线车载网络中存在的网络容错性、灵活性等方面的不足, 结合Jini技术与CAN总线技术, 在传统CAN总线车载网络基础上设计了一个基于Jini的CAN总线自适应车载网络模型, 并对其关键技术的实现进行了详细阐述。研究结果表明, 通过利用Jini技术, 可以快速配置分布式计算环境, 在本研究中提到的车身控制系统中, 可以灵活地增加相应的实体节点 (如在图2所示的现有网络上加入空调控制器、收音机控制器等CAN节点) , 这些节点将共同运行在一个由Jini提供的community中, 每个设备可提供该community中的其他设备可能需要使用的服务, 从而提升了汽车网络的容错性、自配置性、灵活性等自适应特征。但由于汽车网络的特殊性, 其对实时性的要求非常苛刻, 建立的网络体系不仅需要具有很好的容错性、灵活性、自修复等等自适应特性, 还需要具有良好的实时性。本研究只设计了一个自适应车载网络模型, 对探索更高效的新型汽车网络具有一定的参考价值, 但在汽车网络的实时性要求方面还需做进一步研究。

参考文献

[1]操小军.车载网络系统及CAN协议的应用分析[C]//中国汽车工程学会2003学术年会论文集.北京:机械工业出版社, 2003:[s.n.].

[2]SILVA P M, SERODIO C M, MONTEIRO J L.A Java-based Controller Area Network Device Driver for Utilizationin Data Acquisition and Actuation Systems[C]//IEEE In-dustrial Electronics, ISIE2008.Cambridge:[s.n.], 2008:1855-1860.

[3]于铉.基于Jini体系结构的分布式系统研究[D].武汉:武汉理工大学计算机科学与技术学院, 2003.

[4]李廷元.Jini技术实用化研究[D].成都:电子科技大学计算机科学与工程学院, 2003.

[5]KADOWAKI K, KOITA T, SATO K.Design and Imple-mentation of Adaptive Jini System to Support UndefinedServices[C]//IEEE Communication Networks and ServicesResearch Conference, 2008.Halifax:[s.n.], 2008:577-583.

[6]魏雄武.CAN与汽车网络技术[J].上海汽车, 2005 (7) :35-38.

[7]魏学哲, 孙泽昌, 陈觉晓.一种新的汽车网络分类方法及其主流协议的发展趋势[J].同济大学学报, 2004, 32 (6) :764-766.

[8]王斌杰, 吴卿, 赵俊杰.基于汽车电子网络的CAN总线简化型混合调度算法[J].机电工程, 2009, 26 (172) :54-57.

[9]NUSSER G, GRUHLER G.Dynamic Device Managementand Access based on Jini and C CAN[C]//Proceedings ofthe Seventh International CAN Conference.Amsterdam:[s.n.], 2000:[s.n.].

总线网络设计 第10篇

PROFIBUS是由Siemens等公司组织开发的一种国际化的、开放的、不依赖于设备生产商的现场总线标准,是目前国际上通用的现场总线标准之一[1,2]。在PROFIBUS现场总线中用于传感器和执行器高速数据传输的PROFIBUS-DP应用最广[3,4]。基于PROFIBUS-DP总线的典型组网结构为1主站+多从站或多主站+多从站的主从结构[5]。无论哪种组网结构,在大中型工控系统中,为便于直观了解当前运行状态,监控站(通常为PC)往往都不可或缺。本文开发了一个基于PROFIBUS总线的上位机、下位机通信平台,为在上位机提高监控系统的实时性,自主定制模块功能奠定了基础,而且大幅节省购买通用HMI开发平台的成本。

1网络组态与监控站开发平台选择

在含有监控站的前提下,通常有如下2种网络配置方案[6]。

方案1:PLC或控制器做一类主站,监控站做二类主站,两者保持各自的相对独立性。

方案2:PC+PROFIBUS网卡做1类主站,监控站与1类主站一体化。

2种方案功能完全一样,不过显然后者比较经济。以第2种方案为基础又有如下2种方案来开发监控站程序。

方案1:采用工控领域流行的组态软件,如FIX,WINCC,组态王等,开发人员无需了解组态软件与网卡的通信技术细节,直接进行监控程序开发[7]。这种方案开发周期短,效率高。但组态软件往往体积庞大、处理速度慢,以WINCC为例,其最短采集周期为100 ms,不能很好地满足高实时性系统的要求;内部运行机制不开放,是一种“黑箱”操作模式,进行二次开发往往费时用力不得其法;功能或不足或多余,灵活性差,且成套系统价格昂贵[8]。

方案2:采用通用软件,如VC++、VB利用SIMATIC NET提供的驱动程序先构建一个基于PROFIBUS总线的通信平台,然后自主开发上位机监控程序。此种方案开发工作量较大、周期较长,具有一定的挑战性。但此种方案能够提高实时性,采样周期可以降低到10 ms的数量级;能够在上位机按需定制不同的功能模块,而且易于进行功能扩展,为一般工业组态软件不能满足的特异性、个性化要求的问题提供了一条解决途径;大幅降低开发成本(约节省80%的费用)。

根据上述方案的特点,考虑到项目的复杂性、特殊性、长周期性等实际情况,本文开发了基于PROFIBUS总线的上位机、下位机通信平台,为自主开发监控站程序奠定了基础。

2系统结构

系统采用单主站+多从站的典型配置结构,由PC+PROFIBUS网卡(本文采用CP5611,下同)作为主站,CPU314C-2DP(三套)作为智能从站。三套CPU314C-2DP中的第一套实现对气压的精密控制;第二套实现对气温的精密控制;第三套结合变频器MM40实现对电机的调速控制,进而实现对气体进、出口流量、液体循环速度、搅拌器搅拌速度的控制。这三套系统都另外配置了若干必须的DI,DO,AI,AO模块。考虑气体温度、压力、流量之间的耦合关系,在上位机进行协调。系统整体结构如图1所示。

PROFIBUS-DP主站与从站间基于主-从原理进行通信,DP主站依轮循表逐次访问DP从站,主站与从站间周期性地的交换数据。每次访问由主站首先发出请求报文,从站返回应答或响应报文。

3下位机网络组态的实现

3.1 创建工作站

SIMATIC NET是一个开放、高效的工业通信网络,能够提供符合ISO/OSI网络参考模型的适用于工业环境下各种控制级别的通信系统[9]。它同时集成了多种网卡的驱动程序,并为用户提供统一的Windows画面。利用SIMATIC NET提供的APC(Advanced PC Configuration)高级配置工具,能够实现对PC+CP5611作为一体化工作站的配置。具体步骤如下:

第1步:启动软件,创建工作站PCStation,工作站名称需与Step 7中的工作站名完全相同;第2步在在站内增加一个组件Application;第3步根据实际硬件在站内增加网络通讯卡(如:CP5611),并对主站地址、通讯速率、总线类别进行设置。配置结果如图2所示。

3.2 网络组态

启动SIMATIC Manager软件,新建一个工程,首先插入一个工作站,此工作站务必与此前的工作站名字一致,然后插入3个SIMATIC 300站点。对工作站进行组态时,依次将Application,CP5611配置到站内,并将CP5611设置为系统主站。然后进入SIMATIC 300进行组态,由于CPU314C-2DP默认组态方式为DP Master主站模式,将3个CPU314C-2DP重新设置为DP Slave从站模式,并为每个从站配置不同的站地址,同时还必须设定该从站与上位机的数据交换区,否则编译不能通过。之后重新进入工作站,将3个从站(理论最大可以连接128个从站)与一个主站进行组网,组网完成后需要依次对工作站、从站进行编译,最后还需要对顶层工程的PROFIBUS网络进行编译。系统组网结果如图3所示。

3.3 通信缓冲区设置

S7-300系列的PLC通信缓冲区最大为32 B,如果需要传输超过32 B的数据,可以通过配置多个缓冲区的方式进行扩展。实际上,CP5611供通信使用的实际物理存储区大小为32 768 B,CPU 314C-2DP供通信使用的实际物理存储区大小为1 024 B。但考虑到上位机驱动程序中为每个从站仅预留了256 B,即一次通信最多传送256 B,所以下位机缓冲区总大小一般不宜超过256 B。如果需要传输的数据超过256 B,可以分多次进行传输。以每次传输144 B的数据为例,缓冲区配置结果如图4所示。

4上位机通信程序设计

4.1 程序结构

在Windows环境下,基于VC++6.0开发PROFIBUS-DP应用程序应首先包含CP5611通信卡驱动程序提供的库文件DPNLIB_LIB和头文件DPN_USER.H,DP应用程序通过调用通信网卡CP5611的库函数,获取对网卡和总线的控制权,进而通过PROFIBUS总线实现与下位机的数据交换。

典型PROFIBUS-DP应用程序含3个阶段,初始化阶段,运行阶段和关闭阶段。任一阶段保证程序正常运行和为使用其他函数提供前提的基本函数必须调用,然后根据需要有选择的调用其他函数。图5为DP应用程序结构[10]。

图5灰色框内为必选函数,其他为可选函数。其中dpn_set_mode()函数仅当DP应用程序设定主站、从站交互状态为DPN_SYS_CENTRAL或DPN_ROLE_CENTRAL状态时为必选。

4.2 程序实例

以上位机(假定地址为5)与一台与下位机(假定地址为4)进行数据交换为例:上位机应用程序包含通信初始化、数据发送、数据接收、通信复位4项功能,具体实现步骤如下:

(1) 通信初始化,主要包括板卡的选择及初始化,上位机、下位机的交互方式的设置。程序代码如下:

dpn_ptr.length = 5; //从站个数

dpn_ptr.user_data[0] = DPN_SLV_NO_ACCESS; //从站属性

dpn_ptr.user_data[1]= DPN_SLV_NO_ACCESS;

dpn_ptr.user_data[2] = DPN_SLV_WRITE_READ;

dpn_ptr.user_data[3] = DPN_SLV_WRITE_READ;

dpn_ptr.user_data[4] = DPN_SLV_WRITE_READ;

//主站、从站交互状态

dpn_ptr.reference.access=(DPN_SYS_NOT_CENTRAL | DPN_ROLE_NOT_CENTRAL);

dpn_ptr.reference.board_select = 1; //板卡选择

dpn_init(&dpn_ptr); //板卡初始化

int error = dpn_ptr.error_code; //错误处理

(2) 数据发送。系统控制参数一旦更新,上位机立即将新参数发送到下位机。上位机、下位机事先将参数的更新约定若干类型。每次根据更新参数的实际情况将更新类型与参数一起打包整体发送,下位机接收数据后根据更新类型来更新相关参数。程序代码如下:

char ch[10];

for (int m = 0; m < 35; m++) //获取参数当前值

{

GetDlgItemText(m, ch, 10);

m_Para[m] = float(atof(ch));

}

dpn_ptr.reference.board_select = 1; //板卡状态

//主站、从站交互状态

dpn_ptr.reference.access=(DPN_SYS_NOT_CENTRAL | DPN_ROLE_NOT_CENTRAL);

dpn_ptr.stat_nr = 4; //数据目的从站地

memcpy(dpn_ptr.user_data, (char*)&m_Para, 144); //将数据及标志字复制到缓冲区

dpn_ptr.length = 144; //数据长度,必须与从站定义一致

int error = dpn_out_slv(&dpn_ptr); //发送数据,并返回发送状态

(3) 数据接收。上位机根据先前与下位机约定的周期定时读取数据。通过标志字对数据的有效性进行判定。存在这样一种可能,某次更新参数后,下位机还没有发送新数据,上位机的读取时间到,此时会将这些参数误认为下位机数据。为此需要在一组数据内设置标志字,以示区分。

//主站、从站交互状态

dpn_ptr.reference.access=(DPN_SYS_NOT_CENTRAL | DPN_ROLE_NOT_CENTRAL);

dpn_ptr.reference.board_select = 1; //板卡选择

dpn_ptr.stat_nr = 4; //从站地址

dpn_ptr.length = 255; //允许数据长度

int error = dpn_in_slv(&dpn_ptr); //读取数据并返回读取状态

char *ps1;

ps1 = ( char*)&m_ReadBuf; //数据缓冲区

memcpy(ps1 + 12, dpn_ptr.user_data + 140, 4); //读取标志字

if (0.5 > m_ReadBuf[12]) //判断数据是否有效

{

memcpy(ps1, dpn_ptr.user_data, 48); //48个字节

}

(4) 通信复位,系统正常关闭、出现故障、通信初始化失败均需要对板卡进行复位。

//主站、从站交互状态

dpn_ptr.reference.access=(DPN_SYS_NOT_CENTRAL | DPN_ROLE_NOT_CENTRAL);

dpn_ptr.reference.board_select = 1; //板卡选择

int ErrorCode = dpn_reset(&dpn_ptr); //板卡复位,并返回复位状态

4.3 实验结果

利用上述程序实例可以实现对PLC从站中控制过程的参数设置和状态监测。以气压精密控制为例,利用该方案可以通过上位机GUI设置控制器的参数并对控制对象的压力值进行实时显示与记录,如图6所示。

5结语

本文首先分析了基于PROFIBUS-DP总线的组网及上位机监控系统的开发方案。然后主要从开发的角度阐述了如何利用SIMATIC NET提供的驱动程序构筑基于PROFIBUS-DP总线的上位机、下位机通信平台。本平台较之工业组态软件,实时性提高了一个数量级,并为解决大中型工控系统一些工业组态软件无法满足的特异性和灵活性问题奠定了通信基础。由于平台采用通用的开发工具自主开发,不仅大大降低了系统成本,而且可用较小的代码量定制完善的系统功能,因而该方案在大中型工控系统中有较大的推广应用价值。

参考文献

[1]廖常初.S7-300/400PLC应用技术[M].北京:机械工业出版社,2006.

[2]李正军.现场总线及其应用技术[M].北京:机械工业出版社,2006.

[3]杨菲.基于以太网的PROFIBUS测试平台的研究[D].北京:北京交通大学,2010.

[4]陈月婷,何芳.PROFIBUS现场总线技术及发展分析[J].济南大学学报,2007,21(3):226-230.

[5]韩辰.PROFIBUS-DP典型应用系统研究[D].哈尔滨:哈尔滨工业大学,2008.

[6]史建平.S7-300PLC构成PROFIBUS-DP网络的原理及应用[J].铁路计算机应用,2002(6):22-24.

[7]刘泽祥.现场总线技术[M].北京:机械工业出版社,2005.

[8]王文磊.基于SIMATIC NET的实时监控关键技术的研究[D].镇江:苏州大学,2006.

[9]王建.SIMATIC NET工业通信网络在连铸控制系统中的应用[J].中国仪器仪表,2008(10):46-49.

总线网络设计 第11篇

[关键词] CAN总线 RS485总线 CAN/485 PIC18F248

1引言

RS485是一种最早流行的串行通信协议,由于采用了差分电平传输技术,RS485传输距离比RS232更远、抗共模干扰能力更强,因此很适合在工业现场应用,工业现场设备如变频器、可编程控制器等都带有RS485接口。但与CAN总线等更为先进的现场工业总线相比,RS485只有物理层,构成的通信系统只能采用主从结构,使用不便;另外,它在传输速度、传输距离和传输可靠性等性能上也不如CAN总线。因工业现场组网改造的需求,我们要把具有RS485接口的装置、智能仪表等接入CAN总线网络,那么能实现RS485和CAN总线协议相互转换的接口卡是必不可少的。本文对RS485与CAN总线通信过程中遇到的协议转换问题进行了研究和分析,设计出了一套适合于工业现场使用的CAN/RS485接口卡,并给出了系统的软、硬件实现方案。

2设计思想及原理

从硬件上考虑,网关要能实现RS485逻辑电平和CAN总线标准逻辑电平间的相互转换;由于该接口卡要在工业现场应用,所以要求接口卡设计能实现电气隔离、具有强抗干扰能力、低功耗和总线供电,这也是本系统设计的重点和难点。从软件考虑,接口卡应能实现RS485协议与CAN总线协议间的转换。综合以上情况,本系统的设计原理如图1所示:RS485总线上的数据经过485接口芯片后变成TTL电平,并输入到微处理器进行处理;CAN总线数据的收发由CAN总线控制器和CAN总线收发器来完成;协议的控制和数据的转换则由微处理器来完成。

图1 系统原理图

3系统硬件设计

3.1主系统设计

由于应用环境特殊,接口卡要能实现电气隔离和总线供电、要具有强抗干扰能力和低功耗及便携等特点,因此在系统设计中所采用的芯片均是低功耗、体积小的贴片封装;卡上设有光电隔离模块,以实现完全电气隔离,使CAN/485具有很强的抗干扰能力,大大提高了其在恶劣环境中使用的可靠性。主系统电路图如图2所示,主要由微控制器及其外围扩展电路、CAN总线通信电路和RS485接口电路三部分组成。

图2 主系统电路图

3.1.1 CAN总线通信设计

在设计CAN总线通信电路时,可以选择独立的CAN控制器如82C200、SJA1000等,但独立的CAN控制器芯片需要外接一个微处理器来接收外部的控制。在本系统设计中,我们选择了内部带有CAN控制器的单片机PIC18F248,它不需再外扩CAN接口,只需加一个总线驱动芯片即可,方便了系统调试并大大简化了系统的硬件设计。

PCA82C250是PHILIPS公司生产的CAN总线驱动器,它将PIC18F248单片机CAN控制器输出引脚的TTL电平转换为CAN总线上的差分信号。在硬件电路设计时应注意的是,在通讯总线两端应各接一个120欧的总线匹配电阻,否则数据通讯的抗干扰性及可靠性大大降低,甚至无法通讯,这在工业现场表现得尤为突出。

为增加系统的抗干扰能力,在PCA82C250与PIC18F248单片机CAN控制器输出、输入引脚(RB2、RB3)之间使用2个高速光电耦合器6N137,以实现总线与控制器的隔离。整个系统的节点控制器都通过PCA82C250与CAN总线相连,以保护总线不受瞬态冲击的影响,并可以提高节点的总线驱动能力,增强系统抗电磁干扰能力。

3.1.2 微控制器部分设计

PIC18F248是Microchip公司2002年研制出的具有CAN总线接口的高性能的单片机,它的CAN模块的主要特性有:完全支持CAN2.OA和CAN2.0B协议,数据长度为0-8个字节,最高通讯速率可达1M b/s,具有对已经接收到缓冲器中的信息进行两次排序的双重缓冲器,6个接收滤波器,可编程的唤醒功能,可编程的反馈模式能进行自我测试操作,对于所有的CAN接收和传输错误的情况都能进行信号中断等。

3.1.3 RS485接口电路设计

RS485接口电路采用使用了一种RS485接口芯片SN75LBC184,与普通的RS485芯片相比,它不但能抗雷电的冲击而且能承受高达8 kV的静电放电冲击,可承受高达400 V的瞬态脉冲电压,能显著提高防止雷电损坏器件的可靠性,尤其适用于一些环境比较恶劣的现场。

在图2中,四位一体的光电耦合器TLP621使PIC18F248与SN75LBC184之间实现了完全的电隔离,提高了工作的可靠性。基本原理为:当PIC18F248的管脚RB4 =0时,光电耦合器的发光二极管发光,光敏三极管导通,输出高电压选中RS485接口芯片的DE端,允许发送。当单片机PIC18F248的管脚RB4 =1时,光电耦合器的发光二极管不发光,光敏三极管不导通,输出低电压,选中RS485接口芯片的RE端,允许接收。同时,在SN75LBC184的R端(接收端)和D端(发送端)与PIC18F248之间使用2个高速光电耦合器6N137,以实现总线与控制器的隔离,增加系统的抗干扰能力。

3.2电源设计

由于光耦器件6N137两侧电源必须完全隔离,因此在本系统设计中需要三组隔离的电源供电。工业现场一般只提供9V的直流电源,而系统工作电压为5V。为此,在电源设计时需先将9V的直流电压经过低压差电源芯片LM1117,使输出电压变为5V;然后将5V直流电压经过DC-DC电源模块从而得到隔离电压。其连接图见图3:

图3 系统电源设计

4系统软件设计

CAN/485接口卡的主要任务是实现CAN总线与RS485总线间的通信,完成二者的协议转换。在本系统中,CAN总线通信采用CAN2.0B协议;而RS485总线只有物理层,它的通信协议要根据应用情况来制定。系统软件设计流程如图4所示:

图4 系统软件流程图

其中,PIC18F248单片机CAN模块的初始化是软件设计重点和难点,其初始化流程图如图5所示:

图5 CAN初始化流程图

5总结

本文结合工业现场生产的特点和需求,设计了一种基于PIC18F248的CAN总线与RS485总线之间的接口卡。该接口卡集成有1个RS485通道和1个CAN通道,可以很方便地嵌入到使用485接口的网络节点中,从而无需改变原有硬件结构就可获得CAN通信接口,实现CAN总线数据与RS485总线数据之间的互连通信。该接口卡能实现电气隔离、具有强抗干扰能力、低功耗和总线供电,而且体积小便于携带,很适合在环境恶劣的工业现场中使用。同时,本系统为CAN总线与RS232总线间的通信提供了参考,在此基础上也可将本系统扩展为多功能接口卡,通过跳线进行选择以实现CAN/485或CAN/232转换功能。

参考文献:

[1] 丁恩杰.监控系统与现场总线.江苏徐州:中国矿业大学出版社,2003.

[2] 刘和平,刘钊,郑群英,等.PIC18F×××单片机程序设计及应用.北京:北京航天航空大学出版社,2005.

[3] 张湘,张弢.列车总线控制系统的CAN-485总线网关设计[J].自动化与仪器仪表,2003(2).

作者简介:

总线网络设计 第12篇

陆上客运的安全性已 成为当今 社会焦点 话题,基于CAN总线和GPRS网络模块的大客车座椅安全带实时监控系统,能将每一位乘客的安全带系带情况反映到前方司机的触摸屏上,以便司机随时了解每一位乘客是否系好了安全带并作出相应举措,从而对车内乘客起到 保护作用[1]。此外,系统还可 以将大客车上的乘客上座率自动发送给汽车营运公司,以便公司人员实时了解客车上座率。主要设计工作是开发一套单片机 数据采集和计算机数据处理程序,目标是提供一套成本低、功能全面的大客车座椅安全带实时监控系统。

本文对大客车安全带监控的必要性和当前存在 的问题进行了分析,提出了基于CAN总线和GPRS网络模块的系统总体方案,并对各单元功能进行了描述,分析了CAN主机和网络节点的通信协议设计和技术特点等[2]。

1基于 CAN 总线和 GPRS 网络模块的系统总体方案

1.1大客车座椅安全带实时监控系统方案架构

基于CAN总线和GPRS网络模块的大客车座椅安全带实时监控系统主要由主机系统(数据处理系统)、从机系统(座椅检测系统)和上位机系统(信息监控系统)3个子系统组成,其结构如图1所示。

其中,从机系统主要由单片机(包括主控制芯片、外设模块和电源模块)和传感器构成,能实现座椅状态的检测以及通过CAN总线向主机传输数 据。主机系统 主要由单 片机(包括主控制芯片、外设 模块和电 源模块)、GPS模块、SIM300模块和DGUS串口显示屏构成,能实现CAN总线以及GPRS网络数据的接收与发送,DGUS串口屏的显示与人机交互。上位机系统由连接有外网IP的计算机构成[3]。车载终端软件的设计任务主要有以下5个部分:CAN总线驱动、GPRS驱动、DES数据加密算法、人机交互、SD卡数据存取。

1.2大客车座椅安全带实时监控系统工作原理

从机负责监测大客车内1~3个座椅的4种状态:有人已扣安全带、有人 未扣安全 带、无人已扣 安全带、无人 未扣安全带。多个从机通过CAN总线构成网络,监测客车内所有座椅的状态。主机通过CAN总线轮询从机,获得所有座椅的状态,并将状态信息在DGUS串口显示屏上显示:无人已扣安全带、无人未扣安全带显示为黄色;有人已扣安全带显示为绿 色;有人未扣安全带显示为红色,并发出警告。

主机通过SIM900A模块获得 客车的位 置信息,并控制SIM900A模块通过GPRS网络与上位机进行信息交互,发送车内安全带佩戴情况以及客车位置信息数据。其中,从机MCU控制器通过检测传感器,获得座椅是否有人以及安全带是否佩戴的信息。主机MCU控制器通过CAN总线轮询每个从机,并获取从机发送的数据包,从而获得大客车每个座椅的状态。上位机通过SocketAPI监听固定IP地址,主机MCU控制器通过控制SIM900A模块,使其连接 上述IP地址,以此实现GPRS网络通信[4]。

2CAN 主机和网络节点的通信协议设计及技术特点

2.1微控制器电路设计分析

座椅检测系统采用意法半导体公司型号为STM8S208的MCU作为主控 芯片,其具有可 靠性高、成本 低等优点。STM8S208芯片的主要特性 为:工作电压2.95~5.5V;CPU工作频率24MHz;多达128kB的Flash,6kB的RAM,2kB的EEPROM;beCAN2.0B的传输速率 高达1 Mb/s;较为灵活 的时钟选择;2个UART和1个SPI接口;1个I2C接口。系统的外界晶振为24 MHz,芯片的PG1、PG0管脚为系 统引出的CAN接口,用于CAN总线通信[5]。

2.2数据处理系统硬件设计分析

数据处理系统采用意法半导体公司型号为STM32F103的32位MCU作为主控芯片。STM32F103的主要特性如下:工作电压2.0~3.6V;工作频率 最高72 MHz;闪存程序 存储器128kB;SRAM高达20kB;DMA控制器为7通道,支持的外设有定时器、ADC、SPI、I2C和USART;I/O端口多达80个;定时器多达8个;通信接口 多达9个,包括2个I2C接口、3个USART接口、2个SPI接口、1个CAN接口和1个USB接口[6]。数据处理系统主控芯片及其外围电路如图2所示。

2.3GPS+GPRS 模块信息的传输

本系统的GPS+ GPRS模块采SIMCOM公司生产 的SIM900A模块,它是一个双 频的GSM/GPRS模块,工作频段为EGSM900 MHz和DCS1800 MHz,供电电压 为3.2~4.8V。SIM900A支持GPRSmultiple-slotclass10/class8(可选)和GPRS编码格式CS-1、CS-2、CS-3和CS-4。其工作方式为通过TCP/IP协议连接到指定的IP地址,与GPS模块进行通信,获得位置信息[6]。系统与SIM900A模块使用 串口通信,系统通过发送串口指令,控制SIM900A模块完成短信的发送、电话的拨打接听、GPRS网络的连接以及数据的接收与发送等功能,使系统实现无线发送、接收数 据,令系统更 加灵活易 用[7]。为完成数据打包 与解析,传统的方 式是:用1个字节存 储ID信息,1个字节存储起始的座位号,1个字节存储检测的座位数量N,再用N个字节表示对应的每个座椅的状态信息,再给这段数据加上帧头帧尾以及CRC校验等,保证数据传输的可靠性。

2.4显示模块

系统的显示 模块采用 北京迪文 科技有限 公司生产 的DMT80480T070_18WT工业串口 屏,该显示屏 规格为7.0英寸、800×480图形点阵、K600+ 内核和65K(65536)色。输入电压为6~42V,支持SD卡配置,并可通过SD卡下载。该显示屏与数据处理系统主控芯片的通信采用串口通信协议,串口波特率为1200~921600(可调节)。

3系统软件设计

系统软件由主程 序、CAN总线通信 子程序、定时 器子程序、延时子程序等组成。主程序流程图如图3所示。主程序上电复位后,完成系统时 钟、EEPROM以及CAN、GPIO等的初始化,随后配置CAN的接收中断,完成所有准备工作。为保证座椅安全带实时监控系统能够正确接收需要的信息,即能接收数据处理系统发送的指定为自身接收的数据,自动过滤数据处理系统发送给CAN总线中其他节点的信息以及CAN总线中其他节点发送给数据处理系统的信息,系统配置CAN报文的过滤机制为标识符模式。

4结语

上一篇:材料形变下一篇:资源数字化