连续系统仿真语言
连续系统仿真语言
continuous systems simulation language
实现连续系统数字仿真的专用的程序设计语言,简称CSSL语言,是一类重要的仿真软件。它的主要功能是:①源语言的规范化和处理。规定描述模型的符号、语句、句法和语法,检测源程序中的错误,将源程序翻译成机器码。②控制并执行仿真过程。③记录仿真实验的结果并对它进行分析。连续系统仿真语言有两种基本类型:面向框图的语言(即框图语言系统)和面向方程的语言(即方程语言系统)。
框图语言系统 早期的连续系统仿真语言都属于框图语言系统。1955年提出第一个框图式仿真语言──数字模拟仿真语言 DAS。60年代初又提出改进型数字模拟仿真语言MIDAS(见仿真语言)。1967年提出模块式连续系统建模语言Block CSMP(英文Block Continuous System Modeling Program 的缩写)。Block CSMP软件采用FORTRAN语言编写,可在小型计算机上进行交互式数字仿真。用Block CSMP语言编制的仿真程序是一系列框图算子语句,可以通过编译程序整理成过程顺序,进行一次仿真就解释成库程序,能迅速改变仿真模型。Block CSMP的新版本能编译仿真程序的二进制文本,达到双倍执行速度。1969年提出Block CSMP的一种特殊版本MOBSSL,允许用户在图形显示屏幕上用光笔来选择和互连各个框图算子符号。1974年提出交互式仿真语言ISL(英文Inte-ractive Simulation Language的缩写)。ISL语言是一种由机器语言子程序来实现框图算子的简单框图语言系统,所以一些大型仿真题目能在只有8K字节内存的小型计算机上运行。用 ISL语言编制的仿真程序,能迅速改变仿真模型,实现简单的多次运行仿真研究。1977年美国亚利桑那大学研制成微型微分分析器置换语言 MICRODARE(英文 Micro Differential Analyzer Replacement的缩写)。MICRODARE软件是将 DARE语言系统的框图语句翻译成子程序或微程序,固化在只读存储器 (ROM)芯片上成为固件,以插件的形式插在微型计算机的主机箱内。MICRODARE软件还提供用BASIC语言编排的DARE语言系统的逻辑块及输出程序和显示程序,因而可以利用微型计算机的简单的 BASIC语言编译程序进行编译。现在已经可以应用高功能的框图语言系统在微型计算机上实现连续系统数字仿真。
方程语言系统 实现连续系统数字仿真最重要的手段是应用面向方程的语言。方程语言系统可使用户很方便地直接以状态方程的形式描述仿真模型,再通过编译程序自动地翻译成FORTRAN程序,然后进行编译、装入和执行,得出变量的时间历程,通过一些简单的输出命令就能显示、绘图和打印出来。将 FORTRAN语言作为宿主语言,不仅能借用现有的 FORTRAN编译程序,而且还可以使有经验的用户在仿真研究中充分利用 FORTRAN函数和过程。在多次运行仿真研究中可用 FORTRAN控制程序来进行控制。对于没有 FORTRAN语言程序设计知识的用户,也很容易掌握这些高级语言的特点,很快就能学会求解各种微分方程。1959年出现系统动力学建模语言DYNAMO。1967年美国计算机仿真学会总结了面向方程的仿真语言的特点,并加以标准化,提出一种兼有框图表示功能的面向方程的仿真语言──连续系统仿真语言CSSL,成为连续系统仿真语言的规范。此后出现了许多符合CSSL规范的语言。1968年提出连续系统建模语言CSMP。1970年美国亚利桑那大学提出微分分析器置换语言DARE方案。
面向方程的仿真语言主要由四个部分组成:模型定义语言、翻译程序、实用程序库和运行控制程序。一般以文本和软磁盘的方式提供。
模型定义语言 定义模型和仿真实验。其符号、语句、句法和语法规则与连续系统数学模型的原始形式相类似。大多数面向方程的仿真语言的结构符合CSSL规范。其源程序分为三个区段:初始化区、动态区和终止区。动态区的语句为方程形式,用以描述微分方程、差分方程和传递函数等。语句的书写顺序则是任意的。有输出显示语句,其格式可预先规定或由用户指定。有的还有过程段和宏程序块,供用户自编扩充函数或子模型之用。
翻译程度 用模型定义语言书写的源程序通过翻译程序翻译成宿主语言。翻译程序一般采用间接执行式,可以分为三种基本类型:①编译型:先将源程序翻译成宿主语言(一般是通用高级语言,如FORTRAN语言,BASIC语言),再编译成机器码。②解释型:先将源程序翻译成指定的中间代码,再解释成机器码。解释型比编译型交互性好,但执行速度较慢。③混合型:解释和编译相结合。80年代美国亚利桑那大学教授G.A.科恩提出直接执行式。他取消了CSSL型模型定义语言中的分支性语句,将模型和实验的描述分开,再用精心设计的编译程序将模型描述语句快速地直接编译成机器码,其中仿真函数和算法程序都是预先编译的,实验控制语句则通过解释来实现。
实用程序库 通常包括连续系统仿真中的各种算法、专用函数、绘图、制表等各种实用程序。
运行控制程序 一般包括用户交互式控制仿真运行、改变参数、收集显示数据等程序。