首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 维修教程知识 > 单片机栏
1553B总线控制器设计与调试
来源:本站整理  作者:佚名  2009-06-25 10:16:45




    (2)总线的重试与消息重复:当消息中出现状态地址错,字计数错,同步类型错,校验错时总线会进行标记,所以设计程序时应当打开错误检测位。同时由于1553B总线是多余度总线,当某一个总线出现差错时,系统会根据设定在另外一个BUS上重试,也可以在本条总线重试,所以在程序设计时要灵活运用。然而对总线上的广播消息,由于这类消息没有状态返回,因此总线重试的意义在这里就没有了。
    (3)避免冲突:总线设计必须考虑到各个终端的响应及处理,在安排通讯时应该避免对同一终端地址连续发送总线消息(针对同一子地址的连续消息发送除外),由于大多数终端的通讯处理是在中断情况下进行的,如果连续发送则有可能使终端丢失消息或者处理冲突,所以总线要给同一终端留下足够的处理时间。
    下面是笔者编写的总线控制器程序中的部分代码:
    ////////////中断函数////////////////////
    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=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 (tail != sIntFIFO->head_index )
        {
        // Extract the buffer ID from the FIFO and read the message from the board
                 messno = sIntFIFO->fifo[tail].bufferID;
        if (sIntFIFO->fifo[tail].event_type==EVENT_BC_MESSAGE)
                 {
                                    hr=Eph6273_BC_MessageRead(
                              cardnum,        
// (i)card number (0 - based)
                              chnum,      
// (i)channel number (0 - based)
                              messno,         
// (i)index of BC message to read
                              &api_message);
// (o)user's 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米)可以直接通过隔离变压器与总线连接,当终端离总线较远(最远不应超过6.1米)时要在变压器与总线之间插入耦合器。这两种方式比较变压器耦合具有更好的抗干扰能力,能用在长距离的通讯上,而直接耦合不利于RT故障的隔离,会因为某一个RT故障造成系统网络的通讯不正常。图1就是一个简单的系统连接图,当然设计者可以根据系统需求在总线上连接更多的终端,也可以挂总线监视器用以监视总线信息。

上一页  [1] [2] [3] 

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)

推荐阅读

图文阅读

热门阅读

Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:31,253.91000 毫秒