ImageVerifierCode 换一换
格式:DOCX , 页数:6 ,大小:87.28KB ,
资源ID:7567368      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7567368.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(1553B总线控制器设计与调试.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

1553B总线控制器设计与调试.docx

1、1553B总线控制器设计与调试1553B总线控制器设计与调试丁明亮 庄喜盈 王虎锋(中国空空导弹研究院,河南 洛阳 471009) 摘 要 本文分析了1553B的工作原理,提出了总线控制器控制方法的设计和总线控制器控制软件的设计,给出了部分中断代码,并结合笔者经验分析了1553B系统连接与调试应注意的一些问题。 关键词 1553B总线;总线控制器;调试1 引言 1553B总线是美国军用标准MIL-STD-1553B定义的一种串行总线的传输形式。由美国于20世纪70年代提出,总线的组成包括一个总线控制器(BC),若干个(最多31个)远程终端(RT),如果需要的话还可以加上负责监视总线信息的总线监

2、视器(BM),1553B总线通讯之所以得到如此广泛的应用,就是其具有以下特点: (1)强调实时性,1553B的传送速率为1Mb/s,传输速率快。 (2)1553B总线按指令/响应的方式异步操作,即总线上所有的消息传输都由总线控制器发出的指令来控制,相关终端对指令应给予回答并执行操作。这种方式非常适合集中控制的分布式处理系统。 (3)1553B总线是双冗余的传输线,总线都是双备份的,如果总线通讯不通,系统将会根据BC初始化时候的设定自动选择通讯重试,增强了系统的可靠性。总线控制器是总线信息通讯的发起者和组织者,因此对BC控制的好坏将直接影响到总线通讯的质量。2 总线的控制方法设计 总线控制器是总

3、线信息通讯的发起者,同时总线上所有信息的传输又均由BC来控制和激励,其简单的通讯过程为:BC向RT(或多个RT)发送一个发送或者接收指令,如果为接收指令,指令后会携带需要RT接收的数据字,RT接收到命令字后,在给定的相应时间范围内返回一个状态字,并执行相应动作。如果为发送指令,RT只需接收BC发送的数据字,然后返回状态即可。 在1553B总线上通讯的信息多种多样,所以针对不同的背景要有不同的总线设计方法,对于结构单一、数据量较少系统,总线上数据的活动不是很频繁,可以采取比较简单的方法:对周期性传输的消息采用固定周期来定时传输,对一次性消息采用命令插入的方式,要求RT返回数据的采用查询方式向RT

4、的子地址下达命令字来获取数据。 如果通讯比较复杂,甚至有多个RT时,这时再采用上面的方式就使得BC需要同时发送大量命令字来查询多个RT的子地址,这样势必给通讯带来沉重负担,因此可以采用另外一种矢量字方式,将发送消息的主动权交还给发送方(RT),具体的实现方法就是:RT在接收到BC的命令之后,完成相应动作(例如自检),动作完成后将数据字写到相应的子地址BUF中,然后按照协议构造矢量字,再把矢量字发送到RT的0/31号子地址(只能是0或31号子地址),BC在发送完一次性消息后就可以向0/31号字地址发命令字,然后读得该子地址内存放的矢量字,然后根据协议解析矢量字,从而向从矢量字中得到的子地址发送命

5、令,从而得到BC想要得到的RT数据。这样处理既可保证通讯数据量明显较小,又可以保证消息传输实时性,同时又使软件的设计具有更多的灵活性。 为了保证1553B通讯能够适应更多更复杂的情况,BC还提供了很多特殊的功能给用户,使用户可以根据自己的需求来使用这些特殊功能,以满足特殊的系统要求: (1)自动重试:BC进行初始化的时候可以进行设定,根据需求来设定BC的重试条件。 (2)动态总线控制:总线控制器向一个有执行总线控制能力的远程终端发送一个转让控制的指令字,如果远程终端接受总线控制,总线控制权就交给了这个远程终端。 (3)启动自检测:总线控制器可以用指令使远程终端激活其内部的自检电路。3 总线控制

6、器的软件设计 由于BC在总线上面的特殊性,其软件设计的好坏将直接影响整个系统通讯的流畅、可靠,软件设计归结起来有以下几个注意的地方: (1)中断方式的选择:对于总线消息而言,都是总线控制器将这些消息组织成一个一个的总线帧来传输的,一帧也就是平时说的一个总线周期。在设计软件中断时可以采用单个消息触发一次中断,也可以选择一个总线周期进一次中断,当然最快的就是单个消息就进入中断,这样可以保证每个消息结束后就能够马上得到处理,实时性好。但是每条消息都执行中断程序无疑对软件运行效率也是有影响的,所以减少中断次数对软件系统还是有利的,但是减少进中断次数又是以牺牲系统实时性为代价的,两者相比较笔者建议如果通

7、讯数据量不是很大的情况下尽量采用单条消息中断的方式,同时尽量简化中断程序执行的代码,提高程序的效率。如果有多个RT且数据量很大,可以考虑一个周期进行一次中断。 (2)总线的重试与消息重复:当消息中出现状态地址错,字计数错,同步类型错,校验错时总线会进行标记,所以设计程序时应当打开错误检测位。同时由于1553B总线是多余度总线,当某一个总线出现差错时,系统会根据设定在另外一个BUS上重试,也可以在本条总线重试,所以在程序设计时要灵活运用。然而对总线上的广播消息,由于这类消息没有状态返回,因此总线重试的意义在这里就没有了。 (3)避免冲突:总线设计必须考虑到各个终端的响应及处理,在安排通讯时应该避

8、免对同一终端地址连续发送总线消息(针对同一子地址的连续消息发送除外),由于大多数终端的通讯处理是在中断情况下进行的,如果连续发送则有可能使终端丢失消息或者处理冲突,所以总线要给同一终端留下足够的处理时间。 下面是笔者编写的总线控制器程序中的部分代码: /中断函数/ ViInt32 _stdcall demo_rt_watch_function(ViUInt32 cardnum,ViUInt16 chnum,struct api_int_fifo *sIntFIFO) ViUInt32 tail; / FIFO Tail index ViUInt32 messno,wordcount,i=0,j

9、=0; / Message number to be updated ViStatus hr; API_BC_MBUF api_message; ViUInt16 rtaddr,subaddr,transrec; API_RT_MBUF_READ mbuf; /* * Loop on all entries in the FIFO. Get the tail pointer and extract * the FIFO entry it points to. When head = tail FIFO is empty */ tail = sIntFIFO-tail_index; while

10、(tail != sIntFIFO-head_index ) / Extract the buffer ID from the FIFO and read the message from the board messno = sIntFIFO-fifotail.bufferID; if (sIntFIFO-fifotail.event_type=EVENT_BC_MESSAGE) hr=Eph6273_BC_MessageRead( cardnum, / (i)card number (0 - based) chnum, / (i)channel number (0 - based) mes

11、sno, / (i)index of BC message to read &api_message); / (o)users buffer to write message into tail+; / Next entry tail &= sIntFIFO-mask_index; / Wrap the index sIntFIFO-tail_index = tail; / Save the index return API_SUCCESS;4 1553B总线系统连接与调试 1553B总线采用双铰屏蔽线传输,当终端离总线很近时(0.3米)可以直接通过隔离变压器与总线连接,当终端离总线较远(最远

12、不应超过6.1米)时要在变压器与总线之间插入耦合器。这两种方式比较变压器耦合具有更好的抗干扰能力,能用在长距离的通讯上,而直接耦合不利于RT故障的隔离,会因为某一个RT故障造成系统网络的通讯不正常。图1就是一个简单的系统连接图,当然设计者可以根据系统需求在总线上连接更多的终端,也可以挂总线监视器用以监视总线信息。图1 简单的1553B系统连接图 系统连接完成之后就要对系统进行通讯调试,系统调试是一项至关重要的工作,程序设计和系统连接中的问题都会在这个时候一一的暴露出来,这时对设计人员的实际处理问题能力和经验提出了要求,结合自己的经验对系统调试提出以下几点建议: (1)系统连接完成之后不要急于加

13、电,断开连接,用导线引出BC端的正负两个管脚,接在示波器上,让BC发送一些简单的数据,然后用示波器监视读取这些数据看是否正确,1553B总线上面的信息是以消息的形式调制成曼彻斯特码进行传输的,逻辑1是编码的1/0,逻辑0是编码的0/1。命令字和状态字的开头是前1.5位时为正后1.5位时为负的同步头,数据字是前1.5位时为负后1.5位时为正的同步头,同步头后面就是数据。据此可以分析波形确定数据。图2为实验中抓下的一条全0的命令字,前面先高后低的3个字位为同步头,代表了命令字(状态字的同步头也是这样),后面16位为指令字的数据,最后一位奇偶校验位为0表示为奇校验。 这样做的目的是保证BC发出的数据

14、是基本正确的(包括时序和电平高低),设计人员构建系统的1553B芯片或板卡可能来自不同的厂家,甚至有自己单位研制的,这样可以避免出现一些例如正负管脚接反等低级错误。 (2)系统调试要先易后难,1553B通讯的消息类型多种多样,有非周期发送数据,也有非周期性发送命令字读取数据,有周期性发送的数据,也有周期性发送命令读取数据,也有这几种方式的组合。我们在调试时候应当先调试简单的单独通讯模式,BC发送一个数据字测试RT是否能收到,RT返回的数据BC是否能收到,收到的数据是否正确等。简单的调通后进而调试组合的等比较麻烦的通讯。另外调试时应多用芯片自带的例子程序来帮助调试,这样能起到意想不到的效果。 (3)调试时还应当注意一些关键性的细节。例如系统单独运行正常,但是连接起来通讯就不正常了,考虑是否是没有进行地址校验导致的,或者是中断服务程序中内容过多导致中断处理时间过长而耽误了通讯。图2 命令字波形图5 结束语 1553B通讯比较复杂,设计和调试都存在不小的困难,本文结合自己调试1553B系统的一些经验和教训和大家进行了分享,希望能够为相关的设计人员提供一点帮助。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1