论文部分内容阅读
[摘要]仿真软件的发展与仿真应用、算法、计算机和建模等技术的发展相辅相成。其目标是不断改善面向问题、面向用户的模块描述能力和对模型实验的功能。SimulationX是个多学科仿真软件,包括信号、机械、液压、气动、电、等学科,本文就SimulationX在不同网络通讯方面的仿真进行了探索和分析。
[关键词]SimulationX 仿真 机械
SimulationX是德国ITI公司的主要产品, 是一款分析评价技术系统内各部件相互作用的软件,是多学科领域建模、仿真和分析的通用CAE工具,并具有强大标准元件库,这些元件库包括:1D力学 、3D多体系统、动力传动系统、液力学、气动力学、热力学、电子学、电驱动、磁学和控制。
一、SimulationX系统的功能与特点
SimulationX在统一的平台实现了多学科领域的系统工程的建模和仿真。SimulationX可以根据用户需求自定义界面, 而简单快捷的建模方式可以满足不同用户的要求。根据不同行业的特点, 用户可以利用TypeDesignerl 具自定义标准元件、对元件库的标准元件进行扩展、对已有模型进行封装以及对所建模型加密,且具有良好的开放性、继承性和保密性。
主要特点有:①保留了3个层次的建模方式:数学方程级、方块图级、基本元素和元件级;模块名称参数和变量清晰,不同的用户可以根据自己的特点和专长选择适合自己的建模方式或多种方式组合使用。②数据的分析和显示。③在统一的平台上实现了多学科领域系统工程建模和仿真:包括机械、液压、气动、热、电和磁等物理领域。不同领域模块之间直观的物理连接方式使得SimulationX成为多学科领域系统工程建模和仿真的理想环境之一。④模型、程序、数据、图形的存储和检索。可以通过对软件的设计来实现这些功能。仿真软件分为仿真语言、仿真程序包和仿真软件系统三类。其中仿真语言是应用最广泛的仿真软件。仿真程序包是针对仿真的专门应用领域建立起来的程序系统。软件设认人员将常用的程序段设计成通用的子程序模块,并设计一个主程序模块,用于调用子程序模块。仿真研究人员使用这种程序包可免去繁重的程序编制工作。
二、SimulationX系统的发展优势
SimulationX仿真模型的扩充或改变都可通过图形用户界面( GUI )来进行,无需编写任何程序代码。SimulationX为用户提供了一个标准化、规范化和图形化的二次开发平台:用户不仅可以直接对SimulationX所有模型进行修改, 还可以基于Modelica语言创建新的模型,并能够把用户自己的C代码模型集成到SimulationX软件包中。SimulationX基于对基本元素进行组合的建模理念, 即把物理系统分解为工程系统的各种最小要素来建立模型,尽可能详细和精确地描述零部件及复杂的工程系统。
SimulationX定位的目标人群是广大技术人员,建模的语言是工程技术通用语言。图形化、基元化的建模方式使其成为工程机械、汽车、造船和航空工业研部门的理想选择。另外,在利用三维机械软件进行产品的设计时,如果善于利用软件的分析功能,将能有效减少试制周期,提高效率,并节约成本。
三、SimulationX系统的网络通讯设计
基于仿真软件的服务器端和客户端的交互式操作的特点,数据通信需要解决在多客户端情况下大批量、多种类型数据的实时传输问题,保证实时通信,服务器端需要提供各客户端网络连接、数据收发、网络控制、数据粘包和丢包处理等解决方案,采用交换服务器模式能够满足客户端与服务器的数据交换,客户端的数据上传至服务器,服务器解析数据后保存。
输出的通讯接口函数,方便地实现服务器和客户端(服务器端和客户端)的数据传输,服务器为每个连接的客户端创建若干个工作线程,这些线程负责与连接的客户端进行数据通信,服务器端设计流程如图2所示。
发送方引起的粘包是由TCP协议本身造成的,TCP为提高傳输效率,发送方往往要收集到足够多的数据后才发送一包数据,若连续几次发送的数据都很少,通常TCP会根据优化算法把这些数据合成一包后一次发送出去,这样接收方就收到了粘包数据。
接收方引起的粘包是由于接收方用户进程不及时接收数据,从而导致粘包,这是因为接收方先把收到的数据放在套接字内部接收缓冲区,用户进程再从该缓冲区取出数据,若下一包数据到达时前一包数据尚未被用户进程取走,则下一包数据就会放到该缓冲区中前一包数据之末,而用户进程根据预先设定的缓冲区大小从接收缓冲区取数据,这样就一次取到了多包数据。数据接收线程和数据解读线程分离设计方法可以解决粘包问题,数据接收线程完成数据的接收和数据预处理(将粘连的数据包解开),数据解读线程负责处理数据包。
参考文献:
[1]徐 晶, 许 炜:消息中间件综述[J],计算机工程,2005,31(16):73—76
[2]李欢峰:中间件技术在分布式事务处理中的研究和应用[D],沈阳:东北大学软件工程,2006
[3]BEVERIDGE J:WIENER R.Win32多线程程序设计[M],侯捷,译.华中科技大学出版社,2002:403
[4]李小立:基于VC++6.0 MFC的多线程通信程序[D],西安:西北工业大学计算机应用技术,2001
[5]周敏刚, 张学宏, 张玲英等:基于Socket的网络中间件开发技术.航空计算技术[J],2000,30(4):29 —32
[关键词]SimulationX 仿真 机械
SimulationX是德国ITI公司的主要产品, 是一款分析评价技术系统内各部件相互作用的软件,是多学科领域建模、仿真和分析的通用CAE工具,并具有强大标准元件库,这些元件库包括:1D力学 、3D多体系统、动力传动系统、液力学、气动力学、热力学、电子学、电驱动、磁学和控制。
一、SimulationX系统的功能与特点
SimulationX在统一的平台实现了多学科领域的系统工程的建模和仿真。SimulationX可以根据用户需求自定义界面, 而简单快捷的建模方式可以满足不同用户的要求。根据不同行业的特点, 用户可以利用TypeDesignerl 具自定义标准元件、对元件库的标准元件进行扩展、对已有模型进行封装以及对所建模型加密,且具有良好的开放性、继承性和保密性。
主要特点有:①保留了3个层次的建模方式:数学方程级、方块图级、基本元素和元件级;模块名称参数和变量清晰,不同的用户可以根据自己的特点和专长选择适合自己的建模方式或多种方式组合使用。②数据的分析和显示。③在统一的平台上实现了多学科领域系统工程建模和仿真:包括机械、液压、气动、热、电和磁等物理领域。不同领域模块之间直观的物理连接方式使得SimulationX成为多学科领域系统工程建模和仿真的理想环境之一。④模型、程序、数据、图形的存储和检索。可以通过对软件的设计来实现这些功能。仿真软件分为仿真语言、仿真程序包和仿真软件系统三类。其中仿真语言是应用最广泛的仿真软件。仿真程序包是针对仿真的专门应用领域建立起来的程序系统。软件设认人员将常用的程序段设计成通用的子程序模块,并设计一个主程序模块,用于调用子程序模块。仿真研究人员使用这种程序包可免去繁重的程序编制工作。
二、SimulationX系统的发展优势
SimulationX仿真模型的扩充或改变都可通过图形用户界面( GUI )来进行,无需编写任何程序代码。SimulationX为用户提供了一个标准化、规范化和图形化的二次开发平台:用户不仅可以直接对SimulationX所有模型进行修改, 还可以基于Modelica语言创建新的模型,并能够把用户自己的C代码模型集成到SimulationX软件包中。SimulationX基于对基本元素进行组合的建模理念, 即把物理系统分解为工程系统的各种最小要素来建立模型,尽可能详细和精确地描述零部件及复杂的工程系统。
SimulationX定位的目标人群是广大技术人员,建模的语言是工程技术通用语言。图形化、基元化的建模方式使其成为工程机械、汽车、造船和航空工业研部门的理想选择。另外,在利用三维机械软件进行产品的设计时,如果善于利用软件的分析功能,将能有效减少试制周期,提高效率,并节约成本。
三、SimulationX系统的网络通讯设计
基于仿真软件的服务器端和客户端的交互式操作的特点,数据通信需要解决在多客户端情况下大批量、多种类型数据的实时传输问题,保证实时通信,服务器端需要提供各客户端网络连接、数据收发、网络控制、数据粘包和丢包处理等解决方案,采用交换服务器模式能够满足客户端与服务器的数据交换,客户端的数据上传至服务器,服务器解析数据后保存。
输出的通讯接口函数,方便地实现服务器和客户端(服务器端和客户端)的数据传输,服务器为每个连接的客户端创建若干个工作线程,这些线程负责与连接的客户端进行数据通信,服务器端设计流程如图2所示。
发送方引起的粘包是由TCP协议本身造成的,TCP为提高傳输效率,发送方往往要收集到足够多的数据后才发送一包数据,若连续几次发送的数据都很少,通常TCP会根据优化算法把这些数据合成一包后一次发送出去,这样接收方就收到了粘包数据。
接收方引起的粘包是由于接收方用户进程不及时接收数据,从而导致粘包,这是因为接收方先把收到的数据放在套接字内部接收缓冲区,用户进程再从该缓冲区取出数据,若下一包数据到达时前一包数据尚未被用户进程取走,则下一包数据就会放到该缓冲区中前一包数据之末,而用户进程根据预先设定的缓冲区大小从接收缓冲区取数据,这样就一次取到了多包数据。数据接收线程和数据解读线程分离设计方法可以解决粘包问题,数据接收线程完成数据的接收和数据预处理(将粘连的数据包解开),数据解读线程负责处理数据包。
参考文献:
[1]徐 晶, 许 炜:消息中间件综述[J],计算机工程,2005,31(16):73—76
[2]李欢峰:中间件技术在分布式事务处理中的研究和应用[D],沈阳:东北大学软件工程,2006
[3]BEVERIDGE J:WIENER R.Win32多线程程序设计[M],侯捷,译.华中科技大学出版社,2002:403
[4]李小立:基于VC++6.0 MFC的多线程通信程序[D],西安:西北工业大学计算机应用技术,2001
[5]周敏刚, 张学宏, 张玲英等:基于Socket的网络中间件开发技术.航空计算技术[J],2000,30(4):29 —32