首页 > 技术 > CAE其它 > > 一体化仿真支撑软件PROSIMS

一体化仿真支撑软件PROSIMS

作者:Simwe    来源:    发布时间:2008-08-27    收藏】 【打印】  复制连接  【 】 我来说两句:(0逛逛论坛
一体化仿真支撑软件PROSIMS

章晓明 王扬

摘 要 本文介绍目前国内仅有的在Windows操作系统下的PROSIMS支撑软件。该软件是面向对象
的、一体化的、能同时用于仿真和控制系统的开发与实时运行。文中重点说明了其运行机制及其
优越性。
关键词 支撑软件 一体化

An Integrative Simulation and Control Support Software

Zhang Xiaoming Wang Yang
(Shenzhen Benelux Simulation & Control Company Shenzhen 518057)

Abstract An one and only domestic compute simulation and control support software
PROSIMS used in Windows operation system is introduced in this paper. .PROSIMS is an
object-oriented and integrative computer real-time executive environment that can be
used for developing both computer simulation and control system. The paper emphasizes
PROSIMS’s executive mode and superiority.
Keywords: Support software Integrative

1 引言

  现代仿真系统和分布式控制系统(DCS)工程,都使用支撑软件作为开发工具和运行环境。国内
外有关各公司均拥有自行开发的这类软件,比较著名的有加拿大CAE公司的ROSE,美国ABB公司的
Cetran,法国汤姆森公司的Flownet、Reganet和Logenet,我国清华大学的GNET,华北电力大学的
Star-90,和我公司耗费十余人年,并经过近十次工程实践考验,现已成熟的,面向对象和一体化
的PROSIMS 4.0版本支撑软件等。
  上列各支撑软件除我公司的PROSIMS外,均存在下列问题:
  (1) 暂不能在当前广泛使用的WINDOWS NT操作系统下运行,因而限制其使用高性能低价格的
微机(例如Pentium Ⅱ),影响到工程造价很难降低。
  (2) 工程开发中仍需做写程序、编译和连接等项工作。
  (3)在线修改功能欠缺,通常仅能在线修改某些参数,很难做到在线修改系统结构和置换算
法。
  (4)对于系统所需要的操作员站、教员/工程师站软件,需另外开发,没有纳入支撑软件一
体化的内容中。
  (5)支撑软件不同时适用于仿真工程和DCS系统工程。
  本文介绍的PROSIMS 4.0版本支撑软件,全部弥补了上列不足之处,是一套真正面向对象的、
模块化和一体化、具有完整在线调试功能,并且兼顾仿真与控制工程开发与实时运行环境的支撑
软件。

2 硬件平台和操作系统

  PROSIMS 4.0版本支撑软件所需硬件平台为联网的微机,网络选用按TCP/IP通讯协议的以太
网,使用HUB连接各微机,其中至少有一台应选用Pentium Ⅱ-233以上的高档微机,作为实时计
算的服务器,亦即仿真计算机或控制用上位机。
  操作系统采用WINDOWS NT/95/98均可。
  服务器可兼作工程师站、甚至再兼作仿真培训系统的教员站。
  操作员站使用同样的微机平台,也接入以太网。
  这样构成的硬件平台,全部选用同类型标准化的微机,因此,在另一种意义上也体现出“模
块化”和“一体化”的概念。显然,硬件平台的价格是十分低廉的。

3 PROSIMS 4.0版本支撑软件的特点

  (1)使用该支撑软件时,一般不需编制任何程序,除非用户欲在面向对象的算法库中增添
新的算法。
  (2)算法库以WINDOWS特有的动态连接库“DLL”的格式进行管理,用户在构造仿真或控制系
统时,仅仅是生成了一组组调用对应算法的变量参数,即模块,不需要将各子程序经编译和连接
成为完整的执行文件。正因为如此,才使真正的在线调试成为可能。系统在每个计算帧时内,将
所有的模块参数传递并CALL对应算法,其结果通过指针更新共用的变量数据区。各模块之间通过
变量发生联系。这样,在运行中,不但可随时修改任一模块的系数,且可以修改结构,即模块的
输入/输出与另外模块之间的关系,并可增删其它模块。
  (3)集服务器、工程师站、教员站功能为一体的集成开发运行环境,在任意运行模式下,用
户的操作界面和操作方法完全一致。因此,可将服务器兼作教员/工程师站使用,也可由网上另外
的微机充任教员/工程师站。
  (4)灵活的开发手段,用户既可在单机状态下独自开发子系统,然后加载到在服务器上自动
进行合并,也可通过联网,即在多用户环境(多个工程师站)下同时开发及调试模型。
  (5)支撑软件还给出了操作员站(含就地操作站)人—机画面的生成工具,用户一经生成画
面,即可投入系统运行。
  (6)在构成仿真或控制系统时,所有的中间变量均是自动生成的,不需用户考虑。
  (7)具有事件记录管理功能。
  (8)设有对模块、算法、变量等十分方便的检索及观察功能。
  (9)具有虚拟盘台画面生成能力,只需调用图元库中的图元,即可任意生成由各类仪表、开
关、按钮、指示灯和操作器组成的盘台画面。图元库具有开放接口,供用户自行增、删、改。
  (10)具有自动调试功能,在控制工程中可以自寻最优的调节参数,在仿真工程中可以自动
调整指定的系统参数,使其达到与现场运行动态状况一致。
  (11)设有自动生成趋势图和棒图的工具,便于调试时变量之间的比较,和运行时必需的显
示。

4 PROSIMS 4.0版本支撑软件的结构与运行机制

  PROSIMS是基于32位WINDOWS操作系统(95/98/NT)环境的全汉化实时控制与仿真支撑软件。
它由主控程序PROSIMS.EXE、附属的DLL动态连接库文件(COMBASE.DLL-基本功能扩展、
CODEPLUS.DLL-数据库管理、TCPIP.DLL-网络通信管理)及常用算法动态连接库、用户建立的仿
真模型及变量数据库组成。它充分运用了32位WINDOWS操作系统的多任务处理机制,采用三个相互
独立的线程,即实时算法运算调度程序,网络数据传送与接收程序,用户介面交互处理程序,在
共享一个算法、模型、变量数据区的前提下完成各自的任务。主控程序的核心是多任务的调度,
即多线程的管理。主控程序通过系统配置文件完成初始化工作,在系统运行时,用户还可以根据
自己的需要动态调整系统的运行参数。
  PROSIMS从本质上讲,是一个实时数据库管理系统。它把仿真对象或控制系统分解为算法、模
块和变量三组数据,每组数据在内存中都是一片连续的具有特定结构的数组,每个数组的长度可
根据系统装载的情况动态调整。算法、模块和变量数据以数组指针的形式互为参数通过算法运算
调度子任务实现三者之间的相互联系。

4.1算法

  在PROSIMS中,算法是一个个按给定规则用C++语言编写的子程序,小到仅有几个变量的与、
或、非,大到集成了成千上万个变量的专用函数,都可做为算法。算法函数的格式统一为:

void (*ALGFUNC)(Value *BaseDataPtr,long *DataIdx)

  其中,参数1 BaseDataPtr为变量数组区的首指针,参数2 DataIdx为变量指针索引表的数据
指针,其数组长度依算法的不同而相异。
  每个算法的引用数据变量分输入、输出、系数三种,每种数据变量的个数不限,但最少必须
有一个输入、一个输出。如二值相与算法,即为2个输入,1个输出,0个系数,其参数2 DataIdx
数组指针的元素数为3。
  需要注意的是:参数2 DataIdx仅仅是变量指针索引表的数据指针,算法在取得实际变量值时
必须经过二次转换,即从数组的数组中存取值。每一个调用算法的模块所传递给算法的引用变量
索引表指针所包含的元素数都必须与算法所用变量数相一致。当需要修改算法的输入、输出及系
数的数量时,所对应的模块也必须做相应更改或由系统自动进行调整。
  PROSIMS根据算法源程序中的描述信息生成的算法描述数据库的结构如下表所示:

表 1 算法描述数据库结构

序号
字段名
类型
长度
注释

1
NAME 字符
14
算法名
2
TYPE 字符
10
算法类型
3
AUTHOR 字符
10
作者 
4
DATE 日期

最后修改日期
5
INPUT 数字
6
变量输入数
6
OUTPUT 数字
6
变量输出数
7
COEF 数字
6
变量系数数
8
DESC 备注
10
算法描述
9
SRCNAME 备注
10
原文件所在路径 
10
NOTE 备注
10
算法引用量的详细描述


  对给定的一组算法集合用32位编译器编译连接,生成DLL格式的动态连接库,即可供PROSIMS
动态装载,在VC环境下,通过PROSIMS还可对算法程序进行在线修改调试。
  装载算法时,系统根据算法描述表,取得每个算法的函数指针,并按顺序填入对应的算法数
据区中,供模块调用。
4.2模块

  PROSIMS中的模块,主要是一组引用变量地址的索引表。模块运算的过程,就是将变量地址索
引表的指针传递并CALL对应算法子程序的过程。模块在建立的时候,由选定算法描述,得知变量
的输入、输出和系数数,从而确定变量地址索引表的大小,并将其加入模块描述数据库中,同时
调整内存中的模块数据区。模块之间通过变量相联系,如A模块的输出变量做为B模块的输入变
量,B模块的输出变量又反过来做A模块的系数变量。则当A模块运算后,对应的输出变量将影响B
模块的运算,B模块的运算结果又影响A模块的下一次运算。由于索引表可以按要求随时改变,即
每个模块的引用变量或参数均可动态调整更新(更换变量或改变值的大小),所以系统运行时可以
在线改变模块的连接关系。模块在增、删、改过程中,并不涉及程序的编写或编译问题,因此实
现了真正意义上的在线调试。
  模块还有其它一些属性,如:模块名、调用算法名、子系统分类、描述信息、计算帧时、当
前状态(激活/未激活/删除)等。计算帧时用于调整模块的运算次数,对一些快过程的模块而
言,计算帧时应尽可能地小,反之,则可以拉大帧时,以减小计算负荷。PROSIMS的计算帧时最小
为10毫秒(10MS),一般情况下为100毫秒(100MS)。模块的当前状态主要用于系统的调试或特殊
处理。在正常运行时,只有被激活的模块参与运算过程,如需要排除故障或只运行若干子系统,
可以将不相关的模块禁止。
  模块在系统中的运算顺序,是按照数据库记录的排列顺序进行的。如果装载了多个模型数据
库,则按照数据库的装入顺序及各数据库记录的排列顺序进行。在一个计算帧时内,所有装入内
存中的模块(未激活及已做删除标记的模块除外)都应运算一遍。
  模块描述数据库的数据结构如下表所示:

表 2 模块描述数据库结构

序号
字段名
类型
长度
注释

1
MDLNAME 字符
14
模块名
2
ALGNAME 字符
14
模块调用的算法名
3
STEP 数字
6
模块运算步长(毫秒) 
4
SYS 字符
6
变量系统分类
5
INPUT 数字
6
变量输入数
6
OUTPUT 数字
6
变量输出数
7
COEF 数字
6
变量系数数
8
DESC 备注
10
模块描述
9
NOTE 备注
10
模块引用量的详细描述


  一个分系统或子系统,可以由一定数量的模块集合而成,若干个分系统,就组合成了一个完
整的仿真对象。所以,PROSIMS系统提供的是一种模块化建模方式,用户可以采用图形或手动两种
方法创建模型。
  在模块描述数据库装载前必须先装载与其对应的算法动态连接库。模块装载时,首先根据所
引用的算法名查找到对应的算法序号,并从算法数据区中取得算法函数指针。将模块引用变量索
引表指针作为参数,调用算法函数,即可实现模块的计算过程。
  以一个二值相与模块ANDMDL为例,它调用的是二值相与算法,假设它所分配的输入、输出变
量分别为序号为100的IN1、序号为200的IN2及序号为300的OUT1,ANDMDL模块在模块数据区的序号
为20,则变量、模块及模块引用变量索引表之间的关系可用图 1表示。
  运算ANDMDL时,将其对应的引用变量索引表指针传递给AND算法,该指针参数所对应的数组元
素数为3,值依次为100、200、300,即引用变量在变量数据区中的序号,AND算法函数根据索引表
指针取变量区中的第100号、200号元素的值相与,并将所与结果存放到变量区中的第300号元素的
存储单元中。


图 1 变量、模块及模块引用变量索引表关系图

4.3变量

  变量在PROSIMS中,均为4字节的浮点数、整数或布尔量。变量有不同的属性,分:输入、输
出、系数、盘台、操作站、就地、超控及外部参数等。每个变量可以有不同的属性组合,如输入+
输出+系数。如果变量属性=0,则表示此变量尚未被系统使用,即为废变量。
  在变量属性中,输入、输出、系数是最重要的三种。一般情况下,输入、输出变量均为变化
量,系数则为相对固定的调节量。对同一个仿真对象而言,输出量只能由一个模块计算产生,并
作为输入量被任意多的模块所引用。如果变量不是由仿真模型计算产生,而是从网络的其它站点
产生,如控制盘台、操作站或就地站等,则需给变量加上对应标志。
  由于32位WINDOWS操作系统具有多达2GB的用户可用的线性内存空间,所以PROSIMS系统可
以处理的变量数可达上百万。一般而言,十万左右的变量对目前几乎所有的系统都已经是绰绰有
余。PROSIMS默认的变量区大小为15万(可通过系统参数设置进行修改)。
  PROSIMS通过广播方式在网络中发送或接收变量数据。每个变化数据用8个字节表示。为提高
数据传输效率,减少不必要的时间浪费,PROSIMS专门使用了一个线程管理数据的发送。在每一个
数据发送周期(系统发送周期可通过系统参数设置修改,默认值为200毫秒),系统检查所有相关数
据标志位(如:输出、操作站、就地、盘台)置位的量,如果其值有变化,则将其打包发送,否
则不发送;另外,在发送完变化数据包后,还按变量数量区顺序发送若干组不变化的数据包,以
防止系统运行过程中挂接的操作站不能正确显示不变化的数据。
  变量描述数据库的数据结构如下表所示:

表 3 变量描述数据库结构

序号
字段名
类型
长度
小数点
注释

1
ID
数字
6
0
变量标识号

2
TAGNAME
字符
14
0
变量名

3
DESC
字符
50
0
变量描述

4
SYS
字符
6
0
变量系统分类

5
UNIT
字符
6
0
变量工程单位

6
FLAG
字符
8
0
变量标志

7
MDLNAME
字符
14
0
使用该变量的输出模块名

8
VALUE
字符
14
0
变量初值

9
HIGH
数字
10
2
变量高限值

10
LOW
数字
10
2
变量低限值



  其中,TAGNAME必须唯一。MDLNAME字段只有在变量有输出标志时有效。
  变量标识号ID是在变量数据库增加时由系统自动填写的具有唯一性的序号值,它的含义是:
对应变量在变量数据标区中的序号。变量数据库是可增删改的,但变量ID一经确定即永远不变
(除非删除对应变量)。
5 结束语

  PROSIMS是一个完整的、面向对象的、具有良好用户界面的高性能的仿真模型和控制系统开发
平台。使用PROSIMS的人员,不需要精通专业知识,就可以图形建模的方式设计出与设计院图纸完
全一致的控制系统,并通过在线调试和自动调试,快捷迅速地调整和改进仿真模型。使用PROSIMS
开发仿真模型或控制系统,周期最短,效率最高,价格最低。

作者简介章晓明,深圳市本鲁克斯仿真控制有限公司系统部主任、工程师。
王扬,深圳市本鲁克斯仿真控制有限公司总工程师,中国系统仿真学会常务理事。
章晓明(深圳市本鲁克斯仿真控制有限公司,深圳 518057) 
王扬(深圳市本鲁克斯仿真控制有限公司,深圳 518057)

参考文献:

1,[美]Martin Heller著.祝远玲 冯玉 译.WIN32高级程序设计.电子工业出版社,1994.
2,[美]Matt Pietrek著. 米东 王森 等译 Windows 95系统编程奥秘.电子工业出版社,1996.

 
分享到: 收藏