一种基于数据流通信的网络控制系统转让专利
申请号 : CN201010126529.X
文献号 : CN102196002B
文献日 : 2014-01-29
发明人 : 王中杰 , 程论
申请人 : 同济大学
摘要 :
本发明涉及一种基于数据流通信的网络控制系统,包括传感器和执行器子系统、协议转换单元、消息分发单元、远程控制子系统、通信网络,所述的远程控制子系统包括数据存储单元、数据展现单元、客户端、控制与调度单元,所述的传感器和执行器子系统包括传感器、执行器、单片机,所述的单片机控制传感器采集被控对象的数据并将其发送给协议转换单元,该协议转换单元将采样数据按照数据流通信协议编码后进行分类,并通过通信网络发送给消息分发单元,所述的消息分发单元对接收到的数据包进行解码,按照数据流类型协议将数据包放入对应序列,按照分发规则对数据包进行分发。与现有技术相比,本发明具有实时性强、可靠性高、可重用性好等优点。
权利要求 :
1.一种基于数据流通信的网络控制系统,其特征在于,包括传感器和执行器子系统、协议转换单元、消息分发单元、远程控制子系统、通信网络,所述的远程控制子系统包括数据存储单元、数据展现单元、客户端、控制与调度单元,所述的传感器和执行器子系统包括传感器、执行器、单片机,所述的单片机控制传感器采集被控对象的数据并将其发送给协议转换单元,该协议转换单元将采样数据按照数据流通信协议编码后进行分类,并通过通信网络发送给消息分发单元,该消息分发单元对接收到的数据包进行拷贝一份发送至数据存储单元,并写入日志存储在数据存储单元,所述的消息分发单元对接收到的数据包进行解码,按照数据流类型协议将数据包放入对应序列,按照分发规则对数据包进行分发,所述的控制与调度单元收到消息分发单元发送的数据后,解析具体内容后,经处理后发送控制指令给消息分发单元,消息分发单元收到后将其发送给单片机,单片机控制执行器进行具体操作,所述的数据展现单元从数据存储单元中获取历史和最新数据后,对其进行显示,用户可以通过客户端来查看被控对象的状态;
所述的数据流通信协议包括数据流的划分、数据包的格式、数据包的编解码方法、数据流的发送和接收接口;
所述的数据流分为采样流、用户控制流、算法控制流、紧急信息流、系统诊断流。
2.根据权利要求1所述的一种基于数据流通信的网络控制系统,其特征在于,所述的通信网络为基于TCP/UDP网络。
说明书 :
一种基于数据流通信的网络控制系统
技术领域
[0001] 本发明涉及一种网络控制系统,尤其是涉及一种基于数据流通信的网络控制系统。
背景技术
[0002] 设计网络控制系统的一个关键技术是通信平台的设计,必须根据控制系统的特性设计满足控制系统要求的通信平台。但目前关于网络控制系统通信平台的研究非常少。通过查阅EI文献索引(1969-2010年),学术和应用上对控制系统的数据流分析比较少,特别是很少有研究不同数据流类型最适合的传输协议。文献[Analysis of Time Delay in Networked Control Systems and Study of Data TransmissionTechnology]在讨论MAC层的数据传输技术中,将数据分为周期性数据、猝发性数据以及非实时性数据,并讨论了各种MAC层传输技术用于传输三种数据流的优缺点,但此种技术需改变MAC层协议,因此应用面不够广,难于推广。文献[SimulationStudy of TCP/IP Communication Based on Networked Control Systems,IntelligentControl and Automation]通过仿真实现了使用UDP传输周期性数据,使用TCP传输非实时性数据,循环组合使用TCP和UDP传输猝发性数据的过程,但该文献在实验中只是将三种数据分别使用固定的传输协议进行传输,没有分析网络控制系统中所有数据的传输特性,也没有说明数据传输特性与传输协议的关系。
[0003] 文献[网络化控制系统教学与研究平台]中的NetCon系统直接将系统中的数据绑定于某种传输协议,对于不同对象其通信方式是相同的,无法根据对象进行优化,常常导致数据传输延时太大,影响网络控制系统的性能。而且该系统的通信方式没有提供与其他设备的交互接口,使得控制系统的扩展性很低,很难兼容其他硬件和软件设备,也不利于系统的广泛应用。
[0004] 对于实际的网络控制系统,由于控制系统和通信系统的耦合度较高,因此,需要根据系统中不同数据的属性设计不同的通信协议,从而最大程度地保证网络控制系统的实时性和可靠性。
发明内容
[0005] 本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种实时性强、可靠性高、可重用性好的基于数据流通信的网络控制系统。
[0006] 本发明的目的可以通过以下技术方案来实现:
[0007] 一种基于数据流通信的网络控制系统,其特征在于,包括传感器和执行器子系统、协议转换单元、消息分发单元、远程控制子系统、通信网络,所述的远程控制子系统包括数据存储单元、数据展现单元、客户端、控制与调度单元,所述的传感器和执行器子系统包括传感器、执行器、单片机,所述的单片机控制传感器采集被控对象的数据并将其发送给协议转换单元,该协议转换单元将采样数据按照数据流通信协议编码后进行分类,并通过通信网络发送给消息分发单元,该消息分发单元对接收到的数据包进行拷贝一份发送至数据存储单元,并写入日志存储在数据存储单元,所述的消息分发单元对接收到的数据包进行解码,按照数据流类型协议将数据包放入对应序列,按照分发规则对数据包进行分发,所述的控制与调度单元收到消息分发单元发送的数据后,解析具体内容后,经处理后发送控制指令给消息分发单元,消息分发单元收到后将其发送给单片机,单片机控制执行器进行具体操作,所述的数据展现单元从数据存储单元中获取历史和最新数据后,对其进行显示,用户可以通过客户端来查看被控对象的状态。
[0008] 所述的数据流通信协议包括数据流的划分、数据包的格式、数据包的编解码方法、数据流的发送和接收接口。
[0009] 所述的通信网络为基于TCP/UDP网络。
[0010] 所述的数据流分为采样流、用户控制流、算法控制流、紧急信息流、系统诊断流。
[0011] 与现有技术相比,本发明具有以下优点:
[0012] 1、可根据数据流的属性选择不同的通信方式,提高了网络控制系统的实时性和可靠性;
[0013] 2、提供了统一的数据流协议进行交互,提高了系统通信方法的可重用性,简化了网络控制系统的设计流程。
[0014] 3、协议转换单元与消息分发单元独立实现,提高了系统的可扩展性;
[0015] 4、各单元都部署在不同的硬件设备上仅通过TCP和UDP网络进行互联,某些单元的崩溃不会影响其他单元的运行,提高了系统的稳定性。
附图说明
[0016] 图1为本发明的结构示意图;
[0017] 图2为本发明的通信系统结构示意图;
[0018] 图3为本发明实施例2的单片机串口接收程序流程图;
[0019] 图4为本发明实施例2的单片机串口发送程序流程图;
[0020] 图5为本发明实施例2的中断服务程序流程图。
具体实施方式
[0021] 下面结合附图和具体实施例对本发明进行详细说明。
[0022] 实施例1
[0023] 如图1所示,一种基于数据流通信的网络控制系统,包括传感器和执行器子系统3、协议转换单元2、消息分发单元5、远程控制子系统1、通信网络4,所述的远程控制子系统
1包括数据存储单元12、数据展现单元13、客户端14、控制与调度单元11,所述的传感器和执行器子系统3包括传感器32、执行器31、单片机。
1包括数据存储单元12、数据展现单元13、客户端14、控制与调度单元11,所述的传感器和执行器子系统3包括传感器32、执行器31、单片机。
[0024] 传感器和执行器子系统3负责对被控对象的状态采集和具体动作的执行,是所有数据的源头和命令的最终执行者。该子系统负责物理信号到电信号(数字信号)的转换和电信号的通信,其通信方式和通信协议具有多样性,与具体的产品相关。
[0025] 协议转换单元2与传感器和执行器子系统3直接相连,专用于通信协议的转换,即将上一单元的其他通信协议(如:串口协议)转换为平台统一的数据流协议。
[0026] 消息分发单元5与协议转换单元2通过TCP/UDP网络连接,本单元的输出有两个单元(数据存储单元12、控制与调度单元11)。消息分发单元5通过解析部分消息内容,按照预先的数据流配置,将所有消息分发至各相应的输出单元。
[0027] 控制与调度单元11由消息分发单元5获取数据,解析具体的消息内容,通过控制和调度算法计算判断后,发送命令至消息分发单元5,最终至执行器31进行具体操作。
[0028] 数据存储单元12接收所有来自消息分发单元的数据,并进行格式化(数据库)和非格式化(日志)存储,对于需要格外关注的消息内容,在本单元需要进行详细的解码和内容解析,再进行格式化存储。
[0029] 数据展现单元13从数据存储单元获取历史和最新数据后,进行数据的展现,查询和发布。
[0030] 本发明各单元间通过统一的数据流协议进行交互,提高了系统通信方法的可重用性;消息分发单元和协议转换适配单元的独立实现,提高了系统的可扩展性;各单元都部署在不同的硬件设备上仅通过TCP和UDP网络进行互联,某些单元的崩溃不会影响其他单元的运行,提高了系统的稳定性。
[0031] 1、数据流定义
[0032] 数据流是指系统中具有相同发送特性和接收要求的一类交互数据。根据数据流的属性选择合适的传输协议进行传输,以提高系统的通信效率。数据流是逻辑上相关的一系列数据,按照一定规则或要求,由源节点(Src)出发经过网络并到达目的节点(Dest),数据流是一个矢量,单向的。
[0033] 定义1:流Stream是六元组,记做Stream=,其中,[0034] ① 为流中t时刻包长度的随机变量},且S满足:
[0035] a).{S(t),t≥T0}为一随机过程;
[0036] b). 随机变量S(t1)与S(t2)同分布。
[0037] ②随机序列Is={Is(n),n∈Z|Is(n)为流中包Pn与Pn+1的发送时间间隔},且随机变量Is(m)与Is(n)独立同分布;
[0038] ③T0∈R+为流中初始包的发出时间。
[0039] ④随机序Nlc={Nlc(n),n∈Z+|Nlc(n)为流中第n次连续丢包次数的随机变量},且 随机变量Nlc(m)与Nlc(n)独立同分布;
[0040] ⑤时间段T=[T1,T2]内的丢包次数 (ti为第n次丢包的时间);
[0041] ⑥Tl∈R+为流中判断包丢失的时间阈值;
[0042] 按照如上定义可知,上述参数中与源节点相关的参数有S、Is和T0,与目的节点相关的参数有Nlc、Nl([T1,T2]间隔的丢包次数)以及Tl。
[0043] 2、数据流的分类
[0044] 网络控制系统的数据流按照逻辑相关性可分为如下五类:采样流、用户控制流、算法控制流、紧急信息流、系统诊断流。根据数据流的定义可形式化描述如下:
[0045] 假设F(t)是一个关于时间的随机分布函数,i,s,m,n,E,e是大于零的常数,且e<E。
[0046] 1)采样流
[0047] 采样流是传感器按照指定间隔发送至控制器的数据,其特点是数据发送周期固定,每次数据量相对较小,数据具有时效性。形式化描述为:I服从Is(i)=1分布;S服从S(s)=1分布;Nlc在[0,n]之间,Nl在[0,m]之间F(t)分布,其中m,n由具体系统确定;Tl>0由具体系统确定
[0048] 2)用户控制流
[0049] 用户控制流是用户根据应用需要向控制器发送的命令信号,以及控制器做出判断并向执行器或传感器发送的对应命令,强调数据的可靠性,实时性要求不高。形式化描述为:I,S服从F(t)分布;Nlc服从Nlc(0)=1分布;Nl服从Nl(0)=1;0<Tl<E。
[0050] 3)算法控制流
[0051] 算法控制流是系统在动态过程中,控制器按照控制算法向执行器发送的调整命令。数据的发送频率与具体算法相关。执行器在接收该数据时具有时效性。形式化描述为:,I服从F(t)分布;S服从S(s)=1的分布;Nlc在[0,n]之间,Nl在[0,m]之间服从F(t)分布;Tl>0由具体系统确定。
[0052] 4)紧急信息流
[0053] 紧急信息流是在紧急情况下,控制器快速发送至执行器或报警设备的信号。该数据实时性要求较高,而且需要快速、可靠地发送至目标。形式化描述为:I、S服从F(t)分布;Nlc服从Nlc(0)=1分布;Nl服从Nl(0)=1分布;0<Tl<e。
[0054] 5)系统诊断流
[0055] 系统诊断流是控制器定时或不定时地向传感器和执行器发送的数据,通过分析诊断数据,可了解执行器和传感器的运行和故障状态。该数据的周期一般比采样数据长,数据量比其他类型数据大,数据的逻辑完整性和可靠性要求较高,但响应时间允许较长。形式化描述为:I服从Is(i)=1分布;S服从S(s)=1的分布;Nlc服从Nlc(0)=1分布;Nl服从Nl(0)=1;0<Tl<E。
[0056] 基于本发明的网络控制系统的交互数据根据上述分类方法进行划分,本发明为上述数据流分别选择如下传输协议:采样数据、算法调整信号使用UDP协议;用户控制信号、系统诊断数据使用TCP协议;紧急信号使用UDP协议,而且控制器在确认信号到达前应该连续发送。
[0057] 3、数据流通信协议
[0058] 数据流通信协议是网络控制系统各组成部件之间的主要通信方法,其内容包括:数据流的划分、数据包的格式、数据包的编解码方法和数据流的发送和接收接口。本协议中的数据流在相邻两个单元间是单向的,而且每种数据流仅使用一种传输协议进行传输,数据流的划分如上节所述。
[0059] (1)数据包的格式
[0060] 每种数据流是由一种或多种类型的数据包组成,每种数据包具有相同的编号(ID)。数据包的格式如表1所示。
[0061] 表1数据流通信协议中数据包的格式
[0062]数据包 起始符 ID 内容 校验码 结束符
项目
长度 1个字节 2个字节 N个字节 1个字节 1个字节
项目
长度 1个字节 2个字节 N个字节 1个字节 1个字节
[0063] 每个数据包包含起始符和结束符,起始符和结束符使用相同的8bit长的数表示(如0xFF)。数据包ID长度为2个字节,数据包内容长度为多个字节,数据包的校验码长度为1个字节。
[0064] 应用级别的通信协议中还有另外一种常用的数据包格式,即数据包有分隔符,分隔符后的字段即表示数据包长度,后面是数据内容。这种数据包格式的优点是在接收数据时,获取数据包长度字段后,直接获取后续数据并解析即可,不需要逐一扫描每个字段是否是数据包分隔符。但是缺点也比较明显,即当数据包发送过程发生错误后,可能导致接收端丢弃大量有用的数据包。如当接收端接收的数据包长度字段出错(过长),接收端一次接收多个数据包,在校验码的校验过程中导致多个数据包被丢弃。本发明的数据包格式虽然需要扫描每个字节,但是可以避免上述格式引发的问题。由于控制系统的数据包一般较小,每个字节的扫描也不会引起较大的效率损失。
[0065] (2)数据包的编码和解码
[0066] 数据包分隔符的引入必然会导致对数据包内容进行发送前和接收后的编解码过程。本发明使用的编解码方式是使用二次替换原则,解码方法则与编码方法相反。具体编码方法如下:将数据包内容中与分隔符(S)相等的数字进行两次替换,第一次将其替换为两个8bit的数值(设为A和B),然后对数据包中与A相同的数字进行两个字节的替换(A和C)。例如:
[0067]假设 S为0xff,A为0xED,B为0xEE,C为0xEF
编码前 0x20 0xb3 0xff 0x03 0xED 0x00
编码后 0x20 0xb3 0xED 0xEE 0x03 0xED 0xEF 0x00
编码前 0x20 0xb3 0xff 0x03 0xED 0x00
编码后 0x20 0xb3 0xED 0xEE 0x03 0xED 0xEF 0x00
[0068] (3)数据流的发送和接收接口
[0069] 数据流提供了简单的发送和接收接口,屏蔽了具体的通信细节。本发明抽象了数据流的公共特性——抽象流类,数据流定义中的六个参数即作为抽象数据流的六个属性。实现具体的数据流时,继承该抽象数据流,设置具体的六个属性,根据数据流的具体特性和六个属性重新实现发送和接收即可。
[0070] 本发明已经提供了上述五个数据流的实现,在构建网络控制系统时可以直接使用。在具体使用数据流进行发送和接收数据前,需要实例化前面实现的数据流对象,在实例化期间需要设置与数据流相关联的数据包类型编号和具体传输协议类型,然后在具体发送和接收数据包时,直接调用发送和接收接口即可完成通信过程。
[0071] 4、下面分别介绍本发明的基本构架、底层网络通信的IO模式、服务器和客户端的连接过程实现以及协议转换接口实现。
[0072] (1)通信系统的基本构架,如图2所示:通信系统的上层接口是数据流层,数据流层的左边即是通信系统的实现结构。通信系统按照功能划分为:侦听功能(Listener)、接收功能(Receiver)和发送功能(Sender)。侦听功能是服务器端特有的功能,输入是IP地址和端口,输出是客户端套接字在本地的代理套接字。接收功能从IO系统中获取字节流数据,然后进行解析将字节流解析为数据包存入对应缓存单元中,并通知数据流对象数据包已经准备好,数据流对象再进行后续处理。发送功能与接收功能相似但是方向相反,数据包是由数据流的使用者生成后存入缓存,并触发发送事件,然后对数据包进行编码,最终使用套接字发送编码后的字节流,其中数据流对象(Stream)与发送(Sender)和接收者(Receiver)在不同线程中。
[0073] (2)底层网络通信的IO模式
[0074] 本发明的底层网络通信是基于TCP和UDP的,具体是通过SOCKET接口实现,使用了Reactor模式(异步IO,非阻塞套接字加Select模式)作为SOCKET的基本交互结构。这种模式是基于事件的,可以有效提高系统的实时性。具体实现方法是:先创建TCP和UDP的非阻塞套接字(Socket)后,将套接字描述符和对应的响应事件(读回调处理或写回调处理)注册到事件分发器中,等待具体事件发生后,由响应器(Reactor)自动调用回调处理函数。
[0075] (3)服务器和客户端的连接过程实现
[0076] SOCKET通信过程中抽象和实现服务器和客户端的连接初始化过程是一个难点,因为客户端和服务器具有相似的发送和接收过程,两者仅仅在处理连接的初始化阶段不一样。由于服务器可同时服务多个客户端,在受理任何客户端前需要进行侦听,以判断是否有客户端连接,而客户端只需发出连接请求连接服务器端。本发明将服务器的侦听和接收服务过程抽象为一个侦听器(Listener)和一个侦听器的响应对象(ListenerHandler),该侦听器专门处理服务器端对新连接的受理,而接收响应对象则会在侦听器接收到新连接后处理新连接的要求。平台将客户端的连接过程也抽象为连接(Connector)和连接响应对象(ConnectorHandler),连接器向目的端发送连接请求后,通过Reactor等待受理连接的确认信号,服务器受理请求信号后,Reactor自动调用连接响应对象进行后续处理。
[0077] (4)协议转换接口实现
[0078] 平台为了兼容多种不同厂家的设备(传感器和执行器)以达到较高的扩展性,提供了通信协议的转换接口。涉及数据包生成的转换接口主要有:编码和解码接口,校验码计算接口,常用数据类型的数据包生成接口;数据包发送和接收的接口是默认提供的五个数据流对象和抽象数据流对象接口。一般在实现协议转换时,使用数据流对象来进行数据包的发送和接收,可以极大的简化转换器的实现。如果由于数据流对象不能满足具体需求,则可以自行采用其他方法实现数据的TCP和UDP通信过程,利用数据包的格式转换接口进行格式转换后,发送至本发明的消息分发器。
[0079] 实施例2
[0080] 本发明被用来实现一个基于Internet的网络控制系统,该系统用于远程控制和协调两台电机,使电机快速而稳定地达到预先设定的速率(远程控制),也支持不同电机的动态切换(协调),最后将电机的运行状态实时地发布至Internet。
[0081] 1、整个系统介绍
[0082] 系统的硬件设备包括3台PC和2套嵌入式设备。3台PC分别用于运行系统的数据存储单元与数据展现单元、控制与调度单元与消息分发单元、协议转换单元;2台嵌入式设备用于对两台电机的采样和执行工作。协议转换单元与采样和执行设备位于同一地点,其他设备在不同的地点,协议转换单元、控制与调度单元与消息分发单元通过Internet连接。硬件设备运行的支撑软件具体如下:数据存储单元与数据展现单元运行在Windows平台(结构化数据存储于SQL Server 2008),控制与调度单元与消息分发单元运行在Windows平台,协议转换单元运行于Linux平台,嵌入式设备是用单片机实现,分别作为电机的传感器和执行器。
[0083] 系统的主要通信网络是Internet,而Internet的主要应用传输协议是TCP和UDP。系统所有通信部分都通过本通信平台实现。由于与嵌入式设备的通信接口是串口通信设备,所以其协议转换单元使用了本发明提供的串口到TCP和UDP的协议转换接口实现。本通信平台在系统中的使用,避免了系统通信模块的复杂开发和调试过程,极大缩短了系统设计、开发和测试的周期,而且数据流协议的使用也保证了系统稳定和高效的通信过程。
[0084] 2.传感器和执行器子系统
[0085] 本子系统采用直流电机作为被控对象,与本子系统通信的是协议转换单元。本系统处理器采用单片机AT89S52。传感器和执行器子系统、协议转换单元之间通过串口通信机制进行数据传输。传感器将转速信息通过串口发送至协议转换单元,再通过其他子系统转发至控制与调度单元;控制与调度单元将根据某种控制算法得到的控制量通过串口模块发送至单片机,由执行器实现直流电机的调速控制。
[0086] (1)传感器实现
[0087] 该模块采用数字编码器测速。被控对象采用RS380-SH型他励直流无刷电机,编码器采用欧姆龙公司的E6A2-CW3C,结合直流电机的实际情况该模块采用M法测速。
[0088] M算法如下:在一定的时间Tc内测取编码器输出的脉冲个数M1,用以计算这段时间内的平均转速。假设电机每转动一圈共产生Z个脉冲,以Tc秒为单位,可以得到电机的转速为
[0089]
[0090] 具体实现为将编码器输出脉冲接到单片机的INT1端,利用外部中断记录编码器的脉冲数,使用通过定时器T0实现的系统时钟每1s计算一次直流电机的速度。
[0091] (2)执行器
[0092] 该模块完成直流电机的调速控制,采用L298N型电机驱动芯片,利用单片机软件实现PWM的速度调节。PWM脉宽调制波是一种可用程序来控制波形占空比、周期、相位的波形。将单片机的两路PWM输出接到L298N芯片的IN1、IN2脚,通过2路PWM波的占空比不同,可以实现正转、正转制动、反转、反转制动,分别对应于直流电机的四象限运行。
[0093] 基于单片机用软件实现直流电机PWM调速控制的方法为:采用定时器作为脉宽控制的定时方式,这一方式产生的脉冲宽度极其精确,误差只在几个微秒。通过控制定时器T1的初值,从而可以实现从AT89S52的两路PWM通道输出不同占空比的脉冲波形,达到精确调速的目的。
[0094] (3)串口通信模块
[0095] 该模块利用单片机串行的全双工接口功能,实现单片机和计算机之间的串口通信。单片机在接收到控制指令之后,将控制指令解析后产生控制信号,进行直流电机速度的调节,以达到期望速度。同时单片机接收直流电机速度的反馈信号,经串口再传送给计算机,实现转速的精确测量和标定。
[0096] 单片机的串行接口电平为TTL电平,与计算机的串行接口电平不一致,因此需要电平转换。选用MAXIM公司的MAX232通用串行接收/发送驱动芯片。直流电机驱动单元和AT89S52之间的信号传输采用RS232通讯规范。系统上电后,计算机和单片机首先要对各自的串行口进行初始化,确定串行口工作方式,设置双方一致的波特率、传输数据位数等串行口参数。如图3、图4、图5所示,单片机采用中断方式接收消息和发送消息。单片机按照1s的采样周期接收直流电机的速度信息,并响应串口发送中断,跳转至中断服务程序,将速度信息发送给计算机。相应地,单片机从串行口接收计算机发送的控制指令,响应串口接收中断,跳转至中断服务程序,具体的通信实现细节。
[0097] 3.协议转换单元
[0098] 协议转换单元的主要工作可以分为两部分,第一部分是将TCP或UDP接收到的数据进行解码后,然后使用串口协议编码后发送至串口。第二部分是将串口发送来的数据进行解码后按照数据流协议编码后通过TCP或者UDP进行发送。由于从串口接收的数据将要通过TCP或者UDP发送至Internet,这些数据需要分类发送(具体如上述的数据流分类),所以需要预先将串口接收的数据包按照数据包编号进行分类,划归为具体的五种数据流之一后,使用具体的数据流对象进行发送。
[0099] 4.消息分发单元
[0100] 本通信平台的使用减少了消息分发单元的开发复杂度。消息分发单元先将所有收到的数据包拷贝一份并发送至数据存储单元中备份写入日志;然后将接收的数据进行解码,再按照传输协议类型将数据包存入相应的队列,最后使用异步IO方式按照分发规则对数据进行分发。分发规则是一张哈希表(Hash Table),哈希表的关键字为数据包的编号,关键字对应的值是数据流对象。在等待TCP或UDP套接字可写时,从队列中获取数据包内容,查询数据包的编号对应的数据流对象,通过数据流对象进行数据包的发送。
[0101] 5.控制与调度单元
[0102] 控制与调度单元使用PID算法实现,将实时采样的电机速率和目标速率以及其他系数作为输入,计算结果是执行器(PWM波发生器)应该输出的PWM波的占空比。控制与调度单元包含两个部分,分别是控制算法和数据流通信模块。控制与调度单元程序使用多线程实现,控制算法独立运行于主线程中,数据流中的套接字通信模块运行于辅助线程中。主线程和辅助线程间使用线程安全的缓冲队列进行数据包的交换,当辅助线程收到完整数据包后通过线程同步机制通知主线程通过数据流读取数据后进行算法计算。
[0103] 6.数据存储单元、数据展现单元
[0104] 数据存储单元存储了结构化数据和非结构化数据。结构化数据存储在数据库中(SQL Server2008),非结构化数据(日志)存储在文件系统中,非结构化数据主要用于调试和测试使用,结构化数据是数据展现单元的数据源。数据存储单元由两部分组成:数据包接收和解析模块以及数据存储模块(日志存储和数据库存储)。数据包的接收模块使用本通信平台实现。数据存储单元强调数据的可靠性,对实时性要求不高,所以只需要使用一种基于TCP的数据流进行接收即可。数据存储单元使用操作系统提供的文件操作功能和数据库访问功能。
[0105] 数据展现单元从数据存储单元中获取结构化数据,通过Web服务器向Internet发布数据展现结果。数据展现单元通过Web技术及时以动画的形式展现了两台电机的运行状态;以图表的形式展现了两台电机的实时运行曲线和其他实时参数;该单元还支持电机运行的历史状态查询等功能。