精华内容
下载资源
问答
  • 基于ARINC664标准的AFDX通信协议概述

    千次阅读 2020-05-16 09:33:43
    图2 系统组成 基于AFDX网络的航空电系统 采用AFDX协议的模块化航空电子系统结构的通信系统具有以下特点: (1)开放式系统结构: 开放式系统结构是对接口、服务和支持形式等采用充分定义的、广泛使用的、公众支持的...

    原文:https://m.sohu.com/a/118254555_372691

    参考:https://www.doc88.com/p-0962547407940.html

     

     

    随着现代电子技术发展,机载导航、机载控制和机载娱乐设备等复杂航空电子系统的不断增多,航空电子系统之间协同工作的情况越来越多,因此,数据交换的频率和带宽需求也越发增大。传统的航空总线单向传输形式如ARNIC429、1553B等因为带宽太小已很难满足系统需求,

    随着90年代起波音公司B777民用客机的推出,一种双向传输的航空总线-ARINC629在飞机中进行应用。这种总线是在ARINC429的基础上,结合1553B的优点开发出来的。其规范所规定的数据传输速率为2Mbps,为1553B总线速率的2倍,基本上能满足现代航空电子系统高速数据的传输要求,但是,ARINC629总线因为系统复杂价格昂贵,制造商大规模推广成本较高。

    批发木制工艺品去哪里?

    广告

    批发木制工艺品去哪里?

    各大飞机制造商都在寻找一种能够推广的低成本总线技术,虽然互联网广泛使用的IEEE802.3以太网提供高速低成本,并具有广泛商业的用途。但是它不能提供航空电子系统所需的鲁棒性及不能保证的带宽和服务质量,因此,无法作为应用于要求实时性高、可靠性高和带宽大的新一代航空总线。为此,波音和空客公司合作进行研究,通过以太网技术(IEEES02.3)为基础,来建立下一代航空数据总线,这项研究促使航空电子全双工通信制以太网交换(AFDX)的诞生,使用AFDX技术能够在很大程度上提高航空计算机网络的通信性能,便于航空电子系统的扩展和维护,减少系统布线,减轻飞机重量,目前此系统已经成功应用于空中客车公司的A380飞机、波音公司的B787飞机上。

    AFDX基本原理:

    航空电子全双工通信制以太网交换(AFDX)是一个基于标准定义的电子协议规范(IEEE802.3和ARINC 664 Part7),用于航空子系统之间进行数据交换,理论传输速度比ARINC429速度快1000倍。

    图1 数据传输链路速度

    它提供一个高达24个终端系统的星形拓扑来连接从一个交换机桥接到其他的交换机内部网络。这个稳定性的网络允许连接冗余(双物理连接)来保证带宽和服务质量。AFDX还允许连接其他标准总线(如ARINCA29或者MIL-STD-1553等)到网络,并且允许通过网关和路由与其他适应ARINC-664但非确定的网络进行通信。AFDX地址没有采用IEEES02.3以太网标准,而是采用电信标准的异步传输模式的概念,这种对以太网标准的扩展使得在确定的网络中能够保证带宽和服务质量。系统组成见图2。

    图2 系统组成

    基于AFDX网络的航空电系统

    采用AFDX协议的模块化航空电子系统结构的通信系统具有以下特点:

    (1)开放式系统结构:

    开放式系统结构是指对接口、服务和支持形式等采用充分定义的、广泛使用的、公众支持的非专利规范,以完成系统功能的物理和逻辑实现,只需要做很小的更改就能在很广泛的系统范围内合理地使用。国际标准化组织定义了开放式系统互联参考模型(OSI),OSI将通信系统分成7个功能层,每一层执行一定的功能.这样把网络要执行的全部功能分解到相互独立、容易处理的若干层之中,并且相对独立,每层的改变不会引起其他层的改变。任意两个系统只要遵守此基准模型和相关标准协议就可以互联。生产厂家、管理配置、技术水平、复杂程度不同的系统只要遵守OSI分层模型协议.两个信息处理系统都可以互联进行通信。AFDX是一种开放式系统结构,满足开放式系统互连参考模型的要求。

    (2)资源共享:

    AFDX采用交换机技术,终端系统与交换机相连.就能与其它终端系统进行数据变换,电缆资源共享.使系统电缆数量减少,重量减轻。另外,在一个综合处理机箱中,各个不同的航电模块共享一个终端系统,通过终端系统与外界交换数据。而在传统的航电系统中,一个LRU对应一个总线接口单元,资源比较浪费。

    (3)分区技术:

    在航空电子系统中,一个核心模块可以支持一个或多个航空电子应用软件,并保证这些应用软件相互独立运行。对运行在核心模块上的多个应用软件按功能可划分为多个分区,一个分区由一个或多个并发执行的进程组成,分区内所有进程共享分区所占有的系统资源。操作系统对分区所占用的处理时间、内存和其它资源拥有控制权,从而使得核心模块中各分区相互独立。ARlNC653标准提出了在核心综合处理机上分区的概念,各个分区之间通过采样或排列端口进行通信.AFDX正好具有采样和队列端口.支持ARlNC653操作系统的这种分区技术。AFDX的。分区”技术也表现为将带宽分配给通信通道,AFDx一个数据源对应一个通信通道,即虚拟链路.一个终端系统可支持多条虚拟链路.这些虚拟链路集中在一条物理链路上,共享网络带宽。虚拟链路按照带宽分配间隔进行传输,不会引起碰撞。

    (4)有保障的服务(Guaranteed Service):

    AFDX网络与广域网的一大区别便是提供有保障的服务,能够控制传输的确定性和可靠性。AFDX的确定性主要提高在网络的最大传输延迟控制上,AFDX虚拟链路都有带宽分配间隔和最大的帧尺寸,传输过程中引起的抖动有一定的范围限制,是相对可控的。在这种机制保障下,AFDX帧可按一定的顺序,顺利地进行传输。AFDX网络还引入了余度的概念,帧可以同时在两条独立的路径上传输,接收端系统只接收先到达的有效帧,所以,AFDX网络具有一定的可靠性,满足航空电子系统的要求。

    (5)网络结构灵活、可扩展性强:

    AFDX网络拓扑结构为星型网络,一个交换机最多具有24个端口,交换机之间可以级联,扩大数目,一个终端的接入或拔出不会引起其他终端软件的更改。另外,AFDX可以分区域构成若干个局域网,每个局域网由功能相近的设备连接构成。各个局域网之间可通过交换机级联来连接,这种连接方式更接近于广域网的使用,适合分阶段开发的系统。

    ARlNC664标准定义的AFDX网络具有高实时性、高确定性和高可靠性的特点。在航空领域,模块化设计越来越普及的今天,AFDX网络好比坚定的基石,将为未来航空电子设计搭起良好的平台。

    展开全文
  • 通信基础

    千次阅读 多人点赞 2018-08-10 15:45:28
    一、数据通信过程 1 标准化组织 1.1 国际标准化组织(ISO) 1.2 电子电器工程师协会(IEEE) 1.3 美国国家标准局(ANSI) 1.4 国际电信联盟(ITU) 1.5 电子工业协会(EIA / TIA) 1.6 INTERNET架构委员会(IAB) ...

    本文首次发布于 Mlin Blog简书CSDN,作者 @木林(Mlin) ,转载请保留原文链接。

    前言

    OSI模型,即开放式通信系统互联参考模型(Open System Interconnection,OSI/RM,Open Systems InterconnectionReference Model),是国际标准化组织(ISO)提出的一个试图使各种计算机在世界范围内互连为网络的标准框架,简称OSI。

    正文

    一、数据通信过程

    1 标准化组织

    1.1 国际标准化组织(ISO)

    • 国际标准化组织(ISO,International Organization for Standardization)。
    • 该组织负责制定大型网络的标准,包括与Internet相关的标准。ISO提出了OSI参考模型。OSI参考模型描述了网络的工作机理,为计算机网络构建了一个易于理解的、清晰的层次模型。

    1.2 电子电器工程师协会(IEEE)

    • 电子电器工程师协会(IEEE,Institute of Electrical and Electronics Engineers)
    • 提供了网络硬件上的标准使各种不同网络硬件厂商生产的硬件设备相互连通。IEEE LAN标准是当今居于主导地位的LAN标准。它主要定义了802.X协议族,其中802.3为以太网标准协议簇、802.4为令牌总线网(Toking Bus)标准、802.5为令牌环网(Toking Ring)标准、802.11为无线局域网(WLAN)标准。

    1.3 美国国家标准局(ANSI)

    • 美国国家标准局(ANSI,American National Standards Institute)
    • ANSI是由公司、政府和其他组织成员组成的自愿组织,主要定义了光纤分布式数据接口(FDDI)的标准。

    1.4 国际电信联盟(ITU)

    • 国际电信联盟(ITU,International Telecomm Union)
    • 定义了作为广域连接的电信网络的标准,如X.25、Frame Relay等。

    1.5 电子工业协会(EIA / TIA)

    • 电子工业协会(EIA/TIA,Electronic Industries Association/Telecomm Industries Association)
    • 定义了网络连接线缆的标准,如RS232、CAT5、HSSI、V.24等。同时定义了这些线缆的布放标准如EIA/TIA 568B。

    1.6 INTERNET架构委员会(IAB)

    • INTERNET架构委员会(IAB:Internet Architectrue Board)
    • 下设工程任务委员会(IETF)、研究任务委员会(IRTF)、号码分配委员会(IANA)负责各种INTERNET标准的定义,是目前最具影响力的国际标准化组织。

    2 网络通信协议

    • 下图为常用网络通信协议结构图。

    3 为什么使用分层模型

    • 降低复杂性
    • 标准化接口API
    • 简化模块化设计
    • 确保技术的互操作性
    • 加快发展速度
    • 简化教学

    4 OSI七层模型结构

    1.1 物理层(Physical Layer)

    • 二进制传输,为启动、维护以及关闭物理链路,定义了电气规范、机械规范、过程规范和功能规范,即定义了传输介质。
    • 在这一层,数据的单位称为比特(bit)
    • 示例:802.3、EIA/TIA RS-232、EIA/TIA RS-449、V.35、RJ-45、fddi令牌环网等。
    • 数据链路层在不可靠的物理介质上提供可靠的传输。该层定义了如何格式化数据以便进行传输以及如何控制网络访问。该层的作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。
    • 在这一层,数据的单位称为帧(frame)
    • 示例: ARP、RARP、SDLC、HDLC、PPP、STP、帧中继(FR)等。

    1.3 网络层(Network Layer)

    • 路由数据包
    • 选择传递数据的最佳路径
    • 支持逻辑寻址和路由选择
    • 在这一层,数据的单位称为数据包(packet)。
    • 示例: IP (Internet Protocol)、IPX(Internet work Packet Exchange)、DDP (Datagram Delivery Protoco1) ICMP(Internet Control Message Protocol)、APPLETALK。

    1.4 传输层(Transport Layer)

    • 传输层的功能就是建立端口到端口的通信,网络层就是建立主机与主机的通信。
    • 在传输层有两个非常重要的协议:UDP 协议和TCP协议。
      • TCP:面向连接,应用于对数据完整性,一对一通信。
      • 确保数据传输的可靠性
      • 建立、维护和终止虚拟电路
      • 通过错误检测和恢复
      • 信息留空来保障可靠性
      • UDP:无连接,应用于实时性传输、数据量大,一对多通信。
    • 示例:TCP(Transmission Control Protocol)、UDP (User Datagram Protocol)、SPX(SequenCed Packet ExChange Protocol)等。 ATP(AppleTalk Transaction Protocol),NBP(名字绑定协议) NetBEUI(NetBIOS Extended User Internet)。

    1.5 会话层(Session Layer)

    • 会话层定义了如何开始、控制和结束一个会话。会话层管理主机之间的会话进程,即负责建立、管理、终止进程之间的会话。会话层还利用在数据中插入校验点来实现数据的同步。
    • 示例:SSH(Secure Shell)、ZIP(Zone Information Protocol)、SDP (Sockets Direct Protocol)、ADSP(AppleTalk的数据流协议)、ASP(AppleTalk的动态会话协议)、H.245 (Call Control Protocol for Multimedia Communication)。

    1.6 表示层(Presentation Layer)

    • 表示层的主要功能是定义数据格式、加密及压缩。表示层对上层数据或信息进行变换以保证一个主机应用层信息可以被另一个主机的应用程序理解。
    • 示例:EBCDIC(extended binary coded decimal interchange code)、ASCII(Amercia Standard Code for Information Interchange);
      • 图像标准:JPEG(Joint Photographic Experts Group)、TIFF(Tagged Image File Format)、GIF
      • 视频标准:MIDI(Musical Instrument Digital Interface)、MPEG(Motion Picture Experts Group)、QuickTime等。

    1.7 应用层(Application Layer)

    • 应用层主要功能是为操作系统或网络应用程序提供访问网络服务的接口,也就是提供给用户的接口

    • 通过应用程序来完成网络用户的应用需求。该层的数据放在TCP数据包的数据部分,该层定义了一个很重要的协议——http协议。

    • 示例: Telnet(远程登录协议)、FTP (File Transfer Protocol)、HTTP (Hyperrext Transfer Protocol)、SNMP(simple Mail Transfer Protocol)、 BOOTP(Boot trap.Protocol) 、AFP(Apple Talk文件协议–Apple公司的网络协议族,用于交换文件)、 SNMP (Simple Network Management Protoco1)、

      NCP (NetWare Core Protoco1) 、NFS (Network File System)。

    5 OSI七层模型之间通信过程

    5.1 数据封装过程

    • 首先由应用层提供给用户访问接口,用户使用应用程序产生数据流量。
    • 再通过表示层的数据格式化、加密和压缩等处理后,交给会话层。
    • 会话层你通过在不同的应用程序会话(进程)中处理,以区分不通的上层应用,再交给传输层。
    • 传输层拿到数据,首先区分TCP还是UDP。打上传输层包头后交给网络层。
      • TCP:与对端建立端口到端口的连接,首先在目的端口封装上目的端口号,源端口号采用大于1024的任意数字。与对端通过三次握手建立可靠的连接。
      • UDP:直接封装上目的端口号和源端口。
    • 网络层拿到数据,通过封装源IP和目的IP,给数据打上IP报头,再交给数据链路层。
    • 数据链路层拿到数据,首先查看MAC地址表,封装上相应出接口的目的MAC地址和源MAC地址,再交给物理层。
    • 物理层通过接口和线缆介质,以比特流的形式发送出去。

    5.2 数据解封装过程

    数据解封装过程和封装过程相反。

    5.3 主机间对等通信过程

    6 TCP/IP协议栈

    • TCP/IP在OSI模型上进行了缩减成了5层模型。

    二、承载数据帧的格式

    1 数据链路层

    1.1 以太网链路

    1.1.1 Ethernet II
    • Ethernet Ⅱ帧格式

    字段长度含义
    DMAC6字节目的MAC地址,IPv4为6字节,该字段确定帧的接收者。
    SMAC6字节源MAC地址,IPv4为6字节,该字段确定帧的接受者。
    Type2字节协议类型,表明外层协议。
    Data变长数据字段,最小长度必须为46字节,最大长度为1500字节。 如果填入该字段的信息少于46字节,该字段的其余部分也必须进行填充。
    CRC4字节用于帧内后续字节差错的循环冗余检验(也称为FCS或帧检验序列)。

    - 各Type值对应的协议

    Type值对应协议
    0x0800IP
    0x0806ARP
    0x8000IS-IS
    0x8035RARP
    0x86DDIPv6
    0x880BPPP
    0x8847MPLS-unicast
    0x8848MPLS-multicast
    1.1.2 802.3
    • 802.3 帧格式

    字段长度含义
    DMAC6字节目的MAC地址。
    SMAC6字节源MAC地址。
    Length2字节指后续数据的字节长度,但不包括CRC检验码。
    DSAP1字节目的服务访问点,若后面类型为IP帧值设为0x06。
    SSAP1字节源服务访问点,若后面类型为IP帧值设为0x06。
    Ctrl1字节该字段值通常设为0x03,表示无连接服务的IEEE 802.2无编号数据格式。
    SNAP-ID5字节由OUI和Type两部分组成。
    OUI3字节3字节的组织唯一标识符(Organizationally Unique Identifier),其值通常等于MAC地址的前3字节,即网络适配器厂商代码。
    Type2字节标识以太网帧所携带的上层数据类型。
    Data44-1498字节负载。
    CRC4字节用于帧内后续字节差错的循环冗余检验(也称为FCS或帧检验序列)。
    1.1.3 VLAN

    字段长度含义
    Destination address6字节目的MAC地址。
    Source address6字节源MAC地址。
    Type2字节表示帧类型。取值为0x8100时表示802.1Q Tag帧。如果不支持802.1Q的设备收到这样的帧,会将其丢弃。
    PRI3bitPriority,表示帧的优先级,取值范围为0~7,值越大优先级越高。用于当阻塞时,优先发送优先级高的数据包。 如果设置用户优先级,但是没有VLANID,则VLANID必须设置为0x000。
    CFI1bitCFI (Canonical Format Indicator),表示MAC地址是否是经典格式。CFI为0说明是标准格式,CFI为1表示为非标准格式。用于区分以太网帧、FDDI(Fiber Distributed Digital Interface)帧和令牌环网帧。在以太网中,CFI的值为0。
    VID12bitVLAN ID,表示该帧所属的VLAN。在VRP中,可配置的VLAN ID取值范围为1~4094。0和4095协议中规定为保留的VLAN ID。 三种类型: Untagged帧:VID不计 Priority-tagged帧:VID为0x000 VLAN-tagged帧:VID范围0~4095 三个特殊的VID: 0x000:设置优先级但无VID 0x001:缺省VID 0xFFF:预留VID
    Length/Type2字节指后续数据的字节长度,但不包括CRC检验码。
    Data40-1500字节负载(可能包含填充位)。
    CRC4字节用于帧内后续字节差错的循环冗余检验(也称为FCS或帧检验序列)。

    1.2 串行链路

    1.2.1 PPP

    PPP帧的内容是指Address、Control、Protocol和Information四个域的内容。各字段的含义如下。

    字段长度含义
    Flag1字节Flag域标识了一个物理帧的起始和结束,该字节为0x7E。
    Address1字节PPP协议是被运用在点对点的链路上,它可唯一标识对方,因此无须知道对方数据链路层地址。所以该字节无任何意义,按协议规定填充为全1广播地址。
    Control1字节同Address域一样,PPP数据帧的Control域也没实际意义,规定值为0x03,该域与Address域一起标识了PPP报文,即PPP报文头为FF03。
    Protocol1字节或 2字节协议域,可用来区分PPP数据帧中信息域所承载的数据报文的内容。协议域的内容必须依据ISO 3309的地址扩展机制所给出的规定。该机制规定协议域所填充的内容必须为奇数,也就是要求低字节的最低位为“1”,高字节的最低位为“0”。如果当发送端发送的PPP数据帧的协议域字段不符合上述规定,接收端则会认为此数据帧是不可识别的。接收端向发送端发送一个Protocol-Reject报文,在该报文尾部将填充被拒绝报文的协议号。
    Information0-1500字节信息域最大长度是1500字节,其中包括填充域的内容。信息域的最大长度等于PPP协议中MRU(Maximum Receive Unit)的缺省值。在实际应用当中可根据实际需要进行信息域最大封装长度选项的协商。 如果信息域长度不足1500字节,可被填充,但不是必须的。如果填充则需通信双方的两端能辨认出有用与无用的信息方可正常通信。
    FCS0/1/2字节FCS域计算范围是除了flag域的其他域。 校验域的功能主要对PPP数据帧传输的正确性进行检测。 在数据帧中引入了一些传输的保证机制,会引入更多的开销,这样可能会增加应用层交互的延迟。
    Code1字节代码域,主要是用来标识LCP数据报文的类型。在链路建立阶段,接收方接收到LCP数据报文。当其代码域的值无效时,就会向对端发送一个LCP的代码拒绝报文(Code-Reject报文)。如果是IP报文,则不存在此域,取而代之的是IP报文内容。
    Identifier1字节标识域的值表示进行协商报文的匹配关系。 标识域目的是用来匹配请求和响应报文。 一般而言,在进入链路建立阶段时,通信双方任何一端都会连续发送几个配置请求报文(Configure-Request报文)。这几个请求报文的数据域的值可能是完全一样的,只是它们的标志域不同。 通常一个配置请求报文的ID是从0x01开始逐步加1的。 当对端接收到该配置请求报文后,无论使用何种报文回应对方,但必须要求回应报文中的ID要与接收报文中的ID一致。当通信设备收到回应后就可以将该回应与发送时的进行比较来决定下一步的操作。
    Length2字节长度域表示此协商报文长度,它包含Code域及Identifier域的长度。长度域的值就是该LCP报文的总字节数据。它是代码域、标志域、长度域和数据域四个域长度的总和。 长度域所指示字节数之外的字节将被当作填充字节而忽略掉,而且该域的内容不能超过MRU的值。
    Data变长数据域所包含的是协商报文的内容。
    1.2.2 HDLC

    在HDLC中,数据和控制报文均以帧的标准格式传送。HDLC中的帧类似于BSC的字符块,但不是独立传输的。HDLC的完整的帧由标志字段(F)、地址字段(A)、控制字段(C)、信息字段(I)、帧校验序列字段(FCS)等组成:

    字段长度含义
    Flag1字节标志字段,为01111110(0x7e)的比特模式,用以标志帧的开始与结束,也可以作为帧与帧之间的填充字符。
    Address1字节地址字段,内容取决于所采用的操作方式,有主节点、从节点、组合节点之分。
    Control1字节控制字段,用于构成各种命令及响应,以便对链路进行监视与控制。 由于Control字段的构成不同,可以把HDLC帧分为三种类型:信息帧、监控帧、无编号帧,分别简称I帧(Information)、S帧(Supervisory)、U帧(Unnumbered)。在控制字段中,第1位是“0”为I帧,第1、2 位是“1 ”为S帧,第1、2位是“11”为U帧。
    Protocol2字节协议字段。表示Information域中的数据封装的协议类型。
    Information0-N字节信息字段。可以是任意的二进制比特串,长度未作限定。其上限由FCS字段或通信节点的缓冲容量来决定,目前国际上用得较多的是1000~2000比特,而下限可以是0,即无信息字段。但是监控帧中不可有信息字段。
    FCS2字节FCS(Frame Check Sequence):帧检验序列字段,可以使用16位CRC,对两个标志字段之间的整个帧的内容进行校验。
    1.2.3 FR

    2 网络层

    2.1 IPv4

    IPv4报文格式

    image.png

    字段长度含义
    Version4bit**版本。**4:表示为IPV4; 6:表示为IPV6。
    IHL4比特首部长度。如果不带Option字段,则为20,最长为60,该值限制了记录路由选项。以4字节为一个单位。
    Type of Service8bit服务类型。只有在有QoS差分服务要求时这个字段才起作用。
    Total Length16bit总长度。整个IP数据报的长度,包括首部和数据之和,单位为字节,最长65535,总长度必须不超过最大传输单元MTU。
    Flags3bit标志位。标识数据包分片或最后一个分片。 Bit 0: 保留位,必须为0。 Bit 1: DF(Don’t Fragment),能否分片位,0表示可以分片,1表示不能分片。 Bit 2: MF(More Fragment),表示是否该报文为最后一片,0表示最后一片,1代表后面还有。
    Fragment Offset12bit片偏移。分片重组时会用到该字段。表示较长的分组在分片后,某片在原分组中的相对位置。以8个字节为偏移单位。
    Time to Live8bit生存时间。可经过的最多路由数,即数据包在网络中可通过的路由器数的最大值。主要用于放环(三层),超过255次丢弃。
    Protocol8bit协议。标识上一层协议。指出此数据包携带的数据使用何种协议,以便目的主机的IP层将数据部分上交给哪个进程处理。 常见值见下表。
    Header Checksum16bit首部检验和。只检验数据包的首部,不检验数据部分。这里不采用CRC检验码,而采用简单的计算方法。
    Source Address32bit源IP地址。
    Destination Address32bit目的IP地址。
    Options可变选项字段。用来支持排错,测量以及安全等措施,内容丰富(请参见下表)。选项字段长度可变,从1字节到40字节不等,取决于所选项的功能。
    Padding可变填充字段。全填0。

    - IP报头协议号常见值

    协议号协议名称
    0保留
    1ICMP
    2IGMP
    6TCP
    17UDP
    47GRE
    58IPv6-ICMP
    89OSPF
    112VRRP
    124IS-IS
    137MPLS
    88EIGRP(思科独有)

    2.2 IPv6

    IPv6的基本报头在IPv4报头的基础上,增加了流标签域,去除了一些冗余字段,使报文头的处理更为简单、高效。

    字段长度含义
    Version4bit版本号。 4:表示为IPV4; 6:表示为IPV6。
    Traffic class8bit流量类别。该字段及其功能类似于IPv4的业务类型字段。该字段以区分业务编码点(DSCP)标记一个IPv6数据包,以此指明数据包应当如何处理。
    Flow Label20bit流标签。该字段用来标记IP数据包的一个流,当前的标准中没有定义如何管理和处理流标签的细节。
    Payload length16bit有效载荷的长度。有效载荷是指紧跟IPv6基本报头的数据包,包含IPv6扩展报头。
    Next header8bit下一报头。该字段指明了跟随在IPv6基本报头后的扩展报头的信息类型。
    Hop limit8bit跳数限制。该字段定义了IPv6数据包所能经过的最大跳数,这个字段和IPv4中的TTL字段非常相似。
    Source Address128bit该报文的源IP地址
    Destination Address128bit该报文的目的IP地址
    Extension Headers可变**扩展报头。**IPv6取消了IPv4报头中的选项字段,并引入了多种扩展报文头,在提高处理效率的同时还增强了IPv6的灵活性,为IP协议提供了良好的扩展能力。当超过一种扩展报头被用在同一个分组里时,报头必须按照下列顺序出现: IPv6基本报头 1.逐跳选项扩展报头 2.目的选项扩展报头 3.路由扩展报头 4.分片扩展报头 5.授权扩展报头 6.封装安全有效载荷扩展报头 7.目的选项扩展报头(指那些将被分组报文的最终目的地处理的选项。) 8.上层扩展报头 不是所有的扩展报头都需要被转发路由设备查看和处理的。路由设备转发时根据基本报头中Next Header值来决定是否要处理扩展头。 除了目的选项扩展报头出现两次(一次在路由扩展报头之前,另一次在上层扩展报头之前),其余扩展报头只出现一次。

    3 传输层

    3.1 TCP

    3.1.1 TCP报文头部格式

    字段长度含义
    Source Port16bit源端口。标识哪个应用程序发送。
    Destination Port16bit目的端口。标识哪个应用程序接收。
    Sequence Number32bit**序列号。**TCP链接中传输的数据流中每个字节都编上一个序号。序号字段的值指的是本报文段所发送的数据的第一个字节的序号。
    Acknowledgment Number32bit确认号。是期望收到对方的下一个报文段的数据的第1个字节的序号,即上次已成功接收到的数据字节序号加1。只有ACK标识为1,此字段有效。
    Data Offset4bit数据偏移。即首部长度,指出TCP报文段的数据起始处距离TCP报文段的起始处有多远,以32比特(4字节)为计算单位。最多有60字节的首部,若无选项字段,正常为20字节。
    Reserved6bit保留。必须填0。
    URG1bit紧急指针有效标识。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。
    ACK1bit确认序号有效标识。只有当ACK=1时确认号字段才有效。当ACK=0时,确认号无效。
    PSH1bit标识接收方应该尽快将这个报文段交给应用层。接收到PSH = 1的TCP报文段,应尽快的交付接收应用进程,而不再等待整个缓存都填满了后再向上交付。
    RST1bit重建连接标识。当RST=1时,表明TCP连接中出现严重错误(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立连接。
    SYN1bit同步序号标识。用来发起一个连接。SYN=1表示这是一个连接请求或连接接受请求。
    FIN1bit发端完成发送任务标识。用来释放一个连接。FIN=1表明此报文段的发送端的数据已经发送完毕,并要求释放连接。
    Window16bit**窗口。**TCP的流量控制,窗口起始于确认序号字段指明的值,这个值是接收端正期望接收的字节数。窗口最大为65535字节。
    Checksum16bit校验字段。包括TCP首部和TCP数据,是一个强制性的字段,一定是由发端计算和存储,并由收端进行验证。在计算检验和时,要在TCP报文段的前面加上12字节的伪首部。
    Urgent Pointer16bit紧急指针。只有当URG标志置1时紧急指针才有效。TCP的紧急方式是发送端向另一端发送紧急数据的一种方式。紧急指针指出在本报文段中紧急数据共有多少个字节(紧急数据放在本报文段数据的最前面)。
    Options可变**选项字段。**TCP协议最初只规定了一种选项,即最长报文段长度(数据字段加上TCP首部),又称为MSS。MSS告诉对方TCP“我的缓存所能接收的报文段的数据字段的最大长度是MSS个字节”。 新的RFC规定有以下几种选型:选项表结束,无操作,最大报文段长度,窗口扩大因子,时间戳。 窗口扩大因子:3字节,其中一个字节表示偏移值S。新的窗口值等于TCP首部中的窗口位数增大到(16+S),相当于把窗口值向左移动S位后获得实际的窗口大小。 时间戳:10字节,其中最主要的字段是时间戳值(4字节)和时间戳回送应答字段(4字节)。 选项确认选项:
    Padding可变填充字段,用来补位,使整个首部长度是4字节的整数倍。
    Data可变TCP负载。
    3.1.2 TCP三次握手通信过程——建立连接

    1. 主机A(通常也称为客户端)发送一个标识了SYN的数据段,表示期望与服务器A建立连接,此数据段的序列号(seq)为a。
    2. 服务器A回复标识了SYN+ACK的数据段,此数据段的序列号(seq)为b,确认序列号为主机A的序列号加1(a+1),以此作为对主机A的SYN报文的确认。
    3. 主机A发送一个标识了ACK的数据段,此数据段的序列号(seq)为a+1,确认序列号为服务器A的序列号加1(b+1),以此作为对服务器A的SYN报文的确认。
    3.1.3 TCP四次挥手通信过程——关闭连接

    1. 主机A想终止连接,于是发送一个标识了FIN,ACK的数据段,序列号为a,确认序列号为b。
    2. 服务器A回应一个标识了ACK的数据段,序列号为b,确认序号为a+1,作为对主机A的FIN报文的确认。
    3. 服务器A想终止连接,于是向主机A发送一个标识了FIN,ACK的数据段,序列号为b,确认序列号为a+1。
    4. 主机A回应一个标识了ACK的数据段,序列号为a+1,确认序号为b+1,作为对服务器A的FIN报文的确认。

    之所以设置两边都发起断开连接,是因为有可能是一方数据发送完成,而另一方数据为发送完成,两边分别断开连接确保两边的数据都完成了发送。

    3.2 UDP

    字段长度含义
    Source Port2字节标识哪个应用程序发送(发送进程)。
    Destination Port2字节标识哪个应用程序接收(接收进程)。
    Length2字节UDP首部加上UDP数据的字节数,最小为8。
    Checksum2字节覆盖UDP首部和UDP数据,是可选的。
    data octets可变UDP负载,可选的。

    三、不同数据的处理方式

    1 主机

    • 当主机收到数据时,首先拆开数据到数据链路层,查看其目的MAC地址,如果目的MAC地址是自己,或者是广播,或者是所在的组的组播地址,那么就拆包,否则目的MAC地址不是自己则丢弃。
    • 继续拆开数据到网络层,查看其目的IP地址,如果目的IP地址是自己,或者是广播地址,或者是所在组的组播地址,那么就继续拆包,否则目的IP地址不是自己,则丢弃。
    • 继续拆开数据到传输层,查看其目的端口号,如果目的端口在本机上有开启,那么久交给相应的应用程序处理,否则目的端口未开启则就丢弃。

    2 交换机

    2.1 交换机各种端口转发模式

    2.1.1 Access口
    • Access接口接收到报文处理过程

    1. Access口收到数据时,首先查看报文中是否携带Tag字段,如果携带,则查看其VID字段,看其所属VLAN,是否和入接口的PVID值相同,如果相同则就接收,不同则就丢弃。
    2. 如果不带Tag,则打上入接口的PVID值再进一步处理。

      • Access接口发送报文处理过程

    1. Access口发送数据时,直接玻璃Tag进行发送。
    2.1.2 Trunk口
    • Trunk接口接收报文处理过程

    1. Trunk接收到数据时,首先查看数据段中是否含有Tag字段,如果含有Tag字段,则查看其VID字段,看其所属VLAN
    2. 如果报文不带Tag字段,则打上该接口的PVID的Tag,封装入数据段。
    3. 比较该接口是否允许该VLAN通过,如果允许通过则进接收,如果不允许通过则丢弃。

      • Trunk接口发送报文处理过程

    1. Trunk接收到数据时,首先查看报文中Tag字段的VID值是否和该接口的PVID值相同,如果相同则剥离Tag,如果不同则保持原有的Tag,然后发送。
    2.1.3 Hybrid口
    • Hybrid接口接收报文处理过程

    和Trunk接口类似。

    • Hybrid接口发送报文处理过程

    和Trunk接口类似。

    2.2 不同类型接口添加或剥除VLAN标签的比较

    接口 类型对接收不带Tag的 报文处理对接收带Tag的 报文处理发送帧处理过程
    Access接口接收该报文,并打上缺省的VLAN ID。1.当VLAN ID与缺省VLAN ID相同时,接收该报文。 2.当VLAN ID与缺省VLAN ID不同时,丢弃该报文。先剥离帧的PVID Tag,然后再发送。
    Trunk接口1.打上缺省的VLAN ID,当缺省VLAN ID在允许通过的VLAN ID列表里时,接收该报文。 2.打上缺省的VLAN ID,当缺省VLAN ID不在允许通过的VLAN ID列表里时,丢弃该报文。1.当VLAN ID在接口允许通过的VLAN ID列表里时,接收该报文。 2.当VLAN ID不在接口允许通过的VLAN ID列表里时,丢弃该报文。1.当VLAN ID与缺省VLAN ID相同,且是该接口允许通过的VLAN ID时,去掉Tag,发送该报文。 2.当VLAN ID与缺省VLAN ID不同,且是该接口允许通过的VLAN ID时,保持原有Tag,发送该报文。
    Hybrid接口1.打上缺省的VLAN ID,当缺省VLAN ID在允许通过的VLAN ID列表里时,接收该报文。 2.打上缺省的VLAN ID,当缺省VLAN ID不在允许通过的VLAN ID列表里时,丢弃该报文。1.当VLAN ID在接口允许通过的VLAN ID列表里时,接收该报文。 2.当VLAN ID不在接口允许通过的VLAN ID列表里时,丢弃该报文。当VLAN ID是该接口允许通过的VLAN ID时,发送该报文。可以通过命令设置发送时是否携带Tag。

    由上面各类接口添加或剥除VLAN标签的处理过程可见:

    • 当接收到不带VLAN标签的数据帧时,Access接口、Trunk接口、Hybrid接口都会给数据帧打上VLAN标签,但Trunk接口、Hybrid接口会根据数据帧的VID是否为其允许通过的VLAN来判断是否接收,而Access接口则无条件接收。

    • 当接收到带VLAN标签的数据帧时,Access接口、Trunk接口、Hybrid接口都会根据数据帧的VID是否为其允许通过的VLAN(Access接口允许通过的VLAN就是缺省VLAN)来判断是否接收。

    • 当发送数据帧时:

      • Access接口直接剥离数据帧中的VLAN标签。
      • Trunk接口只有在数据帧中的VID与接口的PVID相等时才会剥离数据帧中的VLAN标签。
      • Hybrid接口会根据接口上的配置判断是否剥离数据帧中的VLAN标签。

      因此,Access接口发出的数据帧肯定不带Tag,Trunk接口发出的数据帧只有一个VLAN的数据帧不带Tag,其他都带VLAN标签,Hybrid接口发出的数据帧可根据需要设置某些VLAN的数据帧带Tag,某些VLAN的数据帧不带Tag。

    2.3 交换机数据转发过程

    • 当交换机接收到数据时,首先拆开数据到数据链路层,查看其源MAC地址,如果源MAC地址不在MAC地址表里面,则就学习地址和相应的接口绑定,并且设置老化时间300s,如果已经学习到了,那么就更新老化时间。
    • 然后再查看目的MAC地址,如果目的MAC地址是自己,那么就拆包;如果不是自己,在查看地址表,如果目的MAC地址是组播地址或广播地址或未知单播地址,那么就进行泛洪处理,如果是单播MAC地址,查看MAC地址表的转发出街口,如果和进接口一致则丢弃,不一致则转发。
    • 继续拆包到网络层,查看目的IP地址,如果目的IP地址是自己,那么就拆包;如果不是则丢弃。
    • 继续拆包到传输层,查看目的端口号,入股目的端口号已开启,则传给相应应用程序处理,如果未开启,则丢弃数据包。

    3 路由器

    • 当路由器收到数据包时,首先查看目的MAC地址是不是自己,如果是自己的MAC地址,那么就拆包,如果不是则就丢弃。
    • 继续拆包查看目的IP地址,如果目的IP地址是自己的,那么就继续拆包,如果不是自己的就查看路由表。如果路由表没有匹配的路由条目则就丢弃,否则有的话就转发。
    • 当路由表有相应的路由条目,则以最长掩码匹配的方法进行转发,如果路由条目仅有出接口,则发送ARP报文获取MAC地址,如果有代理ARP回复,则封装MAC转发,如果无回复,则超时丢弃。如果路由条目有下一跳,则迭代查询路由表,找到对应的条目,查看ARP表,如果ARP表有条目则封装MAC地址进行转发,如果ARP表没有条目,则发送ARP来获取MAC地址,再封装进行转发。
    • 继续拆包到传输层,查看目的端口号,如果目的端口号有开启,则传给相应的应用程序进行查理,否则没有开启相应的端口,则丢弃数据包。

    结语

    展开全文
  • 通信协议制定

    万次阅读 2015-10-29 23:24:00
    通信协议是指通信各方事前约定的用心规则,我们可以简单地理解为各计算机之间进行相互会话所使用的共同语言.两台计算机在进行通信时,必须使用的通信协议。 通信协议的种类和特点    目前常见的通信协议...
    

    通信协议定义

     
      用于实现计算机与网络连接之间的标准,网络如果没有统一的通信协议,电脑 之间的信息传递就无法识别。 通信协议是指通信各方事前约定的用心规则,我们可以简单地理解为各计算机之间进行相互会话所使用的共同语言.两台计算机在进行通信时,必须使用的通信协议。

    通信协议的种类和特点

     

      目前常见的通信协议主要有:NetBEUI、IPX/SPX、NWLink、TCP/IP,在这几种协议中用得最多、最为复杂的当然还是TCP/IP协议,最为简单的是NetBEUI协议,它简单得不需要任何设置即可成功配置。

      1、 NetBEUI协议

      NetBEUI协议它的全称是:NetBIOS Extend User Interface,即用户扩展接口 ,它是由IBM1985 年 公司开发的,它是一种体积小、效率高、速度快的通信协议,同时它也是微软最为喜爱的一种协议。它主要适用于早期的微软操作系统如:DOS、LAN Manager、Windows3.x和Windows for Workgroup,但微软在当今流行的WIN9X和WINNT中仍把它视为固有缺省协议,由此可见它并不是我们所认为是“多余”的,而且在有的操作系统 中连网还是必不可少的,如在用WIN9X和WINME组网进入NT网络时一定不能仅用TCP/IP协议,还必需加上“NetBEUI”协议,否则就无法实 现网络连通,不信试试看!

      因为它的出现比较早,也就有它的局限性,NetBEUI是专门为几台到百多机所组成的单段网络而设计的,它不具有跨网段工作的能力,也就是说它不具有“路由”功能,如果您在一服务器 或工作站上安装了多个网卡 作网桥时,将不能使用NetBEUI作为通信协议,这一点必需记清楚!

      NetBEUI通信协议的特点就是:a、体积小,因原来就要是DOS、LAN Manger等较低版本的操作系统,故它对系统的要求不高,运行后占用系统资源最少;b、上面已讲过,也恐是因为主要服务的对象较低版本的操作系统,它不 具有路由功能,不能实现跨网络通信;c、因为简单,对系统要求低,也就适合初学组网人员学习使用。

      2、 IPX/SPX协议

      IPX/SPX协议的全称为:Internetwork Packet Exchange/Sequences Packet Exchange,网际包交换/顺序包交换。它是NOVELL公司为了适应网络的发展而开发的通信协议,它的体积比较大,但它在复杂环境下有很强的适应 性,同时它也具有“路由”功能,能实现多网段间的跨段通信。当用户接入的是NetWare服务器时,IPX/SPX及其兼容协议应是最好的选择。但如在 Windows环境中一般不用它,特别要强调的是在NT网络和WIN9X对等网中无法直接用IPX/SPX进行通信。

      IPX/SPX的工作方式较简单,不需要任何配置,它可通过“网络地址”来识别自己的身份。在整个协议中 IPX是NetWare最底层的协议,它只负责数据在网络中的移动,并不保证数据传输是否成功,而SPX在协议中负责对整个传输的数据进行无差错处理。在 NT中提供了两个IPX/SPX的兼容协议:NWLink IPX/SPX 兼容协议、NWLink NetBIOS,两者统称为NWLink 通信协议。它继承了IPX/SPX协议的优点,更适应了微软的操作系统和网络环境,当需要利用Windows系统进入NetWare服务器 时,NWLink通信协议是最好的选择。

      3、 TCP/IP协议

      TCP/IP协议的全称是:TransmissiON Control Protocol /Internet Protocol,即传输控制协议/网际协议。它是微软公司为了适应不断发展的网络,实现自己主流操作系统与其它系统间不同网络的互连而收购开发的,它是 目前最常用的一种协议(包括INTERNET),也可算是网络通信协议的一种通信标准协议,同时它也是最复杂、最为庞大的一种协议。TCP/IP协议最早 用于UNIX系统中,现在是Internet的基础协议。

      TCP/IP通信协议具有很灵活性,支持任意规模的网络,几乎可连接所有的服务器和工作站,正因为的灵活性也 带来了它的复杂性,它需要针对不同网络进行不同设置,且每个节点至少需要一个“IP地址”、一个“子网掩码”、一个“默认网关”和一个“主机名”。但是在 局域网中微软为了简化TCP/IP协议的设置,在NT中配置了一个动态主机配置协议(DHCP),它可客户端自动分配一个IP地址,避免了出错。

      TCP/IP通信协议当然也有“路由”功能,它的地址是分级的,不同于IPX/SPX协议,这样系统就很容易 找到网上的用户,IPX/SPX协议用的是一种广播协议,它经常会出现广播包堵塞,无法获得最佳网络带宽。但特别要注意的一点就是在用WIN9X和 WINME组网进入NT网络时一定不能仅用TCP/IP协议,还必需加上“NetBEUI”协议,否则就无法实现网络连通。

    通信协议选择的原则

     

      1、 所选择的协议要与网络结构、功能一致

      如果您的网络有网桥等类似路由设备,则必需选择具有路由功能的协议,如IPX/SPX、TCP/IP等,绝对 不能选择NetBEUI作为通信协议。但是您的网络没有路由选择功能,只是单一的网段,能用NetBEUI作为通信协议的尽量选用,因为此协议占用系统资 源最少,运行速度最快,如在DOS下与NT服务器 相 连,则最好选用NetBEUI作为通信协议,它比TCP/IP协议快且稳定,这一点我是深有体会的。以前我们公司在DOS通常用TCP/IP作为协议,但 总是出现死机,有时根本连不上网,但改用`NetBEUI作为通信协议后,系统性能一下得到了提高。要注意的一点是如果用NetBEUI作为通信协议,则 在您的NT服务器上同时也要装上此协议,否则根本行不通!还有就是在WIN9X(包括WINME)要实现与NT服务器成功连网则必需在客户和服务端安装上 `NetBEUI协议,否则可能连不上网,这一点我也做过多次试验。当然对于较复杂的网络还是选择TCP/IP协议好。

      2、 尽量选用一种协议

      如果可能的话最好只选用一种通信协议,因为每一仲协议都要占用系统的内存 资源的,会影响系统的工作效率的,在绝大多数情况下一种协议是完全可以满足连网需求的。

      3、 保持协议的一致性

      当您的网络要与其它网络进行通信时,要注意的是两个网络在协议的选择方面尽量一致,因为如果不一致,会导致在通信时互不相认,不过一般现在的通信协议标准中TCP/IP协议为绝大多数协议所接纳、兼容,不过安装TCP/IP协议一般是不会有这种不相认的现象出现的。

    PIC18单片机的CANopen通信协议

     

      引 言

      CAN总线 由于具有实时性和可靠性高、组网成本低等优点,近年来在汽车工业、楼宇自动化、工厂自动化、机器人控制等领域得到广泛应用。CANopen协议不仅定义了通信规范,而且为可编程系统、不同器件、接口 等设备应用子协议定义了大量的行规。遵循CANopen协议开发出的设备能实现不同生产厂家的产品间的互操作。

      要掌握CANopen协议,重点是对对象字典和设备模型的理解以及对4类通信对象的掌握。本文先对CANopen协议进行削析,再重点介绍在PICl8F458单片机 上开发基于CANopen协议的节点,最后通过温度测控系统实验验证了系统信息传递的可靠性、准确性和实时性。

      1 CANopen通信协议简介

      CANopen协议是CiA协会基于CAN总线定义的应用层协议之一,在各种控制系统 中得到了广泛应用。它以CAN芯片 为硬件基础,有效利用CAN芯片所提供的简单通信功能来满足工业控制网络的复杂应用层协议要求。CANopen网络是主从站(MA ST ER —Slave)结构,系统的运行由主站控制,主站可以对127个从设备进行控制,不同设备通过CAN总线进行连接组网。图1为CANopen设备模型。 CANopen通信协议接口用于提供在总线上收发通信对象的服务,不同CANopen设备间的通信都是通过交换通信对象来完成的。CANopen协议中定 义了4种通信对象(通信模式),用于对不同作用的信息进行处理:NMT对象(网络管理对象)、SDO对象(服务数据对象)、PDO对象(过程数据对象)、 特殊功能对象。

      设备对象字典是CANopen协议的核心概念,位于CANopen设备模型中通信层和用户应用层之间,为用户 应用层提供接口。它是一个结构标准化的、有序的对象组,描述了该设备使用的所有数据类型、通信对象和应用对象。基于CANopen协议的网络系统中每一个 设备都要实现一个唯一的对象字典,区别在于设备类型不同其内容则不同。对象字典中每个对象拥有一个唯一的16位主索引和8位子索引,由此实现对其中各种对 象的访问。对象字典在系统软件设计中得以实现,然后使用标准化的EDS文件对其进行描述。

      2 温度测控系统的软、硬件设计

      2.1 温度测控系统组成

      图2所示温度测控系统包含3个节点,它们构成一个CAN网络。传感温度节点发送测到的温度,此节点由主芯片和温度传感器 组成。温度调节节点接收到从传感温度节点发送的温度数据后,低于下限温度加热,高于上限温度降温,并发送调节状态;此节点由主芯片、状态显示灯和空调设备组成。命令节点接收从传感温度节点发送的温度和温度调节节点发送的状态在液晶屏 上显示,并有按钮可以发送NMT对象,对整个系统进行控制;此节点由主芯片、液晶屏、状态显示灯和按钮组成。

      针对系统的要求,选用PICl8F458单片机作为从节点的主芯片。它是MICROCHIP 公司的单片16位高性能微控制器 ,具有片内CAN控制器,CAN模块符合CAN2.0B标准,带有3个发送缓冲区、2个接收缓冲区、2个接收屏蔽寄存器、6个完全接收滤波器 。CAN收发器 采用PCA82C250芯片,它具有高速稳定的差动发送和接收能力,可作为CAN协议控制器和物理总线接口。此外,为了便于调试和与主控制器的通信,系统中还扩展了RS232接口。

      对于各个节点都采用预定义连接集中规定的11位ID。它由4位功能码和7位节点ID组成。其中各通信对象具体分配的COB—ID为NMT SERVICE一000、EMER—GENCY一080、TIMESTAMP 一100、SYNC一080、TPD01—180、RPD01—200、TPD02—280、RPD02—300、TSDO一580、RSDO一600、HEARTBEAT一700。

      设定传感温度节点的ID为6,以TPDO对象方式发送测到的温度。所以发送对象的COB—ID分别为TP— D02(200+6)、TSD()(580+6)、HEARTBEAT(700+6)、EMERGENCY(080+6),接收对象的COB—ID分别为 NMT SERVICE(000)、RSD()(600+6)。

      设定温度调节节点的ID为7,以RPDO对象方式接收从传感温度节点发送的温度,并以TPDO对象方式发送调 节状态。所以发送对象的COB—ID分别为TPD01(180+7)、TSDO(580+7)、HEARTBEAT(700+7)、 EMERGENCY(080+7),接收对象的COB—ID分别为NMT SERVICE(000)、RSDO(600+7)、RPDO2(280+6)。

      设定命令节点的ID为8,以RPDO对象方式分别接收从传感温度节点发送的温度和从温度调节节点发送的调节状 态,也可用NMT对象方式发送NMT报文。所以发送对象的COB—ID分别为TSDO(580+8)、HEART—BEAT(700+8)、 EMERGENCY(080+8)、NMT MAS—TER(000),接收对象的COB—ID分别为NMT SERVICE(000)、RSD0(600+8)、RPD02(280+6)、RPD01(180+7)。

      2.2 节点对象字典的建立

      对象字典的内容除了包括CANopen协议规定的必需项外,还包括调用的各功能模块和参数设定项。它的正确配 置和使用,是保证整个CANopen网络正常运行的核心,是节点实现其预定功能的必要保证。对象字典的组建采用C语言在头文件中编写,通过 Struct(结构)语句实现对象字典内容的寻址。对象字典的规划赋值设计按照CANopen协议规定的格式完成,每个节点的对象字典都具有相同的结构, 但具体内容要根据不同的设备而定义,包含了描述这个设备和它网络的所有参数。对象字典的操作是CANopen协议软件的核心,通过对象字典实现网络间参数 的映射从而完成各种数据的处理,需要编写对象字典解码子函数、读对象字典子函数和写对象字典子函数。下面以温度调节节点为例介绍对象字典的创建、赋值和具 体操作。表1显示了此节点中PDO的各个参数。

      OD_ENTRY(0x3000,Ox00,ATTR_RW | ATTR_ROM,TempLo),(对象主索引3000-下限温度)OD_ENTRY(0x3001,0x00,ATTR_RW|ATTR_ROM,TempHi),(对象主索引3001-上限温度)

      OD_ENTRY(0x3100,0x00,ATTR_RO,Status),(对象主索引3100一状态)

      OD_ENTRY(0x3200,0x00,ATTR_RWW,RemoteTemperature),(对象主索引3200-远程温度)#define ODD_RPDO_PAR_COB_ID_0 Ox40000286L(RPDO的COB-ID为0x286)

      OD_ENTRY(0x160l,0x00,ATTR_RO | ATTR_ROM,ODE_RPDO_Mapping_NoOfEntries),OD_ENTRY(0x1601,0x01,ATTR_RO|ATTR_ROM,ODD_RPDO_MAP_0_1, (RPDO映射参数描述)

      #define ODD_RPDO_MAP_0_1 0x32000010L(RPDO定位对象字典索引3200子索引00长度2)

      OD_ENTRY(0xlA00,0x00,ATTR_RO|ATTR_ROM,ODE_TPDO_Mapping_NoOfEntries),

      OD_ENTRY(0xlA00,0x01,ATTR_RO|ATTR_ROM,ODD_TPD0_MAP_0_l,(TPDO映射参数描述)

      #define ODD_TPDO_MAP_0_1 0x31000008L(TP-DO定位对象字典索引3100子索引00长度1)

      if(RemoteTemperature<TempLo){Status=2;}(低于下限温度加热,为加热状态)

      else if(RemoteTemperature>TempHi){Status=1;}(高于上限温度降温,为降温状态)

      else{Status=0;}(在设定温度范围内,为保持状态)

      在此例中,PDO报文是在对象字典中用通信参数和映射参数来描述的。通信参数决定哪个COB—ID将被PDO 使用,此例中RPD0的COB—ID为286,TPDO的COB—ID为187。映射参数包含映射到PDO里的对象在对象字典中的索引和子索引,以及对象 的数据长度。此例中映射到RPDO里的对象在对象字典中的索引为3200,子索引为OO,长度为2;映射到TPDO里的对象在对象字典中的索引为 3100,子索引为00,长度为1。另外某些相关变量也由对象字典所描述,可以通过sD0对象传输方式进行下载修改或上传观察。此例中的上限温度、下限温 度,就由对象字典主索引3000、子索引00和主索引3001、子索引00分别描述。

      2.3 节点的CANopen协议的软件实现

      在节点上实现CANopen协议软件,首先要实现节点接收报文和发送报文的功能。接收报文的过程是,一旦有接 收中断产生,就把CAN接收缓冲区接收到的数据和地址放到一内部阵列中,对接收到的报文进行分析,并送去执行相应的子函数(NMT报文接收处理子函数、 SDO报文接收处理子函数、心跳报文接收处理子函数、SDO报文接收处理子函数),最后返回主程序。发送报文的过程是,把需要发送的变量放到对象字典里, 再把它们映射封装成相应的对象,最后将报文发送到总线上。

      主程序按照通信流程编写,模块上电后先进行通信初始化。其首先初始化CANopen协议中的通信相关参数、对象字典、节点号,再初始化CAN控制器的硬件,包括单片机的内部寄存器、定时器 、 串行口、CAN控制器。通信初始化后自动进入节点初始化,并进行一些特定用户的初始化。完成后,发送一个启动报文自动进入预操作状态。此时用户的程序循环 执行着,在每个循环里,调用接收报文1次。这个模块用来检查接收到的对象,并作相应的处理。在NMT报文到来之前一直持续在预操作状态。在

      这个状态里,节点可以通过SD0被配置和设置参数,但是不允许发送PDO。在相应的NMT报文到来后,即收到 启动远程节点命令后,进入操作状态,在这个状态就可以进行正常的通信了。在收到NMT报文,即停止远程节点命令,节点进入了停止状态,从而停止PDO和 SDO通信。

      3 实验结果

      在软件设计中编写了与上位机的通信模块 程序,可以将每个节点接收和发送报文的ID号、数据长度、数据转发到串口 ,便于上位机进行观测。

      图3为系统传输数据的过程,温度传感节点发送报文过程为发送自启动报文后以周期为1 s发送心跳报文,以周期为100 ms发送PDO1报文,发送数据为传感温度(分别为19°,20°,…,21°…)。上限温度和下限高温都为20°时,温度调节节点接收报文过程为接收到 NMT报文命令后进入操作状态,不断接收PDOl报文。温度调节节点发送报文过程为发送自启动报文后以周期为1 s发送心跳报文,以事件触发方式发送PDOO报文(发送数据为工作状态长度为1,当接收到的温度低于20°时发送数据为02表示加热,当接收到的温度高于 20°时发送数据为01表示降温,当接收的温度为20°时发送数据为OO表示保持),状态显示灯不断闪烁红色、黄色、蓝色。如在命令节点中发送SDO报文 改变对象字典中的上限温度和下限温度,再观察各节点变化。情况1,当上限温度低于20°(为15°)时,温度调节节点一直在降温状态,状态显示灯为红色。 情况2,当下限温度高于20°(为25°)时,温度调节节点一直在加热状态,状态显示灯为黄色,情况3,当上限温度高于20°(为25°),下限温度低于 20°(为15°)时,温度调节节点一直在保持状态,状态显示灯为蓝色。命令节点在液晶显示屏 中显示实时温度,在状态显示灯中显示实时状态。

      命令节点进行NMT对象操作时再观察各节点状态:当按下按钮1时,节点进入欲操作状态;当按下按钮2时,节点重启。

      从以上两个实验可以看出,整个系统在运行过程中达到了满意的控制效果,实现了基于CANopen协议的对象数据的交换,通信传输理想。

      结 语

      应用PIC18单片机自行开发的基于CANopen协议的节点,实现了对4种通信对象信息的通信处理,并通过 测试验证了系统信息传递的可靠性、准确性和实时性,很好地满足了基于CANopen协议的温度测控系统的要求;对于CANopen在国内的应用和普及,以 及CAN网络和驱动产品尽早和国际接轨,具有重要的意义。

    DMR通信协议与数字对讲机基带模块设计

     

      引 言

      随着嵌入式技术的发展,单片机DSP 、ARM等处理器 已经广泛应用于通信行业,尤其是在无线通信领域更是有其不可替代的作用。本设计中所用的核心器件MSP430FG4619是TI公司推出的MCU ,TMS320VC5510(简称“VC5510”)是TI公司的5000 系列DSP,而语音编解码芯片 AMBE一2000 也是以DSP为内核的。

      无线对讲机 由于具有即时通信、经济实用、成本低廉、使用方便以及无需通信费等优点,因此广泛应用在民用、紧急事件处理等方面。尤其在紧急事件处理以及没有手机 网 络覆盖的情况,对讲机更加显示出它的不可取代的地位。如今,模拟对讲机仍然占据绝大部分的市场,但是由于数字通信可以提供更丰富的业务种类,更好的业务质 量、保密特性和连接性,以及更高的频谱效率,因此数字对讲机的研究、生产和使用是与时俱进的,符合信息化、数字化发展的必然趋势。DMR(Digital Mobile Radi0,数字移动无线电)协议是欧洲电信标准协会(ETSI)于2004 年所提出的一种新型的数字集群通信协议,具有很好的发展前途。

      1 DMR通信协议的简要介绍

      DMR协议使用一种双时隙TMDA接入的方式,每个突发2个时隙,每个时隙30 ms。其中每个时隙都有1.5 ms的保护时间。DMR协议结构遵守一种普通的分层结构,这种结构适用于描述参考资料和说明分层的通信结构。DMR标准定义了一种模型草案,把模型分成3 层,如图1所示。

      2 整体设计及系统工作原理

      DMR数字对讲机的基带模块硬件整体设计原理框图如图2所示。

      整个基带系统的核心器件为信号处理器 件和控制器件。其中,信号处理器件选择TI公司的DSP芯片VC5510,控制器件为TI公司的MSP430FG4619单片机。

      DSP的主要功能自然是数字信号的处理,本设计中VC5510实现信令编解码、语音数据的收发(与AMBE一2000 )的通信、帧同步、4FSK调制解调等功能。

      MCU是整个系统的控制中心,人机接口 (键盘、显示)与MCU直接相连。MSP430FG4619实现与射频模块 的通信(包括基带信号发送接收、射频频点控制、信道检测等),DMR协议的高层控制(信令),人机接口互通等功能。MSP430FG4619是TI公司推出的一种超低功耗的16位单片机 口,具有丰富的片内外围资源,有丰富的定时器 、各类串口 、显示驱动、AD/DA等功能,通用端口也可对位进行操作。

      语音编解码器 件为AMBE一2000 ,内核其实也是DSP。它是一种采用MBE(AMBE)算法的高性能多速率语音编解码芯片 ,用于实现对数字语音数据的编码及解码,其编解码速率可以硬件、软件控制,根据DMR协议的需要以及AMBE一2000 的特点,编解码速率选择为3.6kbps。与AMBE一2000 相连的AD/DA转换器 选择为AD73311,其兼容性非常好,广泛用于完成语音信号的模拟/数字互相转换。MSP430FG4619FG4619自带的AD/DA与射频接口相连,完成最终基带信号的数字/模拟相互转换。

      信令与语音的通信机理是不一样的:信令发送端由人机接口发起,通过MCU组帧,送往DSP编码,再交由MCU 进行D/A转换,经射频模块发送出去;接收端的信号经过MCU的A/D转换后送往DSP进行解码,解码成帧后送往MCU进行处理。而语音的编解码完全由 AMBE一2000 来实现,经过DSP中转,由MCU进行发送或接收。

      3 关键模块电路 连接原理

      3.1 MCU与DSP之间的连接

      由于VC5510具有增强主机接口(EHPI),因此可以直接将主机接口的相应引脚与MCU相连。其中HINT为送往主机的中断,必须为MCU中具有中断功能的通用I/O口,设计中选择P1.3,其他引脚可以为一般的GPIO。其电路连接原理图如图3所示。

      HCS为片选信号,始终有效。HMODE为复用/非复用选择信号,低电平为复用模式。HlBE0和HBE1用 来选择高的字节数据有效,本设计中接地,表示高低字节均有效(16位)。HR/W确定HPI的读/写模式。HCNTL0、HCNTL1联合用来确定主机访 问HPI的哪个寄存器:地址寄存器HPIA、数据寄存器HPID、控制寄存器HPIC。HRDY为从机(DSP)数据准备好信号。HINT用于从机 (DSP)中断主机(MCU)。

      MCU可以通过与HPI相连的相应引脚直接访问DSP的片内RAM,是一种DMA模式,而无需DSP参与,真 正体现了主机一从机模式。在主机访问从机片内资源时,从机可以独立地执行其他任务。主机需要从机响应时(有信令发往DSP),MCU可以通过访问DSP的 主机控制寄存器HPIC的特定位来向DSP发送一个中断;从机DSP需要主机响应时(向MCU发送信令),也可以通过HINT引脚来中断主机。实验证明, 这种连接方法方便有效,可以实现无差错通信。

      3.2 DSP与AMBE一2000 的连接

      VC5510与AMBE一2000 之间可以方便地通过多通道缓冲串口(McBSP)来连接。而AMBE一2000 的数据准备好信号EPR应该连到DSP的一个外部中断INT3上。

      这部分的电路连接如图4所示。

      设计中,AMBE一2000 采用主动模式,因此AMBE一2000 的发送帧同步信号(CHAN_TX_STRB)由自己提供,其他的时钟均由DSP提供。串口时钟频率应当低于2 MHz。

      3.3 AD/DA功能

      在前期的设计中,AD/DA功能是使用专门的芯片来实现的,与DSP相连。但是由于DSP资源紧张,再加上成 本的考虑,决定使用MSP430FG4619自带的AD/DA功能来实现,其中MSP430FG4619的ADC和DAC都是12位的,有16路ADC通 道和2路DAC通道。采样参考电压、采样率、采样触发信号、采样模式等都很丰富,可以软件编程控制。因此,使用MCU自带的AD/DA功能是一个既方便又 实用的方法。

      4 软件简要总体设计

      由于分为信令线和语音线这两条线,因此软件设计也应围绕这两条线分别设计:协议的底层部分由VC5510来完成,主要实现信令的编码/解码、4FSK调制解调、帧同步以及时隙;高层部分则完全是在MCU中实现的。

      明确了“两条线”体现出模块化的思路,有助于软件的实现。底层模块完全在VC5510之中完成,而高层模块则在MSP430FG4619中实现。VC5510与MSP430FG4619的开发工具 分别为CCS和IAR,均可以使用C语言来编写,另外IAR还可以使用C++语言来编写,因此软件编写就不会显得陌生。

      结 语

      实验证明,本文所提供的设计方案是可行的,并且在之前的设计方案基础上进行了比较大的简化。本文的创新点在于 使用新型通信协议DMR,并在其基础上设计了一种数字对讲机的整个基带模块。本文的DMR数字对讲机基带模块设计为我国的数字对讲机领域的研发提供了一种 新的思路和方法。相信DMR协议以及在此基础上的数字对讲机行业必将蒸蒸日上。

    Modbus RTU通信协议在MCF51QE128上的设计实现

     

          引言

              工业控制已从单机控制走向集中监控、集散控制,如今已进入网络集约制造时代。工业控制器连网也为网络管理提供了方便。Modbus就是工业控制器的网络协 议中的一种。

              Modbus协议是应用于电子 控制器上的一种通信规约。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其他设备之间可以通信。它已经成为主流的工业标准之一。不同厂商生产的控制设备通过Modbus协议可以连成工业网络,进行集中监控。

              Modbus通信协议

              1 通信传送方式

              每一个数据字节包括:每个字节的位、1个起始位、8个数据位、最小的有效位先发送、1个奇偶校验位(无校验则无)、1个停止位(有校验时)、2个停止位 (无校验时)。

              在RTU模式下每个字节的格式(11bit)如下:
              编码系统:8位二进制
              字节组成:1bit起始位、8bit数据位,最低位最先发送、1bit奇偶校验位、1bit停止位(或者没奇偶校验位,就发送一个附加的停止位)。

              2 数据帧结构

              地址码:地址码为通信传送的第一字节。这字节表明由用户设定地址码的从机将接收由主机发送来的信息。并且每个从机都有唯一的地址码,并且响应回送均以各自 的地址码开始。主机发送的地址码表 明将发送到的从机地址,而从机发送的地址码表明回送的从机地址。

              功能码:通信传送的第二字节。ModBus通信规约定义功能号为1~127。根据实际需要只利用其中的一部分功能码。作为主机请求发送,通过功能码告诉从 机执行什么动作。作为从机响应,从机发送的功能码与从主机发送来的功能码一样,并表明从机已响应主机进行操作。如果从机发送的功能码的最高位为1,则表明 从机没有响应操作或发送出错。

              表1 每一个完整的数据帧构成

     

              数据区:数据区根据不同的功能码而不同。数据区可以是实际数值、设置点、主机发送给从机或从机发送给主机的地址。

              CRC码:二字节的错误检测码。冗余循环码检查(CRC)包含两字节,即16位二进制。CRC码由发送设备计算,放置于发送信息的尾部。接收信息的设备再 重新计算接收到信息的CRC码,比较计算得到的CRC码是否与接收到的相符,如果两者不相符,则表明出错。CRC码的计算方法是,先预置16位寄存器全为 1。再逐步把每8位数据信息进行处理。在进行CRC码计算时只用8位数据位、起始位及停止位,如有奇偶校验位的话也包括奇偶校验位,都不参与CRC码计 算。

              在计算CRC码时,8位数据与寄存器的数据相异或,得到的结果向低位移一位,用0填补最高位。再检查最低位,如果最低位为1,把寄存器的内容与预置数相异 或,如果最低位为0,不进行异或运算。

              这个过程一直重复8次。第8次移位后,下一个8位再与现在寄存器的内容相异或,这个过程与以上一样重复8次。当所有的数据信息处理完后,最后寄存器的内容 即为CRC码值。CRC码中的数据发送、接收时低字节在前。在实际应用中,为了提高运算速度,采用了查表的方法取代计算方法。

              3 Modbus RTU数据帧结构

              在RTU模式下,每一个数据帧之间的间隔至少是3.5个字符位。一个完整的数据帧必须要连续的传送,当一帧消息中两字节间的间距大于1.5字符位时,此数 据帧错误,被接受方放弃。

              当通信波特率小于等于19 200b/s。对1.5个字符位/3.5个字符位计算时间有严格要求。当通信波特率大于19 200b/s。1.5个字符位固定为750μs,3.5个字符位固定为1.75ms。官方的Modbus RTU规定标准为3.5个字符长周期,不同的串口 设备由于使用环境不同可能在发送中出现5~10字长的间隙。对于Modbus RTU来说比较安全的设置为50ms。

              4 用到的功能代码

              用到的功能代码如表2所示。

              表2 功能代码

     

              MCF51QE128的主要特性

              系统核心控制器采用的是FREESCALE 公司推出的32位单片机 MCF51QE128。它是一款32位ColdFire V1 MCU ,特点包括:停止电流降至370nA,6μs唤醒时间,超低运行电流为50mA;50.33MHz ColdFire V1内核运行频率;25.165MHz的总线 频率;最大为8KB的RAM;最高128KB的闪存;24信道的12位ADC;两个模拟比较器 ;2xSCI、2xI2C、2xSPI;一个6信道和两个3信道的定时器 PWM模块;RTC;最多70路通用输入/输出(GPIO);系统集成频率锁定环(FLL)和软件看门狗;内部时钟源(ICS );低功耗外部32kHz振荡器 ;电压范围为1.8~  3.6V;增强型内部振荡器、电压调节器 和实时计数器 。通用开发环境是CodeWarrior for MicrocON trollers 6.0。

              软件设计

            1 接收软件流程


            如图1所示。

     

     

    图1 从机软件流程

            2 配置串口和定时器

            void usart_init()
            {
             SCI1C1=0x13;//9bit character mode,odd parity
             SCI1C2=0x2c;
             SCI1BDL=0x29;//38400bps
             SCI1BDH=0;
            }
            void timer3_init(void)//8MHz主时钟1333Hz中断判断命令包结束
            {
             TPM3CNTH=0;
             TPM3CNTL=0;
             TPM3MODH=0x49;
             TPM3MODL=0xbe;  
             TPM3SC=0x48; 
            }

            3 MCF51QE128解包modbus RTU的程序

             void interrupt VectorNumber_ Vsci1rx SCI_RX_ISR(void)//字节接收程序
             {
              if(SCI1S1_PF==1)communication_error=1;//字节校验错误置通信失败标志位
              *(pointer_RX1)=SCI1D;//将数据放入缓冲队列
              pointer_RX1++;//队列指针后移
              len_RX1++;//收到字节长度加1
              timer3_reset();//定时器复位
              timer3_init();//定时器重启动
             }
             void interrupt VectorNumber_Vtpm3ovf Timer3_ISR(void)//判断命令包接收结束
             {
                      timer3_cnt++;//定时器中断次数加1
              if(timer3_cnt==2)
               {  
            timer3_reset();//定时器复位
            pointer_RX1=Buffer_RX1;//队列指针初始化
              full_RX1=1;//收完置标志位
               }
             }

            4 CRC查表产生函数

            由于篇幅有限,此处不再详述,表具体内容可参照相关参考文献。

            总结

            笔者的设计基于MCF51QE128控制核心来实现Modbus协议,已经成功进行了实际应用,通信可靠,而且实现起来比较容易。该设计为采用MCF51QE128微控制器 进行工业产品设计通信的应用提供了参考方案。

     

     来源:[http://www.jdzj.com]机电之家·机电行业电子商务平台!

     

    单片机通信协议处理

     
    现在大部分的 仪器 设备都要求能过通过上位机软件来操作,这样方便调试,利于操作。其中就涉及到通信的过程。在实际制作的几个设备中,笔者总结出了通信程序的通用写法,包括上位机端和下位机端等  1. 自定义数据通信协议

      这里所说的数据协议是建立在物理层之上的通信数据包格式。所谓通信的物理层就是指我们通常所用到的RS232、RS485、红外、光纤 、无线等等通信方式。在这个层面上,底层软件提供两个基本的操作函数:发送一个字节数据、接收一个字节数据。所有的数据协议全部建立在这两个操作方法之上。

    通信中的数据往往以数据包的形式进行传送的,我们把这样的一个数据包称作为一帧数据。类似于网络通信中的TCPIP协议一般,比较可靠的通信协议往往包含有以下几个组成部分:帧头、地址信息、数据类型、数据长度、数据块、校验码、帧尾。

      帧头和帧尾用于数据包完整性的判别,通常选择一定长度的固定字节组成,要求是在整个数据链 中判别数据包的误码率越低越好。减小固定字节数据的匹配机会,也就是说使帧头和帧尾的特征字节在整个数据链中能够匹配的机会最小。通常有两种做法,一、减 小特征字节的匹配几率。二、增加特征字节的长度。通常选取第一种方法的情况是整个数据链路中的数据不具有随即性,数据可预测,可以通过人为选择帧头和帧尾 的特征字来避开,从而减小特征字节的匹配几率。使用第二种方法的情况更加通用,适合于数据随即的场合。通过增加特征字节的长度减小匹配几率,虽然不能够完 全的避免匹配的情况,但可以使匹配几率大大减小,如果碰到匹配的情况也可以由校验码来进行检测,因此这种情况在绝大多说情况下比较可靠。

      地址信息主要用于多机通信中,通过地址信息的不同来识别不同的通信终端。在一对多的通信系统中,可以只包含目的地址信息。同时包含源地址和目的地址则适用于多对多的通信系统。

      数据类型、数据长度和数据块是主要的数据部分。数据类型可以标识后面紧接着的是命令还是数据。数据长度用于指示有效数据的个数。

      校验码则用来检验数据的完整性和正确性。通常对数据类型、数据长度和数据块三个部分进行相关的运算得到。最简单的做法可是对数据段作累加和,复杂的也可以对数据进行CRC运算等等,可以根据运算速度、容错度等要求来选取。

      2. 上位机和下位机中的数据发送

      物理通信层中提供了两个基本的操作函数,发送一个字节数据则为数据发送的基础。数据包的发送即把数据包中的左右字节按照顺序一个一个的发送数据而已。当然发送的方法也有不同。

      在单片机 系统中,比较常用的方法是直接调用串口 发送单个字节数据的函数。这种方法的缺点是需要处理器 在 发送过程中全程参与,优点是所要发送的数据能够立即的出现在通信线路上,能够立即被接收端接收到。另外一种方法是采用中断发送的方式,所有需要发送的数据 被送入一个缓冲区,利用发送中断将缓冲区中的数据发送出去。这种方法的优点是占用处理器资源小,但是可能出现需要发送的数据不能立即被发送的情况,不过这 种时延相当的小。对于51系列单片机,比较倾向于采用直接发送的方式,采用中断发送的方式比较占用RAM资源,而且对比直接发送来说也没有太多的优点。以 下是51系列单片机中发送单个字节的函数。

    void SendByte(unsigned CHAR ch)

    {

    SBUF = ch;

    while(TI == 0);

    TI = 0;

    }

      上位机中关于串口通信的方式也有多种,这种方式不是指数据有没有缓冲的问题,而是操作串口 的方式不同,因为PC上数据发送基本上都会被缓冲后再发送。对于编程来说操作串口有三种方式,一、使用windows系统中自带的串口通信控件,这种方式 使用起来比较简单,需要注意的是接收时的阻塞处理和线程机制。二、使用系统的API直接进行串口数据的读取,在windows和linux系统中,设备被 虚拟为文件,只需要利用系统提供的API函数即可进行串口数据的发送和读取。三、使用串口类进行串口操作。在此只介绍windows环境下利用串口类编程 的方式。

      CSerialPort是比较好用的串口类。它提供如下的串口操作方法:

      void WriteToPort(CHAR * string, int len);

      串口初始化成功后,调用此函数即可向串口发送数据。为了避免串口缓冲所带来的延时,可以开启串口的冲刷机制。  3. 下位机中的数据接收和协议解析

      下位机接收数据也有两种方式,一、等待接收,处理器一直查询串口状态,来判断是否接收到数据。二、中断接收。两种方法的优缺点在此前的一篇关于串口通信的文章中详细讨论过。得出的结论是采用中断接收的方法比较好。

      数据包的解析过程可以设置到不同的位置。如果协议比较简单,整个系统只是处理一些简单的命 令,那么可以直接把数据包的解析过程放入到中断处理函数中,当收到正确的数据包的时候,置位相应的标志,在主程序中再对命令进行处理。如果协议稍微复杂, 比较好的方式是将接收的数据存放于缓冲区中,主程序读取数据后进行解析。也有两种方式交叉使用的,比如一对多的系统中,首先在接收中断中解析“连接”命 令,连接命令接收到后主程序进入设置状态,采用查询的方式来解析其余的协议。

      以下给出具体的实例。在这个系统中,串口的命令非常简单。所有的协议全部在串口中断中进行。数据包的格式如下:

      0x55, 0xAA, 0x7E, 0x12, 0xF0, 0x02, 0x23, 0x45, SUM, XOR, 0x0D

      其中0x55, 0xAA, 0x7E为数据帧的帧头,0x0D为帧尾,0x12为设备的目的地址,0xF0为源地址,0x02为数据长度,后面接着两个数据0x23, 0x45,从目的地址开始结算累加、异或校验和,到数据的最后一位结束。

      协议解析的目的,首先判断数据包的完整性,正确性,然后提取数据类型,数据等数据,存放起来用于主程序处理。代码如下:

    if(state_machine == 0) // 协议解析状态机

    {

    if(rcvdat == 0x55) // 接收到帧头第一个数据

    state_machine = 1;

    else

    state_machine = 0; // 状态机复位

    }

    else if(state_machine == 1)

    {

    if(rcvdat == 0xAA) // 接收到帧头第二个数据

    state_machine = 2;

    else

    state_machine = 0; // 状态机复位

    }

    else if(state_machine == 2)

    {

    if(rcvdat == 0x7E) // 接收到帧头第三个数据

    state_machine = 3;

    else

    state_machine = 0; // 状态机复位

    }

    else if(state_machine == 3)

    {

    sumchkm = rcvdat; // 开始计算累加、异或校验和

    xorchkm = rcvdat;

    if(rcvdat == m_SrcAdr) // 判断目的地址是否正确

    state_machine = 4;

    else

    state_machine = 0;

    }

    else if(state_machine == 4)

    {

    sumchkm += rcvdat;

    xorchkm ^= rcvdat;

    if(rcvdat == m_DstAdr) // 判断源地址是否正确

    state_machine = 5;

    else

    state_machine = 0;

    }

    else if(state_machine == 5)

    {

    lencnt = 0; // 接收数据计数器

    rcvcount = rcvdat; // 接收数据长度

    sumchkm += rcvdat;

    xorchkm ^= rcvdat;

    state_machine = 6;

    }

    else if(state _machine == 6 || state _machine == 7)

    {

    m_ucData[lencnt++] = rcvdat; // 数据保存

    sumchkm += rcvdat;

    xorchkm ^= rcvdat;

    if(lencnt == rcvcount) // 判断数据是否接收完毕

    state_machine = 8;

    else

    state_machine = 7;

    }

    else if(state_machine == 8)

    {

    if(sumchkm == rcvdat) // 判断累加和是否相等

    state_machine = 9;

    else

    state_machine = 0;

    }

    else if(state_machine == 9)

    {

    if(xorchkm == rcvdat) // 判断异或校验和是否相等

    state_machine = 10;

    else

    state_machine = 0;

    }

    else if(state_machine == 10)

    {

    if(0x0D == rcvdat) // 判断是否接收到帧尾结束符

    {

    retval = 0xaa; // 置标志,表示一个数据包接收到

    }

    state_machine = 0; // 复位状态机

    }

      此过程中,使用了一个变量state_machine作为协议状态机的转换状态,用于确定 当前字节处于一帧数据中的那个部位,同时在接收过程中自动对接收数据进行校验和处理,在数据包接收完的同时也进行了校验的比较。因此当帧尾结束符接收到的 时候,则表示一帧数据已经接收完毕,并且通过了校验,关键数据也保存到了缓冲去中。主程序即可通过retval的标志位来进行协议的解析处理。

      接收过程中,只要哪一步收到的数据不是预期值,则直接将状态机复位,用于下一帧数据的判断,因此系统出现状态死锁的情况非常少,系统比较稳定,如果出现丢失数据包的情况也可由上位机进行命令的补发,不过这种情况笔者还没有碰到。

      对于主程序中进行协议处理的过程与此类似,主程序循环中不断的读取串口缓冲区的数据,此数据即参与到主循环中的协议处理过程中,代码与上面所述完全一样。

      4. 上位机中的数据接收和命令处理

      上位机中数据接收的过程与下位机可以做到完全一致,不过针对不同的串口操作方法有所不同。 对于阻赛式的串口读函数,例如直接进行API操作或者调用windows的串口通信控件,最好能够开启一个线程专门用于监视串口的数据接收,每接收到一个 数据可以向系统发送一个消息。笔者常用的CSerialPort类中就是这样的处理过程。CSerialPort打开串口后开启线程监视串口的数据接收, 将接收的数据保存到缓冲区,并向父进程发送接收数据的消息,数据将随消息一起发送到父进程。父进程中开启此消息的处理函数,从中获取串口数据后就可以把以 上的代码拷贝过来使用。

      CSerialPort向父类发送的消息号如下:

      #define WM_COMM_RXCHAR WM_USER+7 // A CHAR acter was received and placed in the input buffer.

      因此需要手动添加此消息的响应函数:

      afx_msg LON G OnCommunication(WPARAM ch, LPARAM port);

      ON_MESS AGE(WM_COMM_RXCHAR , OnCommunication)

      响应函数的具体代码如下:

    LONG CWellInfoView::OnCommunication(WPARAM ch, LPARAM port)

    {

    int retval = 0;

    rcvdat = (BYTE)ch; if(state_machine == 0) // 协议解析状态机

    {

    if(rcvdat == 0x55) // 接收到帧头第一个数据

    state_machine = 1;

    else

    state_machine = 0; // 状态机复位

    }

    else if(state_machine == 1)

    {

    if(rcvdat == 0xAA) // 接收到帧头第二个数据

    state_machine = 2;

    else

    state_machine = 0; // 状态机复位

    ......

       5. 总结

      以上给出的是通信系统运作的基本雏形,虽然简单,但是可行。实际的通信系统中协议比这个要复杂,而且涉及到数据包响应、命令错误、延时等等一系列的问题,在这样的一个基础上可以克服这些困难并且实现出较为稳定可靠的系统。

    一种实现RS422通信协议的接口电路

     

      目前通用的串行通信接口 标准主要有RS 232,RS 422和RS 485,其中RS 232属于单端不平衡传输协议,传输距离短,抗干扰性差;RS 485与RS 422均为平衡通信接口,但RS 485他只有一对双绞线 ,工作于半双工模式。RS 422属于一种平衡通信接口,采用全双工通信模式,传输速率高达10 Mb/s,传输距离长2 000 m,并允许在一条平衡总线 上连接最多10个接收器[1]。由于该类电路 的优异性能,RS 422接口芯片 已广泛应用于工业控制、仪器仪表 、多媒体网络、机电一体化产品等诸多领域。

      1 系统概述

      RS 422通信接口芯片 系统框图如图1所示,主要包含数据发送模块和接收模块 。 接收模块主要是将通信总线差分电压转换成数字量送给主机,发送模块主要是将主机发送的数字量转换成差分电压输出。DIN是TTL/CMOS信号输入端 口,TX1,TX2为相应的差分信号输出端。RX1,RX2为差分信号输入端口,DOUT为TTL/CMOS电平输出口。EN为使能输入端,通过使能模块 控制整个芯片的工作与否。此外还含有温控模块,在高温下关断芯片,起到过热保护的作用。

      2 电路设计

      根据RS 422通信规范的描述,数据发送端使用2根信号线 发送同一信号(2根线的极性相反),在接收端对这两根线上的电压信号相减得到实际信号。逻辑"1"以两线间的电压差为+(2~6 V)表示,逻辑"0"以两线间的电压差为-(2~6 V)表示。

      因此,发送器 的目的就是要接收TTL/CMOS信号并把他转换为一对符合要求的差分信号,而接收器则与之相反。

      2.1发送器电路的设计

      发送器电路的设计有2种方法,一种不限摆率,发送数据速度可达10 Mb/s,但受信号在传输线上的反射(re-flection)、电磁干扰(electron magnet interference)的影响,传输距离较短;另一种采取限摆率技术,通过降低数据传送速度达到长距离传输的目的[2]。本文采取第一种方法。

      在CMOS工艺下,这种电路很容易实现,关键是选择具有合适尺寸的电路使其符合输出电流及功率要求。如图2所示为本文设计的电路图,电路要求是输出电平同TTL电平的兼容,所以输功率管 采用的都是NMOS管。

      DIN为数据输入端,EN为使能端,EN为高电平时电路工作。当DIN为高时,N0及N3导通而N1,N2截止,T×1输出高电平而T×2输出低电平。反之,若DIN为低时,N0及N3截止而N1,N2导通。这样,逻辑控制电路 便将标准的TTL/CMOS信号分为2路大小相等,相位相反的差分信号T×1和T×2。为提供合适的驱动电流,输出管采用较大的尺寸。

      2.2接收器电路设计

      接收电路接收RS 422的标准差分信号并将其转化为CMOs/TTL电平,其核心电路为一比较器 [3],主要功能是完成差分信号R×1,R×2的比较,若R×1>R×2,则输出高电平1,若R×1<R×2,则输出低电平0。

      P14~P16与N14,N15构成启动电路,P12,P13与N12,N13,R0构成偏置电 路,P0~P6与。N0~N5为比较电路,该比较器利用内部正反馈实现迟滞电压控制[4],以防止受噪声干扰造成输出端的频繁跳变。迟滞电压可通过调节 N0,N1,N2,N3的宽长比来实现。以N1,N2支路为例,阐述阈值电压的推导:当R×1为高,R×2为低时,P1及N1,N2支路导通:R×2不断 降低,与R×1差值达到VTRP输出跳变:

      本文选择100 mV的迟滞电压,有效保证了系统的稳定性。由比较器输出的电压,经过施密特触发器 及反相器整形后,成为标准的方波信号输出。

      2.3过温保护电路的设计

      电路中使用与发送电路中结构相同的迟滞比较器,设置了95℃和135℃两个温度跳转点,消除了热振荡现象。

      温度保护电路的工作原理如下:N5,N6,P2,P3,P4, Q3,Q4及R4,R3,R1构成基准发生电路,Y为基准电压输出点。由于共源共栅器件的作用,N5,N6源端电位近似相等.

      通过调节R2与R1的比值使基准电压具有零温度系数,调节R4的值使输出合适的基准电压值。

      X点电压大约为3VBE,由于VBE是一个具有负温度系数的量,因此随温度的上升而下降。常温时,X点电位高 于Y点电位,OUT端输出高电平,芯片正常工作。当温度上升至135℃时,X点电位低于Y点电位,比较器输出低电平,芯片关断。当芯片温度再次下降,低到 95℃时,比较器再次翻转,芯片恢复正常工作。

      3 仿真结果

      3.1发送电路的仿真

      波形从上至下依次为:使能信号EN、输入波形、TX1、TX2、负载电阻 电流。从图5中可以看出,发送器电路能够将一路CMOS信号转换为一对大小相等、方向相反的差分信号。在带100 Ω负载时,输出高电平为3 V,低电平0.3 v,负载电流27 mA,延迟9 ns上升时间4 ns,下降时间5 ns。使能信号EN为低时,电路不工作。

      3.2接收电路的仿真

      接收电路的仿真情况,他能够将差分信号转换为标准CMOS电平,延迟大约为2 ns,上升约为0.5 ns,下降时间约为1 ns,迟滞电压约为1 00 mV。

      3.3过温保护模块的仿真

      对温度保护电路在0~140℃范围内进行扫描可得如上曲线,当芯片温度上升至大约在135℃时,温度保护模块输出低电平,关断芯片。当芯片温度下降至95℃时,温度保护模块输出电平跳变,芯片恢复正常工作。

      4 版图设计

      (1)为了防止电阻寄生的PN结正向导通,图4比较电路中R1,R2,R3,R4不能选取有源区电阻,只能选取多晶硅电阻。绘制时要注意匹配,如采用1∶2∶4的匹配方式。为了保证所有电阻所处的光刻环境一样,还在电阻阵列2边增加了DUMMY 电阻。

      (2)对称性设计:电路中所有对称的MOS管及PNP管都要注意匹配,绘制版图时,可以把一个大的MOS管分成若干小管,采用共质心对称的方式以避免工艺的横向偏差和纵向偏差的影响,并添加DUMMY 管。对于PNP管,如发射极面积比为1∶8的Q4和Q3,可采用1∶8的排列方式,即将Q3分成8个相同的PNP管,对称排列在Q4周围。

      (3)ES[)设计:ESD不仅仅要在放在I/O PAD旁,VDD及GND之间的ESD保护同样要引起高度注意,这可以通过添加sLtpply clamp电路实现。ESD器可采用LVTSCR结构以获得更加稳定的性能。

      (4)输山功率管设计:对于驱动器 部分的输山火功率管,采用又指晶体管 的设计方式,以减少漏源结面积和栅电阻。

      (5)保护环设计:为保护一些结构,要在适当的电路外围添加保护环。本芯片采用P衬底N阱工艺,有2种保护环,N阱的周围应该加吸收少子电子 的 N型保护环(nt-ap),ntap环接VDD,隔离衬底噪声;P衬底的周围应该加吸收少子空穴的P型保护环(ptap),ptap环接gnd,吸收衬底 噪声。而且双环对少子的吸收效果比单环好。添加保护环可有效防止闩锁效应的发生。由于电路中功率管宽长比较大,其上的电流及消耗的功率也较大,容易干扰其 他电路,因此需要在功率管及附近的电路的周围分别都添加保护环。

      5 结语

      设计了一款适用于RS 422通信协议的接口芯片,他具有高传输速率、大驱动电流、低静态关断电流的特点,且具有多种保护电路,能抵抗恶劣环境,可广泛用于各类数据通信领域。

    HART通信协议在现场仪表远程通信中的实现

     

      1 HART协议简介

      HART(Highway Addressable Remote Transducer),可寻址远程传感器 高速通道的开放通信协议,是美国Rosemen公司于1985 年推出的一种用于现场智能仪表 和控制室设备之间的通信协议

      HART装置提供具有相对低的带宽,适度响应时间的通信,经过10多年的发展,HART技术在国外已经十分成熟,并已成为全世界智能仪表的工业标准

      HART协议采用基于Bell202标准的FSK频移键控信号,在低频的

      4~20mA模拟信号上叠加幅度为0.5mA的音频数字信号进行双向数字通讯,数据传输率为1.2Mbps由于FSK信号的平均值为0,不影响传送给控制系统模拟信号的大小,保证了与现有模拟系统的兼容性

      在HART协议通信中,主要的变量和控制信息由4~20mA传送,在需要的情况下,另外的测量、过程参数、设备组态、校准、诊断信息通过HART协议访问

      HART通信采用的是半双工的通信方式

      HART协议参考 ISO/OSI(开放系统互连模型 ),采用了它的简化三层模型结构,即第一层物理层,第二层数据链路层和第七层应用层

      第一层:物理层规定了信号的传输方法、传输介质,为了实现模拟通信和数字通信同时进行而又互不干扰,HART 协议采用频移键控技术FSK,即在4~20mA模拟信号上迭加一个频率信号,频率信号采用Be11202国际标准,数字信号的传送波特率设定为 1200bps,1200Hz代表逻辑“0”,2200Hz代表逻辑“1”,信号幅值0.5A

      通信介质的选择视传输距离长短而定通常采用双绞同轴电缆 作为传输介质时,最大传输距离可达到1500m线路总阻抗应在230~1100Ω之间

      第二层:数据链路层规定了HART帧的格式,实现建立、维护、终结链路通讯功能HART协议根据冗余检错码信息,采用自动重复请求发送机制,消除由于线路噪音或其他干扰引起的数据通讯出错,实现通讯数据无差错传送

      现场仪表要执行HART指令,操作数必须合乎指定的大小每个独立的字符包括1个起始位、8个数据位、1个奇偶校验位和一个停止位由于数据的有无和长短并不恒定,所以HART数据的长度也是不一样的,最长的HART数据包含25个字节

      第七层:应用层为HART命令集,用于实现 HART指令命令分为三类,即通用命令、普通命令和专用命令

      2 现场仪表HART协议远程通信硬件设计

      某现场仪表的HART协议部分主要完成数字信号到模拟电流信号的转换,并实现对主要变量和测量、过程参数、设备组态、校准及诊断信息的访问

      HART通信部分主要由D/A转换和Bell202

      MODEM及其附属电路 来实现其中,D/A变换作用是直接将数字信号转换成4~20mA电流输出,以输出主要的变量Bell202

      MODEM及其附属电路的作用是对叠加在4~20mA环路上的信号进行带通滤波放大后,HART通信单元如果检测到FSK频移键控信号,则由Bell202

      MODEM将1200Hz的信号解调为“1”,2200Hz信号解调为“0”的数字信号,通过串口 通信交MCU ,MCU接收命令帧,作相应的数据处理然后,MCU产生要发回的应答帧,应答帧的数字信号由MODEM调制成相应的1200Hz和2200Hz的FSK频移键控信号,波形整形后,经AD421叠加在环路上发出

      D/A变换器 采用AD421,它是美国ADI公司推出的一种单片高性能数模转换器 ,由环路供电,16位数字信号以串行方式输入,可以将数字信号直接转换成4~20mA电流输出它提供了高精度、全集成、低功耗的解决方案 ,采用16引脚DIP、TSSOP、SOIC封装,可实现低成本的远程智能工业控制AD421包括串行输入16位D/A(数字/电流 )转换,除自身用电外,还提供可选择的(5V,3.3 V或 3 V)稳压输出供变送器 其他部分用电

      HART MODEM采用 Smar公司的 HT2012,是符合Bell202标准的半双工调制解调器 ,实现HART协议规定的数字通信的编码或译码该芯片专为HART仪器 设计,片内集成了符合 BELL202标准的调制器、解调器、时钟及定时电路、检测控制电路 性价比较高,16脚 DIP和28脚PLC C封装,在+5V供电时工作电流80μAHT2012与微控制器 交换数字信号,同AD421作模拟信号接口 它一方面与MCU的异步串行通信口进行串行通信,一方面将输入的不归零的数字信号调制成FSK信号,再经AD421叠加在4~20mA的回路上输出,或者将回路信号经带通滤波、放大整形后取出FSK信号解调为数字信号,从而实现HART通信

      对于HART MODEM所需要的输入时钟,采用7.3728MHz的晶振 通过两个计数器 74LS161进行两次4分频,得到16分频的时钟

      由于HART数字通信的要求,有0.5mA的正弦波电流信号叠加在4mA电流上,因此整个硬件电路必须保证在3.5mA以下还能正常工作,因此实现系统的低功耗设计非常重要

      通信的软件设计

      HART通信程序也即为HART协议数据链路层和应用层的软件实现,是整个现场仪表软件设计的关键

      在HART通信过程中,主机(上位机)发送命令帧,现场仪表通过串行口中断接收到命令帧后,由MCU作相应的数据处理,产生应答帧,由MCU触发发送中断,发出应答帧,从而完成一次命令交换

      首先在上电或者看门狗复位后,主程序要对通信部分进行初始化,主要包括波特率设定、串口工作方式设定、清通信缓冲区、开中断等

      在初始化完成之后通讯部分就一直处在准备接收状态下,一旦上位机有命令发来,HT2012的载波检测口OCD 变为低电平,触发中断,启动接收,程序就进入接收部分然后完成主机命令的解释并根据命令去执行相应的操作,最后按一定的格式生成应答帧并送入通信缓冲区, 启动发送,完成后关闭SCI

      在发送应答帧之后,再次进入等待状态,等待下一条主机命令

      4 结语

      实践证明,上述方法具有结构简单、工作可靠的特点,完全符合HART协议,具有较好的通用性

      由于HART众多不容置疑的优点,使得它成为全世界应用最广的现场通信协议,已成为工业上实用的标准因此在今后很长一段时期内,HART协议产品在国内仍然具有十分广阔的市场

    展开全文
  • CAN通信详解

    万次阅读 多人点赞 2017-04-11 16:59:34
    本章我们将向大家介绍如何使用STM32自带的CAN控制器来实现两个开发板之间的CAN通讯,并将结果显示在TFTLCD模块上。...CAN是Controller Area Network的缩写(以下称为CAN),是ISO国际标准化的串行通信协议。在当前的汽

    本章我们将向大家介绍如何使用STM32自带的CAN控制器来实现两个开发板之间的CAN通讯,并将结果显示在TFTLCD模块上。本章分为如下几个部分:

    30.1 CAN简介

    30.2 硬件设计

    30.3 软件设计

    30.4 下载验证

    30.1 CAN简介

    CAN 是Controller Area Network 的缩写(以下称为CAN),是ISO国际标准化的串行通信协议。在当前的汽车产业中,出于对安全性、舒适性、方便性、低公害、低成本的要求,各种各样的电子控制系统被开发了出来。由于这些系统之间通信所用的数据类型及对可靠性的要求不尽相同,由多条总线构成的情况很多,线束的数量也随之增加。为适应“减少线束的数量”、“通过多个LAN,进行大量数据的高速通信”的需要,1986 年德国电气商博世公司开发出面向汽车的CAN 通信协议。此后,CAN 通过ISO11898 及ISO11519 进行了标准化,现在在欧洲已是汽车网络的标准协议。   

    现在,CAN 的高性能和可靠性已被认同,并被广泛地应用于工业自动化、船舶、医疗设备、工业设备等方面。现场总线是当今自动化领域技术发展的热点之一,被誉为自动化领域的计算机局域网。它的出现为分布式控制系统实现各节点之间实时、可靠的数据通信提供了强有力的技术支持。

    CAN 控制器根据两根线上的电位差来判断总线电平。总线电平分为显性电平和隐性电平,二者必居其一。发送方通过使总线电平发生变化,将消息发送给接收方。

    CAN协议具有一下特点:

    1)  多主控制。在总线空闲时,所有单元都可以发送消息(多主控制),而两个以上的单元同时开始发送消息时,根据标识符(Identifier 以下称为 ID)决定优先级。ID 并不是表示发送的目的地址,而是表示访问总线的消息的优先级。两个以上的单元同时开始发送消息时,对各消息ID 的每个位进行逐个仲裁比较。仲裁获胜(被判定为优先级最高)的单元可继续发送消息,仲裁失利的单元则立刻停止发送而进行接收工作。

    2)  系统的若软性。与总线相连的单元没有类似于“地址”的信息。因此在总线上增加单元时,连接在总线上的其它单元的软硬件及应用层都不需要改变。

    3)  通信速度较快,通信距离远。最高1Mbps(距离小于40M),最远可达10KM(速率低于5Kbps)。

    4)  具有错误检测、错误通知和错误恢复功能。所有单元都可以检测错误(错误检测功能),检测出错误的单元会立即同时通知其他所有单元(错误通知功能),正在发送消息的单元一旦检测出错误,会强制结束当前的发送。强制结束发送的单元会不断反复地重新发送此消息直到成功发送为止(错误恢复功能)。

    5)  故障封闭功能。CAN 可以判断出错误的类型是总线上暂时的数据错误(如外部噪声等)还是持续的数据错误(如单元内部故障、驱动器故障、断线等)。由此功能,当总线上发生持续数据错误时,可将引起此故障的单元从总线上隔离出去。

    6)  连接节点多。CAN 总线是可同时连接多个单元的总线。可连接的单元总数理论上是没有限制的。但实际上可连接的单元数受总线上的时间延迟及电气负载的限制。降低通信速度,可连接的单元数增加;提高通信速度,则可连接的单元数减少。

    正是因为CAN协议的这些特点,使得CAN特别适合工业过程监控设备的互连,因此,越来越受到工业界的重视,并已公认为最有前途的现场总线之一。

    CAN协议经过ISO标准化后有两个标准:ISO11898标准和ISO11519-2标准。其中ISO11898是针对通信速率为125Kbps~1Mbps的高速通信标准,而ISO11519-2是针对通信速率为125Kbps以下的低速通信标准。

    本章,我们使用的是450Kbps的通信速率,使用的是ISO11898标准,该标准的物理层特征如图30.1.1所示:

     

     

    图30.1.1 ISO11898物理层特性

        从该特性可以看出,显性电平对应逻辑0,CAN_H和CAN_L之差为2.5V左右。而隐性电平对应逻辑1,CAN_H和CAN_L之差为0V。在总线上显性电平具有优先权,只要有一个单元输出显性电平,总线上即为显性电平。而隐形电平则具有包容的意味,只有所有的单元都输出隐性电平,总线上才为隐性电平(显性电平比隐性电平更强)。另外,在CAN总线的起止端都有一个120Ω的终端电阻,来做阻抗匹配,以减少回波反射。

           CAN协议是通过以下5种类型的帧进行的:

    l  数据帧

    l  要控帧

    l  错误帧

    l  过载帧

    l  帧间隔

    另外,数据帧和遥控帧有标准格式和扩展格式两种格式。标准格式有11 个位的标识符(ID),扩展格式有29 个位的ID。各种帧的用途如表30.1.1所示:

    帧类型

    帧用途

    数据帧

    用于发送单元向接收单元传送数据的帧

    遥控帧

    用于接收单元向具有相同 ID 的发送单元请求数据的帧

    错误帧

    用于当检测出错误时向其它单元通知错误的帧

    过载帧

    用于接收单元通知其尚未做好接收准备的帧

    间隔帧

    用于将数据帧及遥控帧与前面的帧分离开来的帧

    表30.1.1 CAN协议各种帧及其用途

           由于篇幅所限,我们这里仅对数据帧进行详细介绍,数据帧一般由7个段构成,即:

    (1)       帧起始。表示数据帧开始的段。

    (2)       仲裁段。表示该帧优先级的段。

    (3)       控制段。表示数据的字节数及保留位的段。

    (4)       数据段。数据的内容,一帧可发送0~8个字节的数据。

    (5)       CRC段。检查帧的传输错误的段。

    (6)       ACK段。表示确认正常接收的段。

    (7)       帧结束。表示数据帧结束的段。

    数据帧的构成如图30.1.2所示:

     


    图30.1.2 数据帧的构成

    图中D表示显性电平,R表示隐形电平(下同)。

    帧起始,这个比较简单,标准帧和扩展帧都是由1个位的显性电平表示帧起始。

    仲裁段,表示数据优先级的段,标准帧和扩展帧格式在本段有所区别,如图30.1.3所示:

    图30.1.3 数据帧仲裁段构成

    标准格式的ID 有11 个位。从ID28 到ID18 被依次发送。禁止高7 位都为隐性(禁止设定:ID=1111111XXXX)。扩展格式的 ID 有29 个位。基本ID 从ID28 到ID18,扩展ID 由ID17 到ID0 表示。基本ID和标准格式的ID 相同。禁止高7 位都为隐性(禁止设定:基本ID=1111111XXXX)。

    其中RTR位用于标识是否是远程帧(0,数据帧;1,远程帧),IDE位为标识符选择位(0,使用标准标识符;1,使用扩展标识符),SRR位为代替远程请求位,为隐性位,它代替了标准帧中的RTR位。

    控制段,由6个位构成,表示数据段的字节数。标准帧和扩展帧的控制段稍有不同,如图30.1.4所示:

     

    图30.1.4 数据帧控制段构成

           上图中,r0和r1为保留位,必须全部以显性电平发送,但是接收端可以接收显性、隐性及任意组合的电平。DLC段为数据长度表示段,高位在前,DLC段有效值为0~8,但是接收方接收到9~15的时候并不认为是错误。

    数据段,该段可包含0~8个字节的数据。从最高位(MSB)开始输出,标准帧和扩展帧在这个段的定义都是一样的。如图30.1.5所示:

     

    图30.1.5 数据帧数据段构成

           CRC段,该段用于检查帧传输错误。由15个位的CRC顺序和1个位的CRC界定符(用于分隔的位)组成,标准帧和扩展帧在这个段的格式也是相同的。如图30.1.6所示:

     

      

    图30.1.6 数据帧CRC段构成

           此段CRC的值计算范围包括:帧起始、仲裁段、控制段、数据段。接收方以同样的算法计算 CRC 值并进行比较,不一致时会通报错误。

           ACK段,此段用来确认是否正常接收。由ACK槽(ACK Slot)和ACK界定符2个位组成。标准帧和扩展帧在这个段的格式也是相同的。如图30.1.7所示:

     

    图30.1.7 数据帧CRC段构成

    发送单元的ACK,发送2个位的隐性位,而接收到正确消息的单元在ACK槽(ACK Slot)发送显性位,通知发送单元正常接收结束,这个过程叫发送ACK/返回ACK。发送 ACK 的是在既不处于总线关闭态也不处于休眠态的所有接收单元中,接收到正常消息的单元(发送单元不发送ACK)。所谓正常消息是指不含填充错误、格式错误、CRC 错误的消息。

    帧结束,这个段也比较简单,标准帧和扩展帧在这个段格式一样,由7个位的隐性位组成。

           至此,数据帧的7个段就介绍完了,其他帧的介绍,请大家参考光盘的CAN入门书.pdf相关章节。接下来,我们再来看看CAN的位时序。

    由发送单元在非同步的情况下发送的每秒钟的位数称为位速率。一个位可分为 4 段。

    l  同步段(SS)

    l  传播时间段(PTS)

    l  相位缓冲段1(PBS1)

    l  相位缓冲段2(PBS2)

    这些段又由可称为 Time Quantum(以下称为Tq)的最小时间单位构成。

    1 位分为4 个段,每个段又由若干个Tq 构成,这称为位时序。

    1 位由多少个Tq 构成、每个段又由多少个Tq 构成等,可以任意设定位时序。通过设定位时序,多个单元可同时采样,也可任意设定采样点。各段的作用和 Tq 数如表30.1.2所示:

     

    表30.1.2 一个位各段及其作用

           1个位的构成如图30.1.8所示:

     

    图30.1.8 一个位的构成

           上图的采样点,是指读取总线电平,并将读到的电平作为位值的点。位置在 PBS1 结束处。根据这个位时序,我们就可以计算CAN通信的波特率了。具体计算方法,我们等下再介绍,前面提到的CAN协议具有仲裁功能,下面我们来看看是如何实现的。

    在总线空闲态,最先开始发送消息的单元获得发送权。

    当多个单元同时开始发送时,各发送单元从仲裁段的第一位开始进行仲裁。连续输出显性电平最多的单元可继续发送。实现过程,如图30.1.9所示:

     

    图30.1.9 CAN总线仲裁过程

           上图中,单元1和单元2同时开始向总线发送数据,开始部分他们的数据格式是一样的,故无法区分优先级,直到T时刻,单元1输出隐性电平,而单元2输出显性电平,此时单元1仲裁失利,立刻转入接收状态工作,不再与单元2竞争,而单元2则顺利获得总线使用权,继续发送自己的数据。这就实现了仲裁,让连续发送显性电平多的单元获得总线使用权。

           通过以上介绍,我们对CAN总线有了个大概了解(详细介绍参考光盘的:《CAN入门书.pdf》),接下来我们介绍下STM32的CAN控制器。

           STM32自带的是bxCAN,即基本扩展CAN。它支持CAN协议2.0A和2.0B。它的设计目标是,以最小的CPU负荷来高效处理大量收到的报文。它也支持报文发送的优先级要求(优先级特性可软件配置)。对于安全紧要的应用,bxCAN提供所有支持时间触发通信模式所需的硬件功能。

    STM32的bxCAN的主要特点有:

    l  支持CAN协议2.0A和2.0B主动模式

    l  波特率最高达1Mbps

    l  支持时间触发通信

    l  具有3个发送邮箱

    l  具有3级深度的2个接收FIFO

    l  可变的过滤器组(最多28个)

    在STM32互联型产品中,带有2个CAN控制器,而我们使用的STM32F103ZET6属于增强型,不是互联型,只有1个CAN控制器。双CAN的框图如图30.1.10所示:

     

    图30.1.10 双CAN框图

           从图中可以看出两个CAN都分别拥有自己的发送邮箱和接收FIFO,但是他们共用28个滤波器。通过CAN_FMR寄存器的设置,可以设置滤波器的分配方式。

           STM32的标识符过滤是一个比较复杂的东东,它的存在减少了CPU处理CAN通信的开销。STM32的过滤器组最多有28个(互联型),但是STM32F103ZET6只有14个(增强型),每个滤波器组x由2个32为寄存器,CAN_FxR1和CAN_FxR2组成。

    STM32每个过滤器组的位宽都可以独立配置,以满足应用程序的不同需求。根据位宽的不同,每个过滤器组可提供:

    ● 1个32位过滤器,包括:STDID[10:0]、EXTID[17:0]、IDE和RTR位

    ● 2个16位过滤器,包括:STDID[10:0]、IDE、RTR和EXTID[17:15]位

    此外过滤器可配置为,屏蔽位模式和标识符列表模式。

    在屏蔽位模式下,标识符寄存器和屏蔽寄存器一起,指定报文标识符的任何一位,应该按照“必须匹配”或“不用关心”处理。

    而在标识符列表模式下,屏蔽寄存器也被当作标识符寄存器用。因此,不是采用一个标识符加一个屏蔽位的方式,而是使用2个标识符寄存器。接收报文标识符的每一位都必须跟过滤器标识符相同。

    通过CAN_FMR寄存器,可以配置过滤器组的位宽和工作模式,如图30.1.11所示:

     

    图30.1.11 过滤器组位宽模式设置

    为了过滤出一组标识符,应该设置过滤器组工作在屏蔽位模式。

    为了过滤出一个标识符,应该设置过滤器组工作在标识符列表模式。

    应用程序不用的过滤器组,应该保持在禁用状态。

    过滤器组中的每个过滤器,都被编号为(叫做过滤器号,图30.1.11中的n)从0开始,到某个最大数值-取决于过滤器组的模式和位宽的设置。

           举个简单的例子,我们设置过滤器组0工作在:1个32为位过滤器-标识符屏蔽模式,然后设置CAN_F0R1=0XFFFF0000,CAN_F0R2=0XFF00FF00。其中存放到CAN_F0R1的值就是期望收到的ID,即我们希望收到的映像(STID+EXTID+IDE+RTR)最好是:0XFFFF0000。而0XFF00FF00就是设置我们需要必须关心的ID,表示收到的映像,其位[31:24]和位[15:8]这16个位的必须和CAN_F0R1中对应的位一模一样,而另外的16个位则不关心,可以一样,也可以不一样,都认为是正确的ID,即收到的映像必须是0XFFxx00xx,才算是正确的(x表示不关心)。

           关于标识符过滤的详细介绍,请参考《STM32参考手册》的22.7.4节(431页)。接下来,我们看看STM32的CAN发送和接收的流程。

     

           CAN发送流程

           CAN发送流程为:程序选择1个空置的邮箱(TME=1)à设置标识符(ID),数据长度和发送数据à设置CAN_TIxR的TXRQ位为1,请求发送à邮箱挂号(等待成为最高优先级)à预定发送(等待总线空闲)à发送à邮箱空置。整个流程如图30.1.12所示:

     

    图30.1.12 发送邮箱

           上图中,还包含了很多其他处理,不强制退出发送(ABRQ=1)和发送失败处理等。通过这个流程图,我们大致了解了CAN的发送流程,后面的数据发送,我们基本就是按照此流程来走。接下来再看看CAN的接收流程。

           CAN接收流程

           CAN接收到的有效报文,被存储在3级邮箱深度的FIFO中。FIFO完全由硬件来管理,从而节省了CPU的处理负荷,简化了软件并保证了数据的一致性。应用程序只能通过读取FIFO输出邮箱,来读取FIFO中最先收到的报文。这里的有效报文是指那些正确被接收的(直到EOF都没有错误)且通过了标识符过滤的报文。前面我们知道CAN的接收有2个FIFO,我们每个滤波器组都可以设置其关联的FIFO,通过CAN_FFA1R的设置,可以将滤波器组关联到FIFO0/FIFO1。

           CAN接收流程为:FIFO空à收到有效报文à挂号_1(存入FIFO的一个邮箱,这个由硬件控制,我们不需要理会)à收到有效报文à挂号_2à收到有效报文à挂号_3à收到有效报文à溢出。

           这个流程里面,我们没有考虑从FIFO读出报文的情况,实际情况是:我们必须在FIFO溢出之前,读出至少1个报文,否则下个报文到来,将导致FIFO溢出,从而出现报文丢失。每读出1个报文,相应的挂号就减1,直到FIFO空。CAN接收流程如图30.1.13所示:

     

    图30.1.13 FIFO接收报文

           FIFO接收到的报文数,我们可以通过查询CAN_RFxR的FMP寄存器来得到,只要FMP不为0,我们就可以从FIFO读出收到的报文。

           接下来,我们简单看看STM32的CAN位时间特性,STM32的CAN位时间特性和之前我们介绍的,稍有点区别。STM32把传播时间段和相位缓冲段1(STM32称之为时间段1)合并了,所以STM32的CAN一个位只有3段:同步段(SYNC_SEG)、时间段1(BS1)和时间段2(BS2)。STM32的BS1段可以设置为1~16个时间单元,刚好等于我们上面介绍的传播时间段和相位缓冲段1之和。STM32的CAN位时序如图30.1.14所示:

     

    图30.1.14 STM32 CAN位时序

           图中还给出了CAN波特率的计算公式,我们只需要知道BS1和BS2的设置,以及APB1的时钟频率(一般为36Mhz),就可以方便的计算出波特率。比如设置TS1=6、TS2=7和BRP=4,在APB1频率为36Mhz的条件下,即可得到CAN通信的波特率=36000/[(7+8+1)*5]=450Kbps。

           接下来,我们介绍一下本章需要用到的一些比较重要的寄存器。首先,来看CAN的主控制寄存器(CAN_MCR),该寄存器各位描述如图30.1.15:

     

    图30.1.15 寄存器CAN_MCR各位描述

    该寄存器的详细描述,请参考《STM32参考手册》22.9.2节(439页),这里我们仅介绍下INRQ位,该位用来控制初始化请求。

    软件对该位清0,可使CAN从初始化模式进入正常工作模式:当CAN在接收引脚检测到连续的11个隐性位后,CAN就达到同步,并为接收和发送数据作好准备了。为此,硬件相应地对CAN_MSR寄存器的INAK位清’0’。

    软件对该位置1可使CAN从正常工作模式进入初始化模式:一旦当前的CAN活动(发送或接收)结束,CAN就进入初始化模式。相应地,硬件对CAN_MSR寄存器的INAK位置’1’。

    所以我们在CAN初始化的时候,先要设置该位为1,然后进行初始化(尤其是CAN_BTR的设置,该寄存器,必须在CAN正常工作之前设置),之后再设置该位为0,让CAN进入正常工作模式。

    第二个,我们介绍CAN位时序寄存器(CAN_BTR),该寄存器用于设置分频、Tbs1、Tbs2以及Tsjw等非常重要的参数,直接决定了CAN的波特率。另外该寄存器还可以设置CAN的工作模式,该寄存器各位描述如图30.1.16所示:

     

     

    图30.1.16 寄存器CAN_BTR各位描述

           STM32提供了两种测试模式,环回模式和静默模式,当然他们组合还可以组合成环回静默模式。这里我们简单介绍下环回模式。

    在环回模式下,bxCAN把发送的报文当作接收的报文并保存(如果可以通过接收过滤)在接收邮箱里。也就是环回模式是一个自发自收的模式,如图30.1.17所示:

     

    图30.1.17 CAN环回模式

    环回模式可用于自测试。为了避免外部的影响,在环回模式下CAN内核忽略确认错误(在数据/远程帧的确认位时刻,不检测是否有显性位)。在环回模式下,bxCAN在内部把Tx输出回馈到Rx输入上,而完全忽略CANRX引脚的实际状态。发送的报文可以在CANTX引脚上检测到。

           第三个,我们介绍CAN发送邮箱标识符寄存器(CAN_TIxR)(x=0~3),该寄存器各位描述如图30.1.18所示:

     

    图30.1.18 寄存器CAN_TIxR各位描述

           该寄存器主要用来设置标识符(包括扩展标识符),另外还可以设置帧类型,通过TXRQ值1,来请求邮箱发送。因为有3个发送邮箱,所以寄存器CAN_TIxR有3个。

           第四个,我们介绍CAN发送邮箱数据长度和时间戳寄存器 (CAN_TDTxR) (x=0~2),该寄存器我们本章仅用来设置数据长度,即最低4个位。比较简单,这里就不详细介绍了。

           第五个,我介绍的是CAN发送邮箱低字节数据寄存器 (CAN_TDLxR) (x=0~2),该寄存器各位描述如图30.1.19所示:

     

    图30.1.19 寄存器CAN_TDLxR各位描述

           该寄存器用来存储将要发送的数据,这里只能存储低4个字节,另外还有一个寄存器CAN_TDHxR,该寄存器用来存储高4个字节,这样总共就可以存储8个字节。CAN_TDHxR的各位描述同CAN_TDLxR类似,我们就不单独介绍了。

           第六个,我们介绍CAN接收FIFO邮箱标识符寄存器 (CAN_RIxR) (x=0/1),该寄存器各位描述同CAN_TIxR寄存器几乎一模一样,只是最低位为保留位,该寄存器用于保存接收到的报文标识符等信息,我们可以通过读该寄存器获取相关信息。

           同样的,CAN接收FIFO邮箱数据长度和时间戳寄存器 (CAN_RDTxR) 、CAN接收FIFO邮箱低字节数据寄存器 (CAN_RDLxR)和CAN接收FIFO邮箱高字节数据寄存器 (CAN_RDHxR) 分别和发送邮箱的:CAN_TDTxR、CAN_TDLxR以及CAN_TDHxR类似,这里我们就不单独一一介绍了。详细介绍,请参考《STM32参考手册 》22.9.3节(447页)。

    第七个,我们介绍CAN过滤器模式寄存器(CAN_FM1R),该寄存器各位描述如图30.1.20所示:

     

    图30.1.20 寄存器CAN_FM1R各位描述

           该寄存器用于设置各滤波器组的工作模式,对28个滤波器组的工作模式,都可以通过该寄存器设置,不过该寄存器必须在过滤器处于初始化模式下(CAN_FMR的FINIT位=1),才可以进行设置。对STM32F103ZET6来说,只有[13:0]这14个位有效。

           第八个,我们介绍CAN过滤器位宽寄存器(CAN_FS1R),该寄存器各位描述如图30.1.21所示:

     

    图30.1.21 寄存器CAN_FS1R各位描述

           该寄存器用于设置各滤波器组的位宽,对28个滤波器组的位宽设置,都可以通过该寄存器实现。该寄存器也只能在过滤器处于初始化模式下进行设置。对STM32F103ZET6来说,同样只有[13:0]这14个位有效。

           第九个,我们介绍CAN过滤器FIFO关联寄存器(CAN_FFA1R),该寄存器各位描述如图30.1.22所示:

     

    图30.1.22 寄存器CAN_FFA1R各位描述

           该寄存器设置报文通过滤波器组之后,被存入的FIFO,如果对应位为0,则存放到FIFO0;如果为1,则存放到FIFO1。该寄存器也只能在过滤器处于初始化模式下配置。

           第十个,我们介绍CAN过滤器激活寄存器(CAN_FA1R),该寄存器各位对应滤波器组和前面的几个寄存器类似,这里就不列出了,对对应位置1,即开启对应的滤波器组;置0则关闭该滤波器组。

           最后,我们介绍CAN的过滤器组i的寄存器x(CAN_FiRx)(互联产品中i=0~27,其它产品中i=0~13;x=1/2)。该寄存器各位描述如图30.1.23所示:

     

    图30.1.23 寄存器CAN_FiRx各位描述

           每个滤波器组的CAN_FiRx都由2个32位寄存器构成,即:CAN_FiR1和CAN_FiR2。根据过滤器位宽和模式的不同设置,这两个寄存器的功能也不尽相同。关于过滤器的映射,功能描述和屏蔽寄存器的关联,请参见图30.1.11。

           关于CAN的介绍,就到此结束了。接下来,我们看看本章我们将实现的功能,及CAN的配置步骤。

           本章,我们通过WK_UP按键选择CAN的工作模式(正常模式/环回模式),然后通过KEY0控制数据发送,并通过查询的办法,将接收到的数据显示在LCD模块上。如果是环回模式,我们不需要2个开发板。如果是正常模式,我们就需要2个战舰开发板,并且将他们的CAN接口对接起来,然后一个开发板发送数据,另外一个开发板将接收到的数据显示在LCD模块上。

           最后,我们来看看本章的CAN的初始化配置步骤:

    1)配置相关引脚的复用功能,使能CAN时钟。

    我们要用CAN,第一步就要使能CAN的时钟,CAN的时钟通过APB1ENR的第25位来设置。其次要设置CAN的相关引脚为复用输出,这里我们需要设置PA11为上拉输入(CAN_RX引脚)PA12为复用输出(CAN_TX引脚),并使能PA口的时钟

    2)设置CAN工作模式及波特率等。

    这一步通过先设置CAN_MCR寄存器的INRQ位,让CAN进入初始化模式,然后设置CAN_MCR的其他相关控制位。再通过CAN_BTR设置波特率和工作模式(正常模式/环回模式)等信息。 最后设置INRQ为0,退出初始化模式。

    3)设置滤波器。

    本章,我们将使用滤波器组0,并工作在32位标识符屏蔽位模式下。先设置CAN_FMR的FINIT位,让过滤器组工作在初始化模式下,然后设置滤波器组0的工作模式以及标识符ID和屏蔽位。最后激活滤波器,并退出滤波器初始化模式。

    至此,CAN就可以开始正常工作了。如果用到中断,就还需要进行中断相关的配置,本章因为没用到中断,所以就不作介绍了。

      

    30.2 硬件设计

    本章要用到的硬件资源如下:

    1)  指示灯DS0

    2)  KEY0和WK_UP按键

    3) TFTLCD模块

    4) CAN

    5) CAN收发芯片JTA1050

    前面3个之前都已经详细介绍过了,这里我们介绍STM32与TJA1050连接关系,如图30.2.1所示:

     

    图30.2.1 STM32与TJA1050连接电路图

           从上图可以看出:STM32的CAN通过P13的设置,连接到TJA1050收发芯片,然后通过接线端子(CAN)同外部的CAN总线连接。图中可以看出,在战舰STM32开发板上面是带有120Ω的终端电阻的,如果我们的开发板不是作为CAN的终端的话,需要把这个电阻去掉,以免影响通信。

    这里还要注意,我们要设置好开发板上P13排针的连接,通过跳线帽将PA11和PA12分别连接到CRX(CAN_RX)和CTX(CAN_TX)上面,如图30.2.2所示:

     

    图30.2.2 硬件连接示意图

           最后,我们用2根导线将两个开发板CAN端子的CAN_L和CAN_L,CAN_H和CAN_H连接起来。这里注意不要接反了(CAN_L接CAN_H),接反了会导致通讯异常!!

    展开全文
  • 在概述了数据描述格式的基本知识、IO通信模型的基本知识后。我们终于可以进入这个系列博文的重点:系统间通信管理。在这个章节我将通过对RMI的详细介绍,引出一个重要的系统间通信的管理规范RPC,并且继续讨论一些...
  • 进程间通信和线程间通信总结

    千次阅读 2019-02-16 16:06:57
    写在前面 面试的时候一定不要疲劳战,比如上午面了一个,然后中午不休息直接赶到另外一个...进程间通信又称IPC(Inter-Process Communication),多个进程之间相互通信,交换信息的方法。根据进程通信时信息量大小的...
  • 下面的两篇文章我们将会在您已经理解原生的JAVA NIO框架的基础上,...目的是通过讲解IO通信模型、JAVA对各种通信模型的支持、上层的Netty/MINA封装,可以让大家深刻理解“系统间通信”中一个重要要素——信息如何传递。
  • 通信接口是中央处理器和标准通信子系统之间的接口。(是否可以理解为对电气特性的定义?) 串行接口是一种可以将接受来自CPU的并行数据字符转换为连续的串行数据流发送出去,同时可将接受的串行数据流
  • RS485通信和Modbus通信协议汇总

    万次阅读 多人点赞 2018-08-06 16:31:21
    主从模式是在半双工通讯方式上,2个或者2个以上的设备组成的通讯系统中: (1) 至少且只有一个主机,其他的都是从机 (2) 不管任何时候,从机都不能主动向主机发送数据 (3) 主机具有访问从机的权限,从机不可以...
  • 通信协议

    千次阅读 2011-05-07 11:17:00
    通信协议是指通信各方事前约定的用心规则,我们可以简单地理解为各计算机之间进行相互会话所使用的共同语言.两台计算机在进行通信时,必须使用的通信协议。通信协议的种类和特点  目前常见的通信协议主要有:...
  • java进程通信方式

    千次阅读 2019-08-26 18:24:43
    以下是常用的进程间通信方式。 管道(Pipe):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系进程间的通信,允许一个进程和另一个与它有共同祖先的进程之间进行通信。(半双工:数据传输...
  • 前言:以下串口通信示例并不完全属于原创,参考了现有网上前辈们的资源,最后结合部分个人的思想,所以下述博客会将实现的原理及代码的案例进行公开。 这里我们先上效果图: 一、串口通信简介 串口通信是上下位...
  • 本系列的前面文章,主要拆解的是通信网络设备部署在地面上的通信,包括有线通信与无线通信。从本章开始,通信网络的部署从地面扩展到太空。包括卫星通信,GPS定位(单向广播卫星通信),第六代移动通信6G,埃隆...
  • MODBUS_RTU通信协议

    万次阅读 多人点赞 2019-05-29 09:23:12
    Modbus已经成为工业领域通信协议的业界标准(De facto),并且现在是工业电子设备之间常用的连接方式。 广泛的系统集成: PDM系列仪表/变送器提供了标准的RS-485/422通讯接口及ModBus通讯协议,这...
  • windows进程间通信

    千次阅读 2014-10-18 08:32:03
    摘 要: 随着人们对...Microsoft Win32 API提供了多种进程间通信的方法,全面地阐述了这些方法的特点,并加以比较和分析,希望能给读者选择通信方法提供参考。 关键词 进程 进程通信 IPC Win32 API 
  • 5G 名词释义 大家好,我是istrangeboy,随着社会的进步和技术的发展,5G生活离我们愈来愈近了,这里很高兴能和大家分享下5G通信技术...第五代移动电话行动通信标准,也称第五代移动通信技术,外语缩写:5G(5th g...
  • UART串行通信

    千次阅读 2017-06-24 11:36:18
    异步通信是指通信的发送与接收设备使用各自的时钟控制数据的发送和接收过程。为使双方的收发协调,要求发送和接收设备的时钟尽可能一致。 异步通信的两个关键: 第一,数据单元——帧,它是双方约定好的数据格式;...
  • Http通信协议

    千次阅读 2018-12-12 11:32:50
    HTTP是一个基于TCP / IP通信协议来传递数据(HTML文件,图片文件,查询结果等)。 HTTP是一个属于应用层的面向对象的协议,由于其简捷,快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与...
  • 通信算法工程师调研整理

    千次阅读 2020-09-06 14:43:54
    以下调研结果均来自CSDN帖子,附链接 1、基本知识面要求 1、数学 入门:数学分析、线性代数、概率论 进阶:矩阵论、随机过程、凸优化 2、专业基础 信号与系统、数字信号处理 3、无线通信 无线通信 4、通信协议 5、...
  • UR机器人通信端口和协议

    千次阅读 2019-07-28 10:12:29
    1 概述 UR机器人作为目前使用广泛的协作机器人,其开放了基于TCP/IP的远程控制功能,提供了多个多类型的端口,用于工业总线控制,或者用户...UR机器人通信时提供了以下接口,我们可以根据自己需要,使用其中的一种或...
  • 通信笔记

    千次阅读 2020-07-04 23:55:10
    频分复用、时分复用和码分复用 频分复用(FDM):按频率划分的不同信道,用户分到一定的频带后,在通信过程中自始至终都占用这个频带,可见频分复用的所有用户在同样的时间占用不同的带宽资源(带宽频率带) 时分...
  • 通信领域术语大全

    千次阅读 2020-10-26 16:45:59
    IMT-2020:国际电联无线电通信部门(ITU-R)正式批准了三项有利于推进未来5G研究进程的决议,并正式确定了5G的法定名称是“IMT-2020”。 IMT:国际移动通信(International Mobile Telecommunications),智能多模式...
  • 04742通信概论考点汇总

    千次阅读 2020-07-26 16:49:44
    通信基础 第一节:通信的基本概念 第二节:通信系统的组成 通信系统一般模型 信源是消息的发源地,其作用是通过传感器把消息转换为原始电信号,即完成非电量—电量的转换。 发送设备的功能是将信源和信道匹配起来,...
  • 异步串行通信

    千次阅读 2019-01-28 11:45:11
    异步串行通信
  • LIN 通信概述

    千次阅读 2020-07-22 09:56:16
    以下是基于瑞萨LIN入门手册的简要概述 一 LIN 是什么 LIN 是 Local Interconnect Network 的缩写,是基于 UART/SCI(Universal Asynchronous Receiver-Transmitter / Serial Communication Interface,通用异步收发器...
  • 串口通信协议

    万次阅读 2013-09-09 15:55:24
    所谓通信协议是指通信双方的一种约定。约定包括对数据格式、同步方式、传送速度、传送步骤、检纠错方式以及控制字符定义等问题做出统一规定,通信双方必须共同遵守。因此,也叫做通信控制规程,或称传输控制规程,它...
  • 串行通信 UART

    千次阅读 2018-01-10 16:27:11
    数据通信方式 分为并行通信和串行通信。并行通信:利用多条数据线将各位同时发送,特点是传输块,适于短距离通信;串行通信:利用一条线路将数据一位一位的顺序发送,特点是线路简单成本低,适于远距离通信。 串行...
  • 通信接口介绍

    千次阅读 2012-07-13 13:34:43
    通信接口介绍   一、通信接口(物理层接口) 1. 通信接口及接口标准的含义 ——接口是DTE与DCE之间的界面,为了使...——互连的设备在接口的标准上必须一致,这对于数据通信中其他通信层次具有相同的含义,不仅仅
  • vsat卫星通信系统

    千次阅读 2014-09-26 09:33:47
    所以也称为卫星小数据站(小站)或个人地球站(PES),这里的“小字”的是VSAT卫星通信系统中小站设备的天线口径小,通常为1.2-2.4M。利用此系统进行通信具有灵活性强、可靠性高、使用方便及小站可直接装在用户端...
  • 通信科技人员职业道德

    千次阅读 2018-08-08 17:52:05
    1.通信科技的地位   通信科技既是整个科学技术的重要组成部分,又是通信生产力中越来越突出和具有重要意义的因素。   目前,载波、微波、光纤、卫星、移动通信和Internet已在各种通信业务中广泛应用没电话和...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 126,925
精华内容 50,770
关键字:

以下哪些指通信标准