摘要:本文分析了虚拟实验中反馈回路网络的各类组成元素,在网络中创新性地增加了节点的概念,并提出了节点端口关联关系表和元件和端口出入度关系表两种表来表示反馈回路网络的构成。在此基础上,提出了基于事件驱动的虚拟实验反馈回路仿真具体算法。之后,本文将提出的反馈回路仿真算法应用到液压伺服系统虚拟实验的设计中。通过分析电液位置伺服系统实验的仿真结果,最终证明了所提出的算法是正确的。
关键词:虚拟实验;反馈回路;事件驱动;电液位置伺服系统
中图分类号:TP391.9 文献标识码:B DOI:10.3969/j.issn.1003-6970.2015.02.026
0 引言
虚拟实验是指借助于计算机仿真技术、虚拟现实(VR)技术、多媒体技术、网络技术等,在计算机和网络上营造的可用来辅助、部分代替或全部替代传统实验各操作环节的软硬件环境,实验者可以像在真实的环境中一样在一个虚拟的实验环境中完成各种各样的实验,所取得的实验效果如同在真实的实验室环境中一样,甚至比其更好。虚拟实验的实验内容十分丰富,操作简单,且可以无限复制,易于推广。开展网上虚拟实验教学能够突破传统实验对“时、空”的限制,不论是学生还是教师,都可以随时随地进行虚拟实验,对实验教学非常有帮助。在进行多门学科的虚拟实验开发过程中,反馈网络系统如何仿真的问题严重困扰了软件设计的进程。找到一种通用的解决方案,在此方案的基础上设计适用于不同学科的回路仿真算法变得极为迫切。
1 国内外研究现状
由于虚拟实验自身成本低、资源可重复利用、实验方式灵活自由、局限性小的特性,虚拟实验对于推动课堂实验教学改革、推动远程教育发展、网络教育等有着重要的意义,具有非常广阔的前景。国内外许多大学和研究机构都有开展虚拟试验系统研究开发的相关工作。通过对仿真实验进行大量的研究,对于虚拟实验中的这种闭环网络,主流的虚拟实验仿真软件主要是基于SPICE仿真原理或者是Simulink代数环化解两种方法进行扩展和优化来仿真计算的。SPICE仿真原理的核心是使用电路分析中的数学方法建立数学方程组,然后通过求解方程组,得到的方程组的解便是各个结点的值。在SPICE网表数据格式的基础上,对于一个具体的电路网络,SPICE是使用电路分析中的结点分析法来进行仿真计算的。Simulink是MATLAB中用来提供系统建模和可视化结果分析的综合仿真环境。在Simulink中反馈回路主要表现为代数环的仿真求解。Simulink中对可求解的集中代数环做了归纳并总结出几种代数环的化解方法。
2 反馈回路网络结构的表示法
要进行反馈网络的仿真,第一步就是要将这个网络用计算机语言和数据结构表示或描述出来。从直观上来看,虚拟实验的计算仿真网络是一个有向图的结构。分析其组成元素,主要有虚拟实验仪器元件、隶属于元件的输入端口和输出端口、有向连接线组成。为了更加直观的描述信号值的变化,再在网络中加入节点这一概念,一个结点表示为相互连在一起的连接线,其上面的信号值必然是相同的。图1所示的反馈网络中,一共有5个节点,5个元件、7个连接、每个元件有1至2个输入端口和一个输出端口。
在进行系统仿真设计的时候,有两种途径来表示一个仿真网络。一种是使用数据结构中的图的表示方法,表示为一个图结构;另一种是采用不同类元素关联表的表示法。
图结构可用的表示法有领结矩阵表示法、邻接表表示法等。但是这类表示法虽然比较通用,却只能记录仿真网络的表层拓扑结构,忽略了仿真网络本身各个组成元素所具有的特征。
关联表表示法包括两种:建立元件输入输出端口和节点的关联关系二维数据表,用来表示端口和节点的关联关系;建立元件和端口关系表,用来表示元件和端口的出入度关系。
2.1 节点端口关联关系表(NPT)
有向网络中的节点有一个输入端口和多个输出端口,节点状态改变依赖于输入端口,输出端口随输入端口变化而变化。依据这个特点可以建立节点和端口的关联关系表。例如图2所示的拓扑结构用节点端口关联关系表表示的结果将如表1所示。通过节点端口关联关系表可以查询出的信息有:
(a)一个节点与那些端口相关
(b)一个节点流入端口是哪一个,流出端口有哪些
(c)端口的数据流向
2.2 元件和端口出入度关系表(PPT)
元件和端口出入度关系表(PPT)描述了元件有哪些入度端口,有哪些出度端口。图2所示的拓扑结构用元件和端口出入度关系表表示的结果将如表2所示。
通过元件和端口出入度关系表可以查询出的信息有:
(a)一个元件与那些端口相关
(b)一个元件输出端口是哪一个,输入端口有哪些
(c)仅有输出端口没有输入端口的为源元件
(d)仅有输入端口没有输出端口的为目标元件
3 反馈回路仿真算法
3.1 事件驱动时反馈回路仿真方法
事件驱动是一种解决持续型的事务时的一种处理策略。在进行持续类型的事务时,以事件的到来为触发点,由事件来驱动事务向前推进。对应于事件驱动的计算机编程模型,事件驱动反馈回路仿真运算是在有关联的元件中间,通过事件触发计算的方法。主要包括:
(1)事件源:用来产生事件,主体为元件的输出端口。
(2)事件中继:功能较少的事件管理器。用以接收并分发事件,主体为节点,一个节点拥有一个输入端口和多个输出端口(节点的输入端口为元件的输出端口,节点的输出端口为元件的输入端口)。节点的输入端口(元件的输出端口)作为事件源产生事件,传递给节点,节点将消息分发给所有输出端口(元件的输入端口)。
(3)事件目标:用来接收事件,主体为元件的输入端口。 (4)事件处理单元:响应事件并处理,主体为元件。
3.2 事件驱动反馈回路解析的运行过程
事件驱动的一般处理流程顺序是:
(1)由事件源产生事件;
(2)事件被传递给事件中继;
(3)事件中继分发事件到事件目标;
(4)事件处理单元完成业务逻辑并在输出端口产生新事件重复执行(1)至(4)过程。
以图2为例详细描述事件驱动处理流程为:
(1)解析拓扑结构,产生“节点端口关联关系表”和“元件和端口出入度关系表”。
(2)查询“元件和端口出入度关系表”找到所有源元件(仅有输出没有输入的元件),图2中只有K元件。
(3)执行K元件业务逻辑,在K1端口上产生事件。
(4)之后的仿真流程和结果如表3所示。
3.3 事件传递过程
事件处理需要事件迭代器、事件、元件、端口、节点端口关联关系表、元件和端口出入度关系表的参与。迭代器负责事件的迭代:
(1)每次迭代处理一个事件:迭代就是一个处理过程,上一次迭代产生的事件由本次迭代进行处理。一个事件可以包括多个元件的运算结果。同时迭代也产生一个事件,作为下一次迭代的处理对象。迭代由迭代器完成。
(2)一个事件可以包括多个元件的运算结果,每个运算结果对应一个输出端口。一个输出端口对应一个节点,一个节点对应多个输入端口,输入端口对应执行计算的元件。
(3)每次迭代产生一个事件,每次迭代产生多个结果,结果作为本次迭代的事件内容。
(4)往复执行迭代过程完成计算。
3.4 系统循环次数
系统循环次数:指迭代过程全部元件都达到或超过某个固定更新次数。因为用户搭建的拓扑中可以出现反馈,反馈系统可以是多重的,这样会造成拓扑中元件更新(执行业务逻辑)次数并不一样多。而反馈拓扑是一个无限循环系统,为了让系统正常停止运算,给出系统循环次数这个概念。
停止运算的两个条件是:
(1)系统中在迭代过程中不在出现新的运算结果,也就是没有反馈回路,一次性能够完成仿真计算。
(2)系统在迭代过程中所有元件都达到或超过指定计算次数。
4 算法测试
在进行液压伺服虚拟实验的开发中,将基于事件驱动的反馈回路仿真算法应用于系统仿真设计中,并使用电液位置伺服系统实验进行了测试和结果分析。
电液位置伺服系统本质上是一个反馈回路系统,通过结果信号与原始信号进行差异比较,不断调整结果。测试使用的仿真实验系统动态结构图如图3所示。带入参数后如图4所示。其中初始位置为0.2。图5为系统仿真图。
实验仿真运行后的结果如图6所示。仿真的时长为0.5秒。其中a是液压系统时域图的结果,表示偏移位置z的时域响应曲线;b是液压系统时域图2的结果,表示滑阀位移y的时域响应曲线;c是液压系统时域图3的结果,表示活塞运动速度v的时域响应曲线;d是液压系统时域图4的结果,表示活塞位置x的时域响应曲线。
从实验结果图中我们可以看到,在0.5秒的响应时间内,液压缸的活塞位置x最终达到了0.2,而活塞和初始位置的偏差最终变为了0,液压缸的活塞位置与初始位置信号保持一种,而且整个系统的响应速度极快。实验结果与预期的实验结果一致,说明算法设计正确。
5 结论
本文通过对反馈网络进行研究和总结,分析创新性地加入节点的概念,并提出了节点端口关联关系表和元件和端口出入度关系表两种表。在此两种表的基础上总结参照事件驱动的一般策略,提出了基于事件驱动的反馈回路仿真算法。最终将基于事件驱动的反馈回路仿真算法应用于液压伺服系统虚拟实验中。通过分析电液位置伺服系统实验的实验结果,证明了算法的设计是正确的。