前言:一篇好文章的诞生,需要你不断地搜集资料、整理思路,本站小编为你收集了丰富的基本通信协议主题范文,仅供参考,欢迎阅读并收藏。
[关键词]通信协议 IPX/SPX协议 NetBEUI协议 TCP/IP协议
中图分类号:TP393.08 文献标识码:A 文章编号:1009-914X(2016)23-0114-01
引言:通过通信信道和设备互连起来的多个不同地理位置的数据通信系统,要使其能协同工作实现信息交换和资源共享,它们之间必须具有共同的语言。交流过程中都必须遵循某种互相都能接受的规则,这个规则就是通信协议。网络通信协议是计算机网络的一个重要组成部分,是不同网络之间通信、交流的公共语言。有了它,使用不同系统的计算机或网络之间才可以彼此识别,识别出不同的网络操作指令,建立信任关系,否则就会造成网络的接入速度太慢以及工作不稳定。这一技术发展至今,已经发展出了很多种不同类型的通信协议,不同的网络协议都有其存在的必要,每一种协议都有它所主要依赖的操作系统和工作环境。所以要很好地选择与配置协议就必须要先了解目前各主要协议的主要性能特点和所适用的范围,一遍合理的配置各种通信协议,保证网络通信的正常运行。
一、通信协议简介
通信协议是指双方实体完成通信或服务所必须遵循的规则和约定。协议定义了数据单元使用的格式,信息单元应该包含的信息与含义、连接方式、信息发送和接收的时序,从而确保网络中数据顺利地传送到确定的地方。在计算机通信中,通信协议用于实现计算机与网络连接之间的标准,网络如果没有统一的通信协议,电脑之间的信息传递就无法识别。
通信协议包括语义、语法和时序三个组成部分。语义是对协议元素的含义进行解释。不同类型的协议元素所规定的语义是不同的。语法是将若干个协议元素和数据组合在一起用来表达一个完整的内容所应遵循的格式,也就是对信息的数据结构做一种规定。而时序是对事件实现顺序的详细说明。
二、几种主要的通信协议
1. IPX/SPX协议
IPX/SPX(网际包交换/序列包交换)协议主要应用于基于NetWare操作系统的Novell局域网中,基于其他操作系统的局域网能够通过IPX/SPX协议与Novell网进行通信。当用户端接入 NetWare服务器时,IPX/SPX 及其兼容协议是最好的选择。但在非Novell网络环境中,一般不使用IPX/SPX。IPX/SPX及其兼容协议不需要任何配置,它可通过网络地址来识别自己的身份。Novell网络中的网络地址由两部分组成:标成物理网段的网络ID和标明特殊设备的“节点 ID” 。其中网络ID集中在NetWare服务器或路由器中,节点ID即为每个网卡的ID号。 所有的网络ID和节点ID都是一个独一无二的内部IPX地址。正是由于网络地址的唯一性,才使用IPX/SPX具有较强的路由功能。IPX/SPX协议中,IPX是NetWare最低层的协议,他只负责数据在网络中的移动,并不保证数据是否传输成功,也不提供纠错服务。IPX 在负责数据传送时,如果接收节点在同一网段内,就直接按节点的ID将数据传给它;如果接收节点是远程的,数据将交给 NetWare 服务器或路由器中的网络ID,继续数据的下一步传输。
2. NetBEUI协议
NetBEUI(用户扩展接口)协议是一种体积小、效率高、速率快的通信协议,也是微软最钟爱的一种通信协议,所以它被称为微软所有产品中通信协议的"母语"。NetBEUI是专门为由几台到百余台计算机所组成的单网段部门级小型局域网而设计的,它不具有跨网段工作的功能,即NetBEUI不具备路由功能。如果一个服务器上安装了多个网卡,或要采用路由器等设备进行两个局域网的互连时,则不能使用NetBEUI通信协议。否则,与不同网卡(每一个网卡连接一个网段)相连的设备之间,以及不同的局域网之间无法进行通信。在3种通信协议中,NetBEUI占用的内存最少,在网络中基本不需要任何配置。
3. TCP/IP协议
TCP/IP(传输控制协议/网络协议)从字面上理解只有两个协议,即TCP协议和IP协议,而事实上它是是由一组具有专业用途的多个子协议组合而成的,这些子协议包括TCP、IP、UDP、ARP、ICMP等,而TCP和IP协议是协议族中最基本的最重要的两个协议。它是为了实现不同网络之间的互连而设计的。TCP/IP 通信协议具有灵活性,适用任意规模的网络,几乎可连接所有的服务器和工作站,正因为的灵活性也带来了它的复杂性,它需要针对不同网络进行不同设置,且每一个节点至少需要一个IP地址,一个网掩码,一个默认网关和一个主机名,但是在局域网中微软为了简化 TCP/IP协议的设置,在NT中配置了一个动态主机配置协议(DHCP),它可以为客户端自动分配一个IP地址,避免了出错。
三、选择通信协议的原则
1.网络结构和功能的一致性
如果网络存在多个网段或要通过路由器相连时,就不能使用不具备路由和跨网段操作功能的NetBEUI协议,而必须选择具备这一功能的IPX/SPX或TCP/IP等协议。此外,如果网络规模较小,同时只是为了简单的文件和设备的共享,这时最主要的就是网络速度,所以在选择协议时应选择占用内存小和带宽利用率高的协议,如NetBEUI。当网络规模较大且网络结构复杂时,应选择可管理性和可扩充性较好的协议,如TCP/IP。
2.除特殊情况外,一个网络尽量只选择一种通信协议
由于每个协议都要占用计算机的内存,选择的协议越多,占用计算机的内存资源就越多。一方面影响了计算机的运行速度,另一方面不利于网络的管理。事实上一个网络中一般一种通信协议就可以满足需要。
3.注意协议的版本
每个协议都有它的发展和完善过程,因而出现了不同的版本。每个版本的协议都有它最为合适的网络环境。从整体来看,高版本协议的功能和性能要比低版本好。所以在选择时,在满足网络功能要求的前提下,应尽量选择高版本的通信协议。
4.协议的一致性。
如果要让两台实现互联的计算机间进行对话,它们两者使用的通信协议必须相同。否则中间还需要一个“翻译”进行不同协议的转换。这样不仅影响通信速度,同时也不利于网络的安全和稳定运行。
结语:
通信协议作为连接不通网络和设备之间的桥梁,其作用至关重要。这一技术发展至今,已经发展出了多种多样不通版本的协议,而每个版本也都具有各自的特点和功能,所以在选择协议的时候应该根据实际需要选择最适合的通信协议,从而使其更好地为用户服务。
参考文献:
[1] 高传善.数据通信与计算机网[M].北京:高等教育出版社,2002.
1DDC和PLC性能比较
DDC是随着半导体技术、微处理器技术以及智能楼宇自动化控制需求而产生的一种可编程的智能控制设备;PLC是随着半导体技术、微处理器技术以及工业生产流水线自动化控制需求而产生的一种可编程的智能控制设备。两者的性能比较见表1。由表1可见,PLC和DDC这两类产品在其架构上基本相同,两者在车站环境及机电设备自动化控制系统中所实现的功能也完全相同,但在产品封装、可靠性、应用侧重等方面是有所差异的。在城市轨道交通车站环境及机电设备自动化监控系统中,无论是PLC产品还是DDC产品,均采用了集散系统架构;散布在线路控制中心和车站内的各部分均通过通信链路连接,并通过私有协议或公开协议实现信息的传输和交换。
2通信协议
互联互通是城市轨道交通中不同应用系统间互相交换信息的需要,或是同一个应用系统中不同产品间互相交换信息的需要。在同一个应用系统中,建设方通常都会选择同一品牌同一系列的产品,至少可以保证在本应用系统的内部不会产生信息交换的障碍,同时通过接口协议的商谈定义来解决不同应用系统间信息交换的问题。但事实上,为保证信息交换的有效性,一般会选择同一品牌同一系列的产品,其实质是因为同一品牌同一系列产品采用的是同一种通信协议。正是因为这种通信协议上的统一性,才保证了信息交换的有效性和准确性。
因此,要实现设备间的互联互通,即便采用不同的产品,如PLC和DDC,只要它们采用的是同一种通信协议,则可实现;反之,即便采用的是同一种产品,如PLC和PLC间,甚至是同一家公司产品,只要产品所采用的通信协议不同,就不能直接实现互联互通。所以,要实现不同产品间的互联互通,如DDC和PLC这两种产品间的互联互通,其关键点在于产品是否采用了同一种通信协议,或者是否有合适的网关设备进行不同协议间的转换。表2为目前4种公开的通信协议。每种协议各有优劣。很多产品为发挥其特色,还拥有其自定义的私有协议。
3互联互通工程实例
3.1用户需求
上海轨道交通2号线的既有线和延伸线的自动监控系统中分别采用了两种不同的产品。既有线部分采用的是施耐德公司CSI系列的BAS(设备监控系统)。该系统是基于DDC的系统。东延伸段和西延伸段采用的是基于PLC的BAS系统,产品为施耐德公司的PremiumPLC和M340PLC。为了保证控制中心环控调度操作的统一性,提高调度工作效率,降低调度操作难度,保证调度操作准确性,需要将2号线上基于不同产品的BAS系统整合成一个系统,在一个监控操作平台上,BAS中央级对BAS车站级进行统一的监控、操作。
要实现在一个监控操作平台(或称人机界面,即HMI)上实现对基于DDC和PLC不同产品的系统进行统一监控的目的,就必须使用同时支持两种不同网络通信协议的HMI软件平台。但是,既有线BAS系统与HMI间的网络通信协议为CSI产品特有的I-NET2000网络协议,而延伸线BAS系统支持的与HMI间的网络通信协议有多种,包括Modb-us、UN-TELWAY、FIPWAY等。由于CSI产品所使用的I-NET2000网络协议应用并不广泛,只有CSI产品自身的HMI采用,所以要简单地选择一个既能直接与CSI中的DDC通信又能直接与施耐德PLC通信的HMI软件平台是不现实的。
性价比较高的解决方法是在不改变既有线车站级BAS系统基本结构的前提下,破解I-NET2000通信协议,选择能够支持多种通信协议的HMI软件平台以实现同时与CSI中的DDC和施耐德PLC通信。
3.2整合准备
鉴于上海轨道交通2号线既有线分一期工程部分(龙阳路站至中山公园站)和西延伸部分(娄山关路站至淞虹路站)。两部分的BAS车站级设备虽都是CSI的DDC产品,但还略有不同。一期工程上所使用的7760DDC需要通过一个名叫TAP的设备和车站监控工作站连接,而西延伸工程上所使用的7790DDC上有可用于连接监控工作站的串行通信端口。故车站级的改造方法也稍有不同。一期工程部分BAS车站级设备采用的是CSI7760DDC,其车站基本结构如图1所示。西延伸段BAS车站级设备采用的是CSI7790DDC,其车站基本结构如图2所示。针对一期工程7760DDC和TAP的结构,7760DDC和TAP上并无多余通信端口可以使用,以及车站也只有1个以太网通道端口可供BAS使用的情况,在车控室增设1个以太网交换机和1个串口服务器。增设以太网交换机的目的是拓展BAS使用的以太网端口,以供车站BAS监控工作站和串口服务器使用;增设串口服务器的目的是为了车站级监控工作站和中央级HMI软件接口同时能与TAP进行通信。系统结构如图3所示。
系统改造后,上海轨道交通2号线一期工程部分的BAS有如下几条数据流:①7760DDCTAP串口服务器交换机车站工作站;②7760DDCTAP串口服务器交换机新控制中心;③车站工作站交换机既有其他车站和既有控制中心。
针对上海轨道交通2号线西延伸工程7790DDC结构,车站内2个7790DDC上各有1个可用于连接车站监控工作站的串行端口,而且由于2个7790DDC已经联网,故这2个串行端口上的数据是一致的。其中1个端口已经用于车站监控工作站,故利用另1个端口进行车站级数据读取和命令写入。与一期工程一样,在车控室增加1个以太网交换机和1个串口服务器。增设以太网交换机的目的是拓展BAS使用的以太网端口,以供车站BAS监控工作站和串口服务器使用;增设串口服务器的目的是为了中央HMI软件接口同时能与2个7790DDC的串行端口中的1个进行通信。系统构成如图4所示。
系统改造后,上海轨道交通2号线西延伸部分的BAS有如下几条数据流:①7790DDC车站工作站;②7790DDC串口服务器交换机新控制中心;③车站工作站交换机既有其他车站和既有控制中心。完成了车站级既有BAS系统改造后,既不影响原有系统的所有功能,包括车站级的监控和既有中央级对车站级的监控,又增加了一个新中央级到车站级的监控通道。
3.3新建控制中心及东延伸段PLC并网
(1)在2号线控制中心5楼调度大厅内,新设全线BAS中央级。
(2)在新设中央级调试及试运行期间,新中央级和既有中央级并网运行。
(3)中央级搬迁工程以先并入新设中央级,后移除既有中央级为基本工序。
(4)新设BAS中央级以统一的平台(包括软件和硬件)对既有基于DDC的BAS系统和延伸线基于PLC的BAS系统进行监控管理。
(5)新设的中央级符合目前的《上海城市轨道交通设备监控系统设备招标通用技术文件》的要求,如设有热备冗余的服务器、热备冗余的工作站等,以完成全线数据的采集、存储、相关运算以及命令的。
(6)新设的中央级设全线事故风机控制盘(中央IBP盘)1台,以完成对全线隧道事故情况下的统一控制、指挥。
(7)设置新中央级后,不改变既有BAS系统车站级和既有中央级所有的点位设置、逻辑控制程序、监控功能及操作方法。
图5为新控制中心建成后的上海轨道交通2号线BAS新中央级和既有系统的联网图。上海轨道交通2号线东延伸段依工程进度,计划完成基于PLC的BAS系统建设后,通过以太网并入系统。工程完成后,经各项功能测试,系统运行正常。完成DDC和PLC整合后的系统结构如图6所示。
在现有的即时通信系统中,实现音视频通信的核心组件包括音视频处理框架和即时通信协议两个部分。音视处理框架集成了音视频采集、音视频编解码、音视频分流控制、音视频数据流网络拥塞控制等技术模块,能够完成音视频数据流的采集、编码、分流等基本处理流程;即时通信协议则负责为音视频数据协商传输通道,并且在协商好的传输通道上建立对应的连接,从而为音视频数据的顺畅传输提供保障。
1即时通信协议
即时通信协议是进行即时通信必须遵循的信息规范,主要负责完成用户信息传输通道协商,客户端与服务器通信信令传输控制等任务。XMPP是主流即时通信协议之一,是基于可扩展标记语言(XML)的协议,其继承了在XML的高可扩展性,可以通过发送扩展的信息来处理用户需求。目前最常用的即时通信协议体系主要是SIP和XMPP协议体系,两者都可以完成音视频通信功能。另外,一些商业公司自行开发私有的即时通信协议实现了相对封闭的通信环境,例如QQ和MSN。XMPP协议是个总称,包括核心协议,扩展协议等。
核心协议只规定了很小、很基本的一些功能,大部分功能都是在扩展协议中规定的。实际上,XMPP协议只是作为协商协议应用,真正的P2P连接和实时通信是通过其扩展协议实现的。Jingle就是典型的扩展协议案例。Jingle[6]是Google开发的XMPP协议上的扩展,其解决了在XMPP协议体系下点对点的P2P连接问题。Jingle协议提供了多种传输方式用于数据传输,而针对多媒体数据的最为常见的模式是两种UDP传输方式。一种传输模型是RAWUDP[9],RAWUDP是在UDP协议上发送媒体数据包的传输通道模型,可以实现在同一局域网下的P2P连接,没有网络穿越功能,无法实现远程通信;另一种模型则是功能更为强大的ICE-UDP[8],ICE-UDP也是在UDP协议上发送媒体数据包,并且可以实现具有防火墙的网络穿越和ICE连接性检查,实现远程通信。ICE是标准的建立P2P连接性检查的协议,其自身不能独立工作,必需在信号通道的协调下建立连接,而XMPP协议就可以作为ICE通道协商的协议标准。
基于Jingle/XMPP协议实现的即时通信框图如图1所示。Jingle通过XMPP完成P2P通道的协商任务,同时通过Jingle协议建立P2P通道并进行连接性检查,然后建立并完成RTP会话,从而完成音视频通信。如果选择ICE-UDP通道传输模型进行RTP视频数据传输,XMPP服务器可以使用STUN[2]服务器收集用户的地址,包括NAT[3]后面的私有地址以及NAT与互联网连接的公共地址,并且以此为基础建立映射机制,完成会话参与者跟具体的网络地址间的转换和NAT穿越。
2音视频处理框架
即时通信系统中的音视频处理框架主要为用户提供一组多媒体数据处理的接口,用户可以用这些接口实现从多媒体采集卡上获得数据,进行压缩编码、格式转换、数据封包等一系列操作,从而完成多媒体的实时处理传输功能,大大简化多媒体处理的复杂性。目前具有二次开发功能的音视频处理框架包括Gstreamer,Directshow,Opencore等。其中DirectShow是微软公司在ActiveMovie和VideoforWindows基础上推出的基于COM的流媒体处理开发包。运用DirectShow可以很方便地从支持Windows驱动模型的采集卡上捕获数据,并进行相应的后期处理乃至存储到文件中。OpenCore则是手机操作系统Android的多媒体核心,OpenCore的代码非常庞大,是一个基于C++的实现,定义了全功能的操作系统移植层,各种基本的功能均被封装成类的形式,各层次之间的接口多使用继承等方式。而基于Linux平台的GStreamer则是完全开源的多媒体框架库,利用其可以构建一系列媒体处理模块,包括从简单的Ogg播放功能到复杂的音频混音和视频非线性编辑处理。Gstreamer应用非常广泛,大多数手机平台及个人电脑Linux平台均采用Gstreamer进行音视频处理开发。
2.1Gstreamer音视频处理
Gstreamer通过其模块化设计理念,更加便于构建流媒体应用程序。它将各个模块封装起来,以元件的形式提供给用户使用。用户可以利用库中原有的元件进行应用程序的编程,同样也可以编写元件,然后插入到库中,以便日后调用时使用。如果只利用库中的元件来实现特定功能,只需要采用模块化的方式编写应用程序[4]。Gstreamer实现局域网内简单多媒体音视频传输发送端的框图如图2所示。对于视频数据流,Gstreamer在发送端将摄像头(v4l2src1)采集的数据依次经过色度空间转换(ffmpegcsp1)、H263视频编码(ffenc_h263p1)、RTP[1]载荷头添加(rtph263ppay1),在gstrtpbin中实现实时传输协议(RTP)和实时传输控制协议(RTCP)数据包整合,并添加发送报告的背景时钟时间戳,便于在接受端进行音视频同步播放,然后发到UDP端口(udpsink)。在接收端,从UDP端口截获的数据依次经过RTP和RTCP数据包解析、RTP载荷头解码、H263解码器解码视频数据、色度空间转换,最后经过视频显示插件显示到窗口中。其中gstrtpbin是进行RTP会话管理的核心组件,可以完成RTP数据包传输控制、RTCP数据包生成、冲突检测、音视频分流等任务。
2.2Farsight视频会议框架
通过Gstreamer开发库中的基础元件可以完成音视频处理的功能,并且可以进行简单的局域网内视频通信。但是,在视频会议等复杂应用中经常包含多个多媒体会话,而且多媒体会话之间的协调非常复杂,需要通过更为高层的处理框架来实现会话管理的功能。Farsight是以Gstreamer为基础开发的视频会议框架,它能够提供一套完整的为多媒体流协议编写插件的应用程序接口,同时还为用户提供API调用这些插件。即时通信应用程序可以使用Farsight进行音视频会议,而无须担心底层的数据流和NAT穿越的问题。因为Farsight[5]是以Gstre-amer为基础进行开发,所以开发新的元件能够和已有的Gstreamer元件整合,实现完成视频会议功能的多媒体框架。Farsight可以包含多路音视频会话流,包含多个会话参与者,具有强大的音视频会话管理功能。它通过模块化设计为许多即时通信软件提供音视频会议的服务,大大扩展了多媒体处理的功能,并且可以实现更为强大的视频会议功能。目前很多即时通信客户端软件都采用Farsight完成音视频通信。本文以Gstreamer/Farsight音视频处理框架为重点,详述其内部结构及功能实现。
Farsight中包括4个核心概念:会议(Conference)、会话(Session)、参与者(Participant)、流(Stream)。会话参与者是指多媒体数据源,可以是音频或视频等;会话则代表一路音频或视频会话,通常有一个媒体类型和一个输出端;会议则代表一个多媒体会议,可以包含多路会话,并且完成多路会话的协调管理;当参与者加入到会话中,就将多媒体数据引入会话中,使得数据能够流动,从而构成数据流。另外,Farsight实现了网络层的抽象,即将网络抽象为一个发射器对象,当数据流被创建时就会建立发射器对象,然后通过设置发射器参数确定发送的目的地址。实际上,Farsight并没有参与多媒体数据的采集和打包工作,它只是为多媒体数据流传输到网络端进行发送提供了一个通道,并且对通道进行协调管理,保证不同的会话参与者与其特定的数据流绑定以防止收发混淆。
Farsight实现RTP视频会议的结构如图3所示,其中FsRTPConference是Farsight框架下的一种插件,主要的RTP会话管理功能都在这个组件中实现。FsRTPConference中可以同时存在多路FsSession,每一路FsSession因参与者或音媒体源的不同代表不同的多媒体会话。编解码器在双方建立连接前无法确定,只有当通信双方的客户端协商之后,才会根据具体的编解码器名字调用并进行插件的连接。
Farsight通过将gstrtpbin封装到FsRTPConference中,添加一些其他的必要组件,实现RTP会话。RTP管理器主要由gstrtpbin负责完成RTP会话管理的操作。在发送端,视频源和音频源通过Sink接入到会话中,编解码器协商成功后,将编码器与数据源和过滤元件连接,然后通过RTP混合器将音视频数据发送到RTP管理器中,完成RTCP数据包的生成以及RTP会话的管理。最后,经过数据发射器将数据发送到相应的数据通道中。在接收端,数据流同样要经过类似的信息解码过程得到音视频数据。在发送端,数据发射器在Farsight中通常有多种插件选择,例如多播UDP插件、Libnice插件等,目的是为了实现底层数据传输的连接性检查。Libnice是实现了ICE和STUN协议规范的软件库,开发者以此为基础完成nice插件,可以实现基于ICE的数据发送。但是Libnice中只定义了如何在P2P连接确立后进行连接性检查,以及如何在确定的P2P连接上进行数据传输的网络穿越,并没有定义如何进行P2P连接,即P2P通道的协商任务。Jingle协议规范则定义了P2P通道建立连接及通道协商的任务。目前,Jin-gle协议已经在Libpurple(多协议会话开发库)中实现。
3即时通信系统中音视频通信的实现
为了开发的便捷,Pidgin软件的开发者将负责通信部分与图形用户界面部分分开,分离出来的核心代码构成即时通信客户端开发的核心部分,被称为Libpurple。这个程序库已被Adium与Proteus这些客户端使用。完成分离后,开发者将有可能以各自的图形程序库编写自己的客户端接口。在Libpurple中,为实现多媒体通信,开发者将基于Farsight的多媒体处理框架进行继承和封装,实现即时通信协议,并提供接口供用户使用,用户可利用应用程序接口编写程序实现网络层的连接。使用者可以使用Libpur-ple直接编写即时通信程序的核心代码,并构建应用程序。
同时,Libpurple实现了许多即时通信协议的通信,例如MSN,XMPP,AIM等协议,同时完成了媒体后端流处理与相应即时通信协议的协同工作。Libpurple在Farsight的基础上进行开发,实现了一套具备自身特点的流媒体模式。通过对Lipurple库的理解分析[10],得到了Libpurple实现音视频数据流控制及会话管理的方法,如图4所示。图4中Src是音视频数据源,传输到FsSession进行音视频流整合、RTCP包生成、数据流管理等操作。Vol-ume和level则分别表示音频的音量与消息控制插件。Libpurple采用FsSession做会话管理,并在FsSession的基础上添加Gstreamer基础元件进行控制,完成自己需要的功能。FsSession通过选择不同的连接通道,将音视频数据流通过发送器进行发送。
Libpurple中实现了Jingle协议进行RTP通信的规范,并提供两种数据通道,RAWUDP和ICE-UDP供用户使用。在进行具体RTP视频通信时,程序根据不同情况选择不同的通道使用。图4选择RAWUDP作为数据发送通道,用户也可以选择其他通道进行数据发送。为了与Jingle协议合作完成音视频通信,Libpurple建立了一个组件对象purplemedia,这个对象在Farsight组件中提取相关的参数信息,例如编解码器信息、发送目的地址等,并传递给Jingle协议,便于Jingle协议进行通道协商。当有新的即时通信协议需要利用Farsight完成视频通信时,开发者往往需要以Libpurple为基础进行开发,完成即时通信协议在Libpurple上的移植,以实现视频通信。在众多采用Libpurple库开发的即时通信软件客户端中,Pidgin是最成功的,也是少数几个可以实现音视频通信的案例。Pidgin是一款支持多协议客户端的图形化即时通信应用程序,它可以使用AIM,Jabber,MSN,Yahoo等即时通信软件的帐号进行登录。并采用Libpurple作为开发库,利用图形开发工具包编写用户界面及各种事件提醒和任务管理,从而实现在多种即时通信协议基础上的音视频通信。
关键词:通信协议宏; PLC; 串行通信; 自动化
近年来,随着科学技术的发展,中波广播发射机也从过去的电子管板调机发展为全新的全固态机,为实现自动化控制奠定了基础。中波广播自动化控制系统常采用可编程序控制器(PLC)做为前端控制器,通过PLC的输入、输出模块对发射机进行现场接入控制。但对于那些提供通信端口的发射机或设备,其内部已经配置了微控制器和采样控制回路,如果还是采用现场接入控制,不仅功能重复,而且有的时候难于实现,例如Thomcast的M2W型中波发射机,电路板集成度高,对接入参数非常敏感。对于这种类型的设备,只能是通过其串行口,利用其通信协议来实现工作状态的数据监测和控制。如果使用把监测控制软件放在服务器上运行的方式,那么当网络有故障时设备将失控,因此安全性不够,最好把监测控制软件放在其上位机的PLC中。过去只包含I/O模块的PLC是无法实现串行通信功能的,而PLC通信协议宏的出现解决了这个问题。以下着重介绍使用协议宏来解决Thomcast的M2W型中波广播发射机的自动化控制问题。
1 中波发射自动化控制系统的总体构成与功能
厦门广电集团发射中心202台中波发射自动化控制系统主要由受控系统、前端监控器、网络和系统服务器等四部分组成。网络结构的拓扑结构如图1。
图1
总体采用现场分布式结构,每个受控系统都有自己独立的前端监控器,并在其监控下工作。受控系统由主/备发射机、同轴开关、假负载、音频矩阵及温控器等组成。
前端控制器采用OMRON公司生产的CS1H-CPU63型可编程序控制器,它是实时监控系统中最基本、最核心的单元,在整个系统中起着承上启下的作用。它能够脱离上位软件和网络连接而独立完成对受控系统的监测和控制,对受控系统各种异常状态用不同的方式发出告警信号,并能够存储开关机时间表等日常管理流程数据。
自动化控制系统的主要功能分为:①基本控制功能(远程控制及自动开关机等);②开关量、模拟量的监测;③开关机时间表的设定;④与用户系统及服务系统的通信功能。其中前两项功能通过PLC通信协议宏来实现。
2 Thomcast公司M2W发射机提供的通信协议分析
M2W发射机的标准通信协议帧的格式分为:写控制帧(控制量)和读控制帧(状态量)。如下表,我们把常用的一些常用的操作指令列出来。
2.1 写控制:(开关机控制量)
特别说明:在M2W发射机内部PLC是采用文件的格式存储机器信息的,其中:N1——遥控连接的直接命令输入;N2——本地连接的直接命令输入(发射机触摸屏);N3——发射机实际数据。N1文件在指令写入时发射机将做出反应,从N3文件则可读取机器的实际数据进行监测,通过对这两个文件的修改和读取来实现发射机的控制。
3 OMRON通信协议宏的简介与应用设计
3.1 通信协议宏概述
通信协议宏是PLC具有的一种通信控制功能,用于为符合具有串行通信端口的通用外部设备的通信规范的通信协议创建宏。支持与几乎所有具有RS-232C或RS-422A/485端口外部通用设备的通信,通过编制通信协议指令实现对外部通信设备的相应数据采集和控制。
CX-Protocol是创建协议宏应用软件。协议宏由通信指令系列组成,支持硬件是PMSU(串行通信单元)。CX-Protocol将协议宏传送至PMSU、通过CPU单元上的PMCR指令来指定协议宏的序号并执行通信序列。一个通信指令序列由若干步组成,每个步由发送、接收或者发送与接收指令组成;可允许用户根据处理结果来重复、结束这些步或者对这些步生成分支。
3.2 通信协议宏的创建
根据上面的表格,我们先将这些常用操作指令转换成发射机通信协议的指令帧(即协议宏的通信报文),通信报文分为发送报文和接收报文,包含有:报头、地址、长度、数据、错误检验码和终止符,但每个字段不是必需的,在发送报文中,可以仅有数据字段(实际上数据字段就已经包含有报头、地址、错误检验码和终止符);在接收报文中,存在终止符时,报头、地址、长度、错误检验码也可以不存在,如果数据长度固定,则终止符也可以不存在。
根据M2W发射机的协议说明,无论在写或读操作,发送完成后发射机均会返回一个响应帧,如果出错则要求重发,正确则发送“1006”确认该操作。
3.3 写控制帧格式
发送命令:<DLE>+<STX>+<DST>+<SRC>+<CMD 0F>+<STS>+<TNS>+< FNC AA>+< Byte Size>+<File Type>+<Ele.No.>+<S/Ele.No.>+<DATA>+<DLE>+<ETX>+<CRC16>
返回:响应+<DLE>+<STX>+<SRC>+<DST>+<CMD 4F>+<STS>+<TNS>+<EXT STS>+<DLE>+<ETX>+<CRC16>其中,发送报文可以定义<DLE>+<STX>为报头字段;<DST>+<SRC>为地址字体;<CMD 0F>+<STS>+<TNS>+< FNC AA>+< Byte Size>+<File Type>+<Ele.No.>+<S/Ele.No.>+<DATA>,可这数据字体,<DATA>为写入N1中相应操作位的数据<DLE>+<ETX>为终止符;<CRC16>为错误校验码。接收报文中的“响应”有三种:接收正确─“1006”;接收错误─“1005”;校验错误─“1015”
以发送“开机”操作指令为例:10 02 01 09 0F 00 88 03 AA 02 0F 89 02 00 01 00 10 03 20 8d将N1中的“开机位”置“1”,返回:10 06 10 02 09 01 4F 00 88 03 10 03 0d c4,则再发送“1006”确定执行开机操作。如果返回“1005”或“1015”则重发操作指令。
3.4 读控制帧格式
发送命令:<DLE>+<STX>+<DST>+<SRC>+<CMD 0F>+<STS>+<TNS>+< FNC A2>+< Byte Size>+<File Type>+<Ele.No.>+<S/Ele.No.>+<DLE>+<ETX>+<CRC16>返回:响应+<DLE>+<STX>+<SRC>+<DST>+<CMD 4F>+<STS>+<TNS>+<DATA >+<EXT STS>+<DLE>+<ETX>+<CRC16>其中< FNC A2>+< Byte Size>+<File Type>+<Ele.No.>+<S/Ele.No.>给出功能码和读取的范围和文件类型,其它字段与写控制的相同。返回时,<DATA>字段为读取的机器状态数据,可用W()指令写入DM数据存储区。
由于读取范围要求不超过240字节,机器的状态数据需要分三次才能全部读出,如发送:10 02 01 09 0F 00 01 01 A2 EE 11 89 00 00 10 03 e0 0f则返回10 06 10 02 09 01 4F 00 01+<DATA>+00 10 03 28 64,这样我们可以读取到0~240字节的数据,其它数据读取修改范围即可。
3.5 协议宏的创建
协议宏的一个序列由最多16个步组成,一个步包含一条命令操作,该命令分为:“发送”、“接收”、“发送与接收”、“打开”、“关闭”、“刷出”或“ 等待”,通过步中的“下一个过程/出错过程”来指定执行下一步。协议宏就是通过“步”发送和接收处理通信报文,完成指令操作的执行,所以创建协议宏可分两步完成。(1)首先,将“开机”操作指令按写控制帧格式转换成协议宏的发送报文(Send Message),Send Message为:<DLE>+<STX>+<DST>+<SRC>+<CMD 0F>+<STS>+<TNS>+< FNC AA>+< Byte Size>+<File Type>+<Ele.No.>+<S/Ele.No.>+<DATA>+<DLE>+<ETX>+<CRC16>,按图2设置相应字段并存储为Send Message 1,也可直接设置在数据字段里。
图2
然后,按返回的数据格式编制 “接收报文(Recv Message)”,Recv Message为:响应+<DLE>+<STX>+<SRC>+<DST>+<CMD 4F>+<STS>+<TNS>+<EXT STS>+<DLE>+<ETX>+<CRC16>,也设置相应字段并存储为Recv Message2。如果是读命令,则将该数据写入DM存储器中。(2)在“步”中设置命令为“发送与接收”,发送报文设置为创建的“开机”发送报文,接收报文可以设置为 “接收报文”或“矩阵”,然后再选择“下一个过程”。其执行流程如图3所示。
图3
3.6 CX-Protocol软件操作
(1)创建各报文:打开CX-Protocol软件,从“File”(文件)菜单中选择“NEW”(新增)创建一个项目,创建项目后从PLC菜单中选择“Edit PC-PLC Comms Settings”(编辑PC-PLC通信设定);在项目文件下创建协议列表(New Protocol list),右键点击“Create/Protocol”(创建/协议),指定下列项:协议名称、序列起始号、序列结束号和目标;右键点击“Create/Sequence”编制协议序列,指定下列项:链接字、传送控制参数、响应类型和监测时间(Tr、Tfr、Tfs),一个协议序列对应一条M2W发射机操作命令;在通信序列中右键点击“Create/Step”(创建/步),指定下列项:重复计数器、命令、重试计数、发送等待时间、发送报文、接收报文、有/无响应写入、下一个过程和出错过程,每一步就是一条协议指令。右键点击步列表中的“Send Message”(发送报文)或“Receive Message”(接收报文)字段,然后从弹出菜单中选择“New Message”(新报文),将全部使用到的协议指令输入为通信报文,必要时做好注释,便于读懂程序。(2)创建矩阵:如果要根据不同的响应报文决定下一步执行的步(Step),就需要创建矩阵来完成。右键点击“Create/Matrix”(创建/矩阵)和“Create/Martrix Case”(创建/矩阵实例),预先设定可能返回的响应报文数据,改变各响应报文的下一个控制步,一个矩阵中允许最多设定15种报文。如图4,写控制指令时,可将“接收B“设为”1006,下一步为发送“1006”确认;“接收C”为“1005”和“接收C”为“1015”,下一步为重新发写指令。(3)传送项目:选中项目名称,点击菜单Protocol-Download Protocol,将以上创建的项目传送至PMSU(从个人计算机到PMSU)。
图4
3.7 创建梯形图程序
梯形图程序主要有按时间表自动试机、开关机程序和故障处理等程序。梯形图程序段较长,这里主要介绍在梯形图中如何调用协议宏指令。在梯形图中通过使用PMCR命令来调用协议宏指令,首先为PMCR指令分配一条功能代码,然后执行PMCR指令。
图5
如图5所示:控制字1为#02E1,其中0为通信端口(内部逻辑端口号0);2为端口2;E1为内插板(串行通信板);控制字2为#2,表示执行02号通信序列。第一个发送字为100,发送数据首字(DM100)
第一个接收字为200,接收数据存储首字(DM200)。当“T机开机”位1213.14置ON并将协议宏执行标志(1919.15:端口2)置OFF时,将调用PMSU上注册的02号通信序列,从而在通信端口允许标志(A202.00:使用0号通信端口的内部逻辑端口)为ON的情况下经由PMSU的端口2发送和接收数据。
4 系统硬件连接与测试
4.1 PLC需要用到的两个通信连接
4.1.1 电脑CX-Protocol软件与PLC的编程连接
首先,必须先用编程电缆将电脑CX-Protocol软件连接到PLC的CPU外设口或内置RS-232C口上,然后,设置PLC“设备类型”、和“网络类型”。
4.1.2 PLC通信板(CS1W-SCB41-V1)与受控通信设备的通信连接
(1)将串行通信板(CS1W-SCB41-V1)插入CS1的CPU模块中,设置终端电阻ON/OFF开关为“ON”及线制开关2线/4线拨到“4”的位置。将通信板(CS1W-SCB41-V1)上的端口2(RS-422A/485)与M2W发射机的RS-485端口连接。(2)制作通信板与发射机的数据连接线,并连接好两端通信口。(3)根据M2W的通信协议参数设定为:协议:全双工;和检验:CRC;COM口:RS422;波特率:19200;每字位数:8;奇偶Parity:偶数;停止位Stop bits:1。
5 系统调试
CX-Protocol提供了数据跟踪和监测功能,当执行数据跟踪操作时,从该点开始,串行通信板对发送/接收报文中按时间顺序排列的数据执行跟踪记录,通过跟踪发送或接收数据和信号,可根据步来检查发送或接收和各条报文的内容并将其与预设的序列进行对比,查找程序的出错原因。笔者在调试中体会到在使用通信协议宏时,必须注意下面几个问题,否则可能会造成通信失败。(1)执行PMCR指令时,最好使用上升沿微分触发PMCR指令,否则可能引起各条指令间的冲突。(2)根据实际测试发射机的接收和反馈时间,设置发送完成监测时间Tfs为0.2S、接收等待监测时间Tr为0.2S和接收完成监测时间Tfr为0.4S,既能保证指令的完整发送,又节省等待时间,并可以防止协议宏进入死锁状态。(可参考操作手册中监测时间的计算方法)。
6 出错处理
PLC设置有特殊辅助区,存储PLC运行状态,协议宏在发生以下任一错误时,根据设定的重试计数自动重复执行同一个步(最多3次):① 监测时间(Tfs、Tr、Tfr)已过。②发生了接收通信错误。③接收报文不正确。④校验码存在错误。
发生异常时,可通过这些状态了解异常情况,并可应用这些状态位进行程序保护。以CS1为例常用的有:
7 结束语
通信协议宏不单可以实现对中波发射机房M2W发射机的自动化控制,而且还可以应用在各种具有串行通信端口的设备上;如果采用RS-422A/485串行通信端口,还可以实现1:N控制(最多32部)外部通信设备。此应用系统在我台投入运行以来,能安全、稳定、可靠地工作,整个控制系统灵活、方便、一体化控制,大大提高了广播播出系统自动化、网络化的管理水平,具有很好的实用性和行业中的推广价值。
关键词:网络协议 动态链接库 协议工作说明书
一、引言
PRT-GET定义为一个协议模拟器,所谓协议模拟器就是通过某种途径模拟各式各样的网络通信协议从而可以进行具体而实际的网络通信,最终达到同时支持多种通信协议的目的。PRT-GET不同于现今网上存在的各种网络工具,使用它可以编写基本上所有的基于Socket应用层的通信协议,PRT-GET的设计解决了用户使用网络工具时难以支持新出现的协议的问题。
二、PRT-GET的特点
作为一个优秀的协议模拟器,PRT-GET具备以下的几个特点:
1.PRT-GET是一个动态链接库。考虑到应用程序的扩展极其的不方便,所以没有把PRT-GET设计成应用程序的形式,而采用动态链接库的方式,该方式可以方便地进行二次开发,也方便扩展软件的功能。
2.PRT-GET是完全面向对象的。PRT-GET是一个可二次开发的动态链接库,所以面向对象的设计模式能令二次开发更加高效。
3.PRT-GET的代码扩展性高。使用PRT-GET时,如果PRT-GET本身提供的功能不够,那么用户可以通过扩展PRT-GET中对应的类,以实现自定义的功能。
4.PRT-GET支持自定义协议。PRT-GET的最大特色就是支持用户自定义应用层协议,通过用户编写的协议工作说明书,PRT-GET忠实地执行用户在说明书中指定的每一个操作,也就是说,用户无需编写任何一句代码就可以使PRT-GET支持自定义协议。
5.PRT-GET的使用方便。PRT-GET使用时只需要调用动态链接库就可以轻松地使用其中的协议控制类。
三、PRT-GET的设计
1.PRT-GET的工作层次
PRT-GET设计为一个动态链接库,它为系统应用程序提供中间层服务,使得应用程序无需了解网络通信的具体逻辑,只需把网络的内容当作本地的内容操作即可,从这点看起来PRT-GET也是一个协议,而且更是一个能提供很多协议服务的协议支持软件。PRT-GET在网络中的工作层次如图1所示。
对于使用PRT-GET作为网络通信协议的应用程序来说,用户可以指定PRT-GET使用哪个协议进行工作,因为PRT-GET是在需要使用时才加载协议内容的,所以用户可以随时动态指定PRT-GET使用的协议,甚至可以动态修改PRT-GET使用的协议内容。当协议组里面包含的协议不满足用户要求时,用户还可以添加新的协议,这只需要添加一个协议工作说明书到协议组里面就可以了。
应用程序
计算机
PRT-GET
协议组
协议内容
服务器
服务程序
用户
图1 PRT-GET工作层次
PRT-GET工作时根据用户指定的协议加载协议工作说明书,然后再依照协议说明书内容与远端服务器/客户端协作工作。对于PRT-GET来说,远端机器是透明的,PRT-GET的机器透明性是基于工作在TCP协议上的Socket的,所以对于PRT-GET来说没有机器的差别,没有平台的差别。
2.PRT-GET的几个概念
在PRT-GET中,有一些基本概念贯穿于整个PRT-GET的设计和实现过程中。
(1)协议
PRT-GET中的协议对应着一个网络协议。协议在PRT-GET程序中只是一个逻辑的存在,并没有具体的某个协议的实现,所以如果要使PRT-GET支持某个协议的话,需要编写一个具体的协议工作说明书与PRT-GET相配合。也就是说协议工作说明书是PRT-GET的具体协议的载体,也是PRT-GET支持协议的体现。
(2)元素
元素是PRT-GET的一个新概念。所有的协议都是一些基本通信单元的组合,而PRT-GET就是通过将协议分解成一个个的基本单元从而做到支持各种协议的。这种基本单元就是元素。元素是PRT-GET中协议构成的基本单位,一个PRT-GET的协议本质上就是一些PRT-GET的元素序列,同样的,对元素的不同组合可以生成不同的协议,这就是PRT-GET可以支持不同协议的本质原因。
程序中的一个元素类的对象对应着协议工作说明书的实际一行,也就是代表着通信交互中的一个基本交互单元。协议工作说明书中指定了每一个通信单元应当使用的元素类,并执行相应动作实现对应的通讯单元。
为更好的实现通讯单元的分割和减少通信协议工作说明书的编写难度,定义了动作元素和辅助元素这两个概念。
动作元素:对应着一个通讯基本操作,它指明了对于本次操作应该如何进行。
辅助元素:对动作单元进行辅助处理的单元,它是从属于动作单元,一个动作元素可以有零个或多个辅助元素。
动作元素和辅助元素指定了协议的一个通信单元的工作方式,而本次通信的内容就由内容项指定了。一个元素由动作元素和辅助元素、内容三项组成,其结构如下:
动作单元 [辅助单元]* [内容]
(3)分析器
PRT-GET中并没有协议的实体存在,代替的是用协议工作说明书作为协议的载体,而协议工作说明书只是一个文本文件,如何将这个协议工作说明书的内容加载到内存并转变为一个一个对应的元素,这个工作是由分析器来解决的。
分析器有协议分析器和元素分析器两种,分别用于不同用途。
协议分析器:协议分析器主要的工作是分析协议工作说明书并创建该说明书对应的元素序列,辅助Protocol实体的创建。
元素分析器:元素分析器的工作是从一个字符串中分解出辅助元素和内容,以支持元素类的动作。
PRT-GET工作流程
PRT-GET的使用非常的方便,只需要使用URL创建出具体的一个协议对象则可以与主机通信,而此URL的要求为“protocol://host: port/file”格式,其中port并不是必须的,如果没有指定的话就会使用对应协议的协议工作说明书中指定的默认端口。
PRT-GET工作时,将会根据用户提交的协议名检查其协议说明书库中是否有该协议,如果发现对应的协议不存在则抛出一个异常提示用户。找到指定协议后,PRT-GET将创建一个协议对象以实现通信,并将协议工作说明书加载进内存中,分析生成一个元素序列,最后就执行元素序列以实现实际通信目的,其工作流程如图2所示。
是
读取
否
开始
结束
查找协议工作说明书
协议组
协议存在
抛出异常
创建协议对象
分析工作说明书
执行元素动作
图2 PRT-GET工作流程图
四、主要包的设计
对PRT-GET的设计采用按功能结构分包的方式,将功能相近的类放置在一起,并按逻辑位置将其放在不同的命名空间之中。
PRT-GET中最核心的三个包分别是Element(元素包)、Analyze(分析工具包)和Util(其他工具包),此外,还有ProtocolManager和Protocol两个核心类。
PRT-GET将网络操作分为基本的单元——元素,在程序中的体现就是元素(Element对象),PRT-GET将所有的元素类都放置在Element包中,并通过接口IElement实现元素动作的统一。
Analyze包是一个存放存放分析器的包。PRT-GET经常需要对协议工作说明文件进行分析,这就需要一个分析器专门对协议中的字符串进行分析,Analyze包中的类就是负责此类工作。
PRT-GET在进行一些处理时经常会用到一些方法,为增加代码的重用率,将所有经常使用到的方法或操作封装为类存放在Util包中。
五、协议工作说明书
协议工作说明书是协议的真正载体,它以“协议名+.prt”为文件名存放在PRT-GET动态链接库目录的“protocol”文件夹下,PRT-GET加载协议时到这查找该协议是否存在,当查找到时就会加载为一个协议实体。
1.协议工作说明书的组成
网络通信主要是发送内容和接收内容,PRT-GET的主要作用就是屏蔽了这一层中繁琐的通信,使得用户可以直接对通信的有用内容进行处理。
基于网络通信只有发送和接收两种情况,协议工作说明书也只有两种基本元素:Send和Receive。Send发送数据,而发送的数据可以是在协议说明书中指定的常量,也可以是用户动态加载的内容。Receive同样也可以接收常量,或者接收到内存中对应的元素的Data数据中。除了这两种基本元素外,PRT-GET还扩展了另外两种元素:Skip和Repeat。Skip能忽略用户不感兴趣的内容,Repeat的作用就是重复进行用户的一些烦琐的操作,这些对提高用户的工作效率有很大的帮助。此外,还有其它一些辅助元素可以指定各种动作元素的具体操作内容。
2.协议工作说明书编写要求
编写协议工作说明书必须满足以下格式:
Port 端口号
(Element名 [辅助元素名]* 内容)*
协议说明书的最开始应该是端口号说明,而后出现的是元素字符串。元素字符串由三部分组成,其中元素名是指该动作元素的名称;辅助元素指定了动作元素的一些要求,一个动作元素可以有几个辅助元素的存在;第三个部分就是内容,内容可以是常量内容,也可以是变量,也就是用户指定的数据。
一个协议说明书只能由一个端口号,但是却可以有多个元素,不同元素之间用换行隔开即可。定义一个协议说明书必须以该协议名称加上“.prt”为协议工作说明书名称,并将其放置在PRT-GET的动态链接库目录下的protocol文件夹内。
六、应用实例
多协议服务器是一个使用PRT-GET作为通信层的服务器软件,以文件映射作为虚拟路径管理手段。通过该服务器软件可以设置虚拟目录,用户可以指定访问需要使用的网络协议(如HTTP),当有客户端请求时,服务器调用PRT-GET创建一个协议实体执行通信,并由服务器解释请求的URL,将其映射为相关系统文件,客户端可以和服务器进行通信,请求服务器上的文件资源如图3所示。
图3 利用PRT-GET模拟HTTP通信
七、结语
本文讨论了多协议模拟器PRT-GET的设计思路和方法,并通过实例模拟HTTP协议验证了文中所提设计方案的可行性。由于PRT-GET目前的版本设计中辅助元素还不够多,模拟器的交互设计还有所欠缺,下一步将增加辅助元素的设计,丰富模拟器的功能,增强其应用的灵活性。
参考文献
[1] 陈富春.ASP.NET中XML数据与关系数据的交互技术.现代计算机.2005(04):P35-37
路灯定时器调时间的方法如下:
路灯定时器采用先进的嵌入式微型计算机控制技术的高级时控器,根据用户节能需要多路任意编程同时启用;路灯定时器是通信协议正常运行的基本要素之一,主要用于各种定时和帧重传的任务;路灯定时器通信协议在单片机系统上实现所使用的定时器,定时精度要求不高,但数量要求比较大;路灯定时器由于硬件资源有限,不能为每一个单独任务分配一个硬件定时器,只能通过单个硬件定时器模拟多个软件定时器的方法,来满足协议中的定时应用需要。
(来源:文章屋网 )
现场执行层可以采用直接硬连线方式(通过电流或电压信号完成控制器与设备间的信息传递)、网络连接方式(以太网方式连接控制器和设备,控制器与设备之间根据某种通信协议完成信息交换)等不同的网络接入方式连接设备。②现场控制层:主要包括区域控制器和专用控制器,这些控制器可以独立处理、控制数据,各个控制器之间以太网或其他网络连接方式连接,根据某种通信协议完成交换信息。③信息管理层:主要负责所有信息技术以及网络技术的统一管理,各个信息管理工作站之间会用计算机广域网或局域网进行连接。
2.无线网络技术应用于智能楼宇控制的可能性与挑战性
在现代无线技术的快速发展与应用的背景形势下,以太网为主的连接方式以及组网方式受到极大的冲击,经大量的市场研究调查分析,现场执行层以及信息管理层可以无线网络技术来替代有线的连接方式的可能性最大。因为现场执行层的传感器节点较多,有线连接的布线部署比较困难,工程难度较大,而且像旧大楼、工厂生产车间以及博物馆等地方根本无法布线,采用无线连接的部署非常方便,传感器节点可以增加,位置也可以变换。在信息管理层应用无线连接的方式可方便用户随时随地通过移动设备控制、管理整个信息系统,信息的管理以及维护比较便捷。但是无线网络会由于楼宇内部环境的特殊性,经常受到多途径的传输干扰、障碍物反射以及传输冲突等问题,从而影响无线网络技术的可扩展性以及可靠性,使宽带通信数据的吞吐量受到影响。而有线网络拥有巨大的网络宽带资源,信息受到保护,因此比较安全、可靠,这是无线网络技术所欠缺的很重要的一点,因此无线网络技术无法完全取代有线网络。目前智能楼宇自动控制系统的信息管理层基本都采用的是无线网络连接技术,并且受到广泛好评,然而在现场执行层的无网络应用技术仍处于探索阶段。
3.现场执行层的无线网络技术应用分析
智能电网指的是电网智能化,是电网技术发展的2.0版本。智能电网以信息和通信技术为支撑,建设高集成度、高速信息传递的电网系统,利用高速传感器以及先进测量技术,引进理念先进的决策支持系统,对电网的可靠、安全、经济、高效以及友好应用提供强有力的支持。
2智能电网运行特点
智能电网在设计和运行过程中,利用高速双向通信通道进行信息传递,并利用传感器技术、测控技术等进行数据采集和指令的执行。总的来说,智能电网运行特点如下。
2.1自愈功能
智能电网的自愈功能是指当电网在遭受突发事故破坏时,例如雷击、地震、火灾或其他自然灾害以及人为破坏后,能够在短时间内对故障进行诊断、定位、隔离以及修复,以自身能力对电网进行保护,实现电力系统的安全运行。自愈功能发挥作用的基础是系统对电网实时状态的监控和掌握,能够在尽可能少的人工干预下,进行备自投、故障隔离等操作,实现电网的自我恢复。
2.2较高的兼容性和集成性
智能电网的标志之一是较好的兼容性和较高的集成性。智能电网的兼容性首先表现在数据格式的兼容,能够提供不同的数据格式的支持;其次,表现在设备的兼容性上,不同厂家、不同标准的设备能够与智能电网进行互通和运行;智能电网的兼容性还表现在对于不同用户的用电需求能够实现精确控制,满足不同用户的需求。高度集成的系统对于信息采集、处理以及信息安全的保障具有重要作用。
2.3安全性
智能电网的安全性除保证电网的供电安全外,还包括与变电站、客户、终端设备之间的通信网络的数据信息安全,智能电网通信技术目前应用较为广泛的是光纤通信,数据流量大,通信质量有保障。
3智能电网信息及通信技术关键问题
当前,智能电网信息及通信技术的研究热点,主要集中在通信技术、信息安全以及通信体系标准化建设等方面,这些关键技术的革新,将会给智能电网的建设及发展带来飞速发展的契机。
3.1通信技术问题
通信技术及通信网络,是智能电网信息输送的动力源泉以及大动脉,对于智能电网终端信息采集、数据传输以及保护、网络控制等意义重大。解决通信技术及通信网络的建设问题,是发展智能电网的基础保障。当前,以光纤通信为代表的信息通信技术是该领域的主流。
3.1.1光纤通信技术问题
光纤通信技术是以光纤作为信息传递的通道和载体,实现数据互通的技术。一般而言,光纤通信技术可以借助MPLS(Multi-ProtocolLabelSwitching,多协议标签交换)技术将传统光纤由2M带宽扩容到100M,可有效降低成本。目前智能电网光纤通信技术的主要问题是在架设以及更换加挂时光缆型式的选择。智能电网通常采用OPGW、OPPC、ADSS等光缆进行网络建设。OPGW光缆在敷设时具有以下两种优势:第一,OPGW光缆在敷设时与地线可复用架设,能够减少工程量,降低成本。第二,OPGW光缆能够将信号在传输过程中的损失控制到较小的程度,适用于智能电网长远距离信息传输使用,以确保通信质量。其主要缺点是易受雷击,需附设防雷击装置以对其进行保护。而ADSS光缆相较于OPGW而言,在防雷击方面具有明显优势;且由于其采用低密度材料,在敷设时更加便于施工,对输电线路影响更小;此外,该光缆敷设采用杆塔添加形式,维修和线路优化工作便于展开。该光缆应用的主要缺点在于电腐蚀情况较为明显。OPPC光缆目前主要在发达国家应用,其主要特点是能够与相导线复合使用,借助相导线的高压对光缆形成天然的保护,成为OPGW以及ADSS光缆敷设盲区的最佳替代品。三者相比,OPPC以及OPGW光缆主要适用于新建线路中,而ADSS光缆则主要用于老旧线路加挂时使用。
3.1.2电力通信技术问题
电力通信技术目前主要问题有两种:第一,电力线缆本身的射频干扰以及载波频率过低,都对其寻找合适的替代品带来较大难度,另外,新材料应用的技术难题也困扰着电力通信技术的发展。第二,互联网通用的TCP/IP协议无法兼容与电力线通信,许多新技术难以得到应用。针对目前电力通信技术的主要问题,一方面可以从开发新型信息承载材料入手,解决电力线缆的使用弊端;另一方面,BPL标准开发的发展,将为未来电力线兼容互联网协议提供标准体制上的极大助力。
3.2信息安全技术问题
智能电网从自身分布式的系统以及终端获取运行数据信息,实现数据的交换,因而,信息传输的安全与否直接关系到电网运行的安全,甚至能够影响国家战略部署和社会安定。因此智能电网ICS/MCS系统的安全问题显得愈发重要。ICS/MCS系统的安全问题主要包括物理安全、运行安全以及信息安全三个方面。而由于智能电网的数字化程度高,易遭受网络恶意代码的攻击,对电网造成极大威胁,这类威胁主要分为主观威胁和客观威胁两类。客观威胁主要来自电网内部,包括自身电力设备及网络设备的损坏或故障,由于工作人员的疏忽带来的威胁也属于客观威胁;而主观威胁则主要来自系统外部,主要包括商业间谍、犯罪分子以及网络黑客的攻击。智能电网信息安全防护的重点在于保证信息的完整性以及及时性,一旦信息完整性被破坏,无法及时进行传递,会造成整个电网运行的控制指令的错误甚至电网瘫痪。而传统信息安全中所指的私密性在电网信息安全中反而处于较低的优先级。为保证智能电网信息安全,需建立完整的信息安全方案,主要目的是:①设备接入控制:防止除系统许可的各类电气设备、网络设备等之外的设备接入系统。②数据信息认证:确认系统接收信息来源的合法性和信息完整性。主要技术手段可采用:第一,对终端各设备进行离线注册并分别分配密钥,并采用基于IBE策略的访问控制及认证,确保终端设备接入的合法性。第二,采用基于HASH函数的信息完整性确认技术,确保系统接收到信息的完整性。
3.3标准体系构建问题
目前,对智能电网的继续发展形成掣肘的主要问题之一便是标准体系迟迟未能完善。智能电网的建设牵涉到种类繁多的电气设备、网络设备,类型多样,需要构建一个统一的标准体系来确保各设备之间协调运行,形成这个标准体系的主要组成包括通信协议和标准。其中通信协议主要包括互联网TCP/IP通信协议,而通信标准除了包括BPL标准外,还包括BACnet、IECTC57、IEC61400-25、IEEE802和1588等。从电网的发电、输电、配电、送电和用电五大环节中,前三个环节目前在我国基本形成了比较完善的通信协议标准体系,以IEEE体系作为基本标准,对电网广域时间进行同步,同时借助PTP等协议对发电控制系统进行精确调节。但是,在送用电环节,由于涉及到的用户较多,用电设备种类覆盖面积大,因此尚未与电气生产商达成广泛共识,形成统一的送用电标准体系,该项工程将会是未来智能电网发展的重点。
4结语
关键词:同步串行接口;SPI;FPGA;Verilog HDL
中图分类号:TP319文献标识码:A文章编号:16727800(2012)009009202
0引言
SPI(串行设备接口)是一种广泛使用的串行数据传输协议,主要用于微处理器与外设的高速通讯。由于它速度快,通信协议简单,占用外部IO口少,相对来说较稳定,因此广泛应用于AD转换器、串行EEPROM、高速时钟、FLASH、DDS以及LCD显示驱动等领域。
另外,SPI口的时钟速度、数据位长度、时钟模式可以灵活控制,实质上是一个长度可编程的移位寄存器,为提高其集成性和经济性,经常通过其它芯片模拟SPI。本文介绍了一种基于FPGA设计模拟SPI的方法,完成了SPI的基本功能,具有一定的实用价值。
1SPI协议基础
SPI是一种同步串行通信方式,数据是一位接一位进行传输的,主要是以主从方式工作的。主设备(Master)与从设备(Slavel)之间的连线方式如图1,其中,主设备一个,从设备可为一个或多个。
MOSI:主设备数据输出从设备数据输入;MISO从设备数据输出主设备数据输入;SCK:时钟信号由主设备产生,MOSI、MISO都是基于此时钟信号完成数据传输;SSEL片选控制信号,控制芯片是否被选中成为SPI的从设备,低电平有效。SPI工作时序如图2。
2SPI模块代码设计
本设计中SPI同步串口的设计主要采用硬件描述语言Verilog HDL来完成,由于FPGA模拟SPI主设备的设计与FPGA模拟SPI从设备的设计思路基本一致,而且FPGA模拟SPI主设备的设计更为复杂,所以,下面以FPGA为主设备为例介绍SPI同步串口的实现方法。
FPGA模拟SPI主设备实现的逻辑实现框图如图3所示。它主要包含3个模块的设计:SCK产生模块、发送数据模块、接收数据模块,下面将一一介绍其程序的实现方法。
2.1SCK产生模块
同步时钟信号SCK一般由输入时钟信号CLK分频产生,在FPGA中对时钟进行分频一般有两种方法:锁相环的IP核分频和直接采用Verilog HDL语言分频。SCK的大小可由设计者灵活控制,但前提是一定要满足从设备的时序要求,从设备对SCK一般包含3个方面的限定:SCK的周期最小值、SCK高电平的最小值、SCK低电平的最小值。
2.2数据发送模块
如上图3可知,数据发送模块主要包含3个输入信号时钟信号CLK、复位信号RESET和两个输出信号片选信号SSEL、主设备发送给从设备的串行数据MOSI。
片选控制信号SSEL置低时有效,主设备开始和从设备进行数据交换,数据交换完成的是以字节为基本单位,当FPGA模拟SPI主设备时,字节数可以根据从设备的不同而自动调节。主从设备一般有两种数据交换方式:若主设备在SCK上升沿发送和下降沿接收,则从设备也在SCK上升沿发送和下降沿接收;若主设备在SCK下降沿发送和上升沿接收,则从设备也在SCK下降沿发送和上升沿接收。设计SSEL信号时一般要考虑以下几点:①SSEL到SCK上升沿的最小时间;②SSEL到SCK下降沿的最小时间;③数据交换的字节数。
假若主设备在SCK上升沿发送,数据交换为2个字节(16bit),数据发送模块设计代码的流程如图4。
其中,Txdata为发送的16bit数据寄存器,发送开始时先将i置15,检测到SCK的第一个上升沿时,将片选信号SSEL拉低选中从设备,并将Txdata的最高位Txdata[15]送到MOSI串行线上,在SCK的下一个上升沿再将Txdata的次高位Txdata[14]送到MOSI串行线上,依此类推,一直到将Txdata的最低位Txdata[0]送到MOSI串行线后,若又检测到SCK的上升沿,将片选信号SSEL拉高停止发送。
2.3数据接收模块
数据接收模块与数据发送模块有所不同,主要包含五个输入信号CLK、RESET、SSEL、SCK、从设备发送给主设备的串行数据MISO,无输出信号。同样,以数据交换为2个字节(16bit)为例,SCK下升沿接收数据,数据接收模块设计代码的流程如图5。
其中,Rxdata为16bit的接收缓冲器,SSEL拉低时开始接收数据,一旦检测到SCK下降沿,将MISO上的串行数据存入Rxdata的最低位Rxdata[0]中,当又检测到SCK的下降沿时,将Rxdata左移一位,并再将MISO上的串行数据存入Rxdata[0]中,依此类推,当接收缓冲器 Rxdata全部更新一遍时,若检测到SCK上升沿,将Rxdata 存储值赋给Data_recieved,Data_recieved为最终接收到的16bit数据。
3仿真验证及性能评估
FPGA芯片选择Altera公司的Cyclone II系列的EP2C8T144I8,对整个FPGA为SPI主设备的设计在QuattusII 7.1中进行逻辑综合,发现整个设计仅占用36个查找表的资源,用户可以根据需要集成多个SPI主设备或从设备,FPGA内部时钟最高可达到200MHz,通过分频基本可满足大部分的SPI设备对SCK的要求,另外,FPGA具有非常强大的外部接口单元,可以兼容。各种电平的接口,可与大部分的SPI设备直接连接。
在Modelsim SE 6.5中对整个设计进行仿真,其中Txdata为发送的数据,在测试程序中设定,Data_recieved为接收到的数据,整个测试过程就是一个自循环的过程,接收到的数据和发送的数据一致。若txdata=36785 (二进制为1000111110110001),SCK为CLK的十分频,则仿真结果如图6。
4结语
文中介绍了SPI的通信协议及其在FPGA上的代码实现方法。用FPGA实现SPI接口通信,通过对设计代码作少许的修改,SPI的时钟速度、数据位长度、时钟模式都可以根据实际需要灵活控制。另外,SPI串口实现占用的FPGA逻辑资源并不太多,设计者可以根据需要外扩同时连接几个SPI主从设备。总之,用FPGA实现SPI接口通信具有一定的实用价值。
参考文献: