HiSLIP协议的原理及机制剖析口☆口口☆口

  HiSLIP协议的原理及机制剖析

   庞新法

   (陕西省委党校科技教研部☆□□,陕西西安710061)

   摘要:为了对HiSLIP协议的网络化仪器编程建立理论基础并方便编程☆☆☆☆,通过分析该协议的结构和功口能☆□☆☆、消息格式□□☆□、交互过程以口及标志□□□☆,提出口了语法规则☆☆□□,参数含义□☆□,编程过程□☆□□☆,初始化口连接☆☆□,口☆口口☆口请求锁和释放锁☆☆□□☆,最大消息尺口寸☆☆☆,传输数据请口求☆□☆☆,服务及状态请求☆☆□□,消息可用标志等□□☆☆,在局域网环境下□□☆,实现了两台示波器之间的通信□☆□,从而解决了测量系统中网络化仪器间难以协同工作□☆☆,进而限制测量系统测量效率的问题□□□☆□。

   教育口期刊网 http://口www.jyqkw.com关键词:网络化仪器;HiSLIP协议;通信;TC口P连接

   中图分类号:TN915.04?34;TP312 文口献标识码:A 文章编号:1004?373X(2015)17?0041?04

   LXI(LAN eXtensions for Instrumentation)标准是测量仪器在网络化过程中与计算机网络结合口的产物□☆☆□,促进了测量仪器在网络化过程中更好的发展☆□□☆。为了满足仪器在网络化过程中对高速传输数据和高效控制的需求□☆□☆☆,IVI联盟于2011年推出HiSLIP(High?Speed LAN Inst口ur?ment Protocol)高速以太网仪器协议☆☆□,专门用于仪器通信和仪器远程控制的协议☆☆□□,并将这个协议作为LXI标准的扩展功能进行发布☆□☆☆☆。该协议能够很好地支持TCP/IP协议□□☆□□,可以为IPv4和IPv6提供口服务☆□□☆,易于网络组网和扩展☆□□□。

   1 HiSLIP 协议的结构

   1.1 协议简口述

   HiSLIP[1]基于TCP 的仪器控制协议☆□☆□,提供了与传统仪器相同的测试和测量功能□□□☆。协议的主要功能口有口设备清除□□□☆☆、仪器的本地/远程仪器状态控制☆☆□□□、仪器的锁机制☆☆☆□、仪器端口到客户端的服务请求□□□□、消息结束机制□☆☆☆、错误检测中口断时的消息交换机制□□□。该协议本身结构清晰□□☆☆,形式简单☆☆☆☆□,易于实现☆□☆,并支持虚拟仪器软件结构中的锁机制□☆□☆☆,便于仪器资源的控口制与共享☆☆□☆。

   1.2 协议特点

   HiSLIP协议的特点如下:

   (1)灵活的端口口号□□☆□。服务器端和客户端既可使用IANA分配的建议端口号4880□□□□,也可口以使用双方约定的端口号□□☆☆□。

   (2)创建两个TCP连接☆□☆。两个连接一个作为同步通道☆☆□□☆,另一个作为异步通道□☆□☆☆,均采用既定格式传输消息☆□□□。同步通道主要用于双方通信时传输文本形式的控制命令(如S口CPI命令等);异步通道主要口用于传输突发事务请求(如中断和错误等)□□☆。二者均由客户端发起建立连接□□☆☆。(3)支持两口种不同的模式☆□☆☆□。为了实现口对已有仪器的兼容性☆□☆,协议需要支持重叠口模式和同步模式☆☆☆。重叠模式[2?3]☆☆□□□,是指在客户端和服务器端之间□□□☆□,输入或者输出的数据消息或者触发消息可以任意缓存□□□☆☆,而不需要等待前一个消息处理完毕☆□☆□□。比如□□□☆□,相对独立的一串请求消息从客户端发送给服口务器端□□☆☆□,不需要每一个消息都处理完毕☆☆□☆,服务器的响口应消息按照接收消息顺序发送给客户端☆□☆。由于服务器端和客户端的处理速度会有不同□□□☆☆,因此在重叠模式下还要控制消息发送的速率□□☆□□。同步模式[口4?5]与口重叠模式在机制上相反□☆□,即每一次发送请求消息时☆☆□,都需要等待上一个消息处理完毕☆□□☆,如果客户端处理出口错时□□☆☆☆,协议自身产生中断操作清除之前发送的请求处理☆□□☆□。

   1.3 消息帧格式

   口HiSLIP帧格式[6]如图1所示☆☆☆□,帧首部为16 口B□☆☆☆,分别是消息标志“HS”☆□☆☆、类型码□□□、控制码□☆☆□、消息参数□☆□☆、数据长度☆☆□□□。帧尾口口部口口为数据字段□☆☆,每帧消息的长度等于16加上数据长度☆□☆。

   口HiSLI口P协议帧格口式中各字段的含义如下:

   (1)每帧消息第一□□☆、第二字节内容口固定不变□☆□☆。第一口字节是“H”的ASCII 码值□□☆☆,第二字节是“S”的A口SCII 口码值☆□☆□☆,用于判断收到的消息是否正确☆□☆□☆。如果不是“HS”☆□☆,则说明在口传输过程中发生口了错误☆□□☆,应丢弃此口消息☆☆☆。

   (2)消口息类型(Message Type)☆□□☆,大小为1 B☆□☆☆,定义接收到的消息类型☆☆□,用来对每一个HiSLIP 口协议的消息进行惟一识别□☆☆□□。每一个消息类型☆□☆☆☆,都在协议中确定了相应的含义☆☆□□,通过对消息类型的识别就可以对消息中的字段进行特定含义的解释□☆□☆。

   (3)控制码☆☆☆,大小为1 B□□☆☆☆,一般用于表示当前消息的响应参数□☆☆☆☆,含义会根据消息类型的不同而不同□☆□。(4)消息参数☆☆□□,大小为4 B☆☆□□,在HiSLIP 消息中有多种用途□☆□□。

   (5)数据长度(Payload Length)☆☆□□☆,占用8 B☆☆□□,标识数据字段中的字节数□□☆☆。口☆口口☆口

   (6)数据(Da口ta)☆☆□,字节数不定□☆□,存放该消息所口传递的数据信息□□☆。

   1.4 消息分类口

   口如表1所示☆□☆,消息类型共26种☆☆☆□。通信双方通过发送相关消息进行交互□□☆□,用以协调双方的行为☆☆□□□,达到数据传输等目的□□□☆□,完成协议功能☆☆☆。

   其中☆☆☆□□,发送方C 指协议客户端(Client)☆☆□□□,S指协议服务器端(Server)☆☆□□,B 指通信客户端和服务器端双方(口Both);通道中的S指同步通道消息(Synchr口onous chan?nel message)□□☆☆☆,A 指异步通道消息(Asynchronous channelmessage)☆□☆□,B 指服务器端和客户端都可发送;消息类型号☆☆□□☆,是指实际传输时对消息类型的逻辑编号□□□☆☆。

   2 HiSLIP 协议交互过程

   协议双方通过约定的格式和顺序发送特定消息类型的HiSLIP协议消息☆□☆☆□,协调通信口双方行为□□☆☆,配合完成协议的功能☆☆□□☆,为应用软件和资源设备提供服务☆□☆☆。在说明交互过程时☆□☆□☆,以“<消息口口类口型><控制码><消息口口参数><数据长度><数据>”的格式表示HiSLIP 消息□□☆☆☆,通过每一个功能交互□☆☆,具体说明协议的语法□☆☆□、语义和同步特性☆□□。

   2.1 初始化HiSLIP连接

   初始化口连接消息交互过程如图2所示□☆☆□。

   (1)在同步通道客户端向服务器端发起建立TCP连接☆☆☆□。

   (2)客户端发送给服务口器的初始化消息格式为:< 初始化口> <0><客户端协议版本口及客户端厂商标识符><客户端子网地址口>□☆☆□。

   (3)服务器端发送给口客户端的响应消息格式为:< 初始化响应> <工作口模式><服务器协议版本及设备会话号><0>☆☆☆。

   (4)在异步通口道客户端发起建立第二次TCP连接☆□☆☆。(5)客户口口端发送给服务器的异步通道初始化消息格式为:<异步初始化><0><设备会话号&g口t;<0>□☆□☆☆。(6)服务器端发送给口客户端的口口响应消息格式为:< 异步初始化口响应> <0><服务口器端厂商标识口符><0>☆□☆☆□。2.2 请求锁和释放锁口

   加锁请求过程如图3所示□☆□☆☆。

   (1)客户端发送给服务器的加锁消息格式为:<异步锁请求><1=请求锁口&g口t;<超时时间&口gt;<锁描述串长度口><锁描述字符串>☆☆☆。超时时间□☆□□☆,是客户端允许等口待服务器端发送响应的等口待时间□☆□☆☆,如果超时时间为0□☆☆□,说明是请求立即口加锁操作☆□☆☆。

   (2)服务器端发送给客户端的响口应消息格式为:< 异步锁请口口求响应><0=加锁失败□☆□,1=加口锁成功□☆□,3=错误><0><0>☆□☆□☆。

   释放锁请求过口口口程如图3所示□☆□☆☆。

   (1)客户端发送口给服务器的释放锁消息格式为:< 异口步锁请求><0=释放锁><消息编号&口gt;<0>□☆☆□□。消息编号是口服务器端保存的已发送消息的编号□☆☆。

   (2)口服务器端发送给客户端的响应消息格式为:< 异步锁请求响应> <1=释放独占锁成功□□□,2=释放共享口锁成功□☆☆,3=错误口><0><0>□☆☆□。

   2.3 最大消息尺寸

   为了防止消息尺寸过大造成接收方缓存溢出导致数据丢失□☆☆☆☆,通信双方必须协商在同步通道上传输的口最大消息尺寸□☆☆,过程如图4所示□□□。

   (1)客户端告知服务器端口自己能够接收的最大消息尺寸□☆□□。客户端发送给服务器的最大消息尺寸请口求格式为:<最大消息尺寸请求><0><0><8><8>☆□☆□□。

   (2)服务器端告知客口户口端服务器能够接收的最大消息口口口尺寸☆□☆。服务器端发送给客户端的响应消息格式为:<最大消息尺口寸请口求><0><0><8><8>☆☆□☆。说明:<数据&口g口口口t;字段的8 B给出消息长度(无符号整数)☆□□。口☆口口☆口

   2.4 传输数据请求

   数据消息发送过程如图5所示□□☆☆☆。

   口客户端向服务器端发送消息:

   (1)客户端发送给服务器的数据消息口格式为:<数据消息><交付标志口><消息包编号><数据长度□□☆☆,单位是字节><数据内容>☆☆□。

   (2) 客户端发送给服务器的数据结束消息格式为:<数据结束消息&g口t;<交付标口志><消息编号&g口t;<数据长度□□☆□,单位是字节&口gt;<数据内容>☆☆☆☆□。

   服务器端向客户端发送数据消息:

   (1)服务器端发送给客户端的数据消息格式为:< 数据消息>< 0 >< 消口息编号>< 数据长口口度, 单位是字节>< 数据内容> □☆□☆☆。

   (2)服务器端发送给客户端口的数据结束消息格式为:<数据结束消息><0><消息口编号><数据长度□□☆☆□,单位是字节口口口&g口t;<数据内容口口&口gt;☆□□☆。

   客户端口向服务器端发送口数据时☆□□,如果要发送的数据量不超过最大消息尺寸☆☆☆☆,数据会通过“数据口口口结束消息”一次性发给服务器端;否则☆☆☆☆□,先通过“数据消息”发送若干☆☆☆□□,再通过“数据结束消口口口息”把剩余部分(不大于最大消息尺寸)发送给服务器端□□☆□□。服务器端向客户端发送数据的机制与此类似☆□☆□,其方向相反☆□□☆□。

   交付标志□☆□,是服务器端进行维护并核实的一个标志☆☆□,旨在保证服口务器口端的正常运行☆□☆。

   2.5 锁信息交互

   锁信息交互的目的:在加锁前□☆☆,客户端向服务器端发起锁信息请求☆☆□☆,获取当前在仪器资源上连接的客户端数目以及仪器资源拥有的锁类型□☆☆,消息序列如图6所示□□☆□☆。

   说明:授权的独占锁(exclus口ive?locks?gran口ted)□☆□,1 表示独占锁被授权□□☆☆☆,0表示口其他☆□☆□☆。

   授权的独占锁数(Lo口cks?gran口ted)☆□☆□,表示口当执行Asyn?cLockInfo(请求锁信息)时□□□□☆,拥有锁的客口户端数□☆□□☆。

   2.6 服务口请求

   服务请求消息交互的目的:服务器将自身口的一些状态值☆☆□,通过服务请求发送给客口户端□□☆。本交互过程由服务器端主动向客户端发起服务请求☆□☆☆☆,交互消息序列如图7所示☆□□□。说明:控制码口部分□□☆☆,是一个8 b的状态值(status)□☆☆,用来表示服务器端运行的状态□☆☆□。

   2.7 状态请求

   状态请求消息交口互的口目的:客户端获取服务器端的说明:控制口码部分是一个8 b 的状态值☆☆☆□□,用来表示服务器端运行口的状态□□☆。

   3 服务器端使用到的标志

   3.1 交付标志和交付期待标志

   为了保证双方协调一致工作☆□□,在正常交互时□☆☆☆,服务口器端需要维护(核实和设置)两个标志:交付标志(RTM?de口livered)和交付期待标志(RTM?expected)☆☆□□□。方法如下:(1)发送数据结束消口息时☆□☆,设置交付期待标志为“真”(True)□☆□☆。在接收到状态查询消息(AsyncStatus口Query)并且交付标志为“真”时☆☆☆,清空交付口期待标志位☆☆□□□。

   (2)接收到数据消息□☆□、数据结束消息或触发消息时☆□□,如果交付期待口标志和交付标志同为“真”(True)口或同为“假”(False)时☆□☆☆,则清空交付期待标志位(RTM?expected)☆☆□☆☆,否则口产生错误报告☆☆□□。

   3.2 消息可用标志

   MAV(Message Avai口lable Bit)消息可用标志☆☆□,表明来自服务器的消息是否可用☆□☆☆。该比特位的设置及状态转换如图9所示□☆□☆□。

   MAV标志设置和转换说明:在设备启口动(Power?on)☆□□☆、设备清除(Devi口c口e?clear)或者错误恢复(Error ? recovery)口时☆□☆☆☆,设置MAV 为“ 假”False☆☆□□。接收到消息类型为Data或者DataEND的HiSLIP消息时□□□☆☆,把M口AV从“假”(False口)设置为“真”(True)☆☆□□☆。

   在接收到消息类型为AsyncStatusQuery□☆□,Data□☆□☆☆,Da?taEND 口或者Trigger的HiSLIP消息☆☆□☆□,并且其中包含RTM?delivered时□☆☆☆,设置MAV从“真”(True)口到“假”(Fal口se)☆☆☆。

   4 结语

   在网络化测量系统中借助于HiSLIP 协议的高口效性☆□☆、实时性和可靠性□☆□□,减少网络时延突发异常等对测控系统的影响□□□,实现网络化仪器间通信□☆□,使仪器间协同工作☆☆□□,以提高网络化仪器测量系统的测量效口率☆□□□。另外□☆☆□☆,Hi口SLIP 协议既支持IPv4 也支持I口Pv6☆☆□,具有良好的向口后兼容口性☆□□□,便于网络化测量系统口的扩展☆☆☆。

   教育期刊网 http://www.jyqk口口w.com参考文献

   [1] IVI Foundation. IVI?6.1:High?speed LAN口 instru口men口t 口protocol(HiSLIP)[EB/OL]. [2011?05?25]. http://www.ivifoundation.org.

   [2] 余成波☆☆□□,王士彬☆□□□□,李洪兵.网络化仪口器技术与实口现[M].北京:清华大学出版口社☆□□☆,2010.

   [口3] 林玉池.测量控制与仪器仪表前沿技术及发展趋势[M].天津:天津大学出版社☆□☆□,2005.

   [4] 董永清.Li口nux C编程实战[M].北京:人民邮电出版口社☆□□☆,2008.[5] 宋口宝华.Linux设备驱动开发详解[M].北京:人民邮电口出版社□□☆□,2008.

   口[口6] 李宥谋□☆☆,刘钊远☆□☆□,马博.嵌入式系统开发[M].北京:清华大学出版社☆☆☆□□,2011.

   [7] 陈莉君☆☆□☆☆,康华.Linux操作系统原理与应口用[口M].北京:清华大学出版社□☆□☆,2006.

本文由课堂论文网发布于艺术论文,转载请注明出处:HiSLIP协议的原理及机制剖析口☆口口☆口

您可能还会对下面的文章感兴趣: