连续系统仿真语言(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型模型定义语言中的分支性语句,将模型和实验的描述分开,再用精心设计的
编译程序将模型描述语句快速地直接编译成
机器码,其中仿真函数和算法程序都是预先编译的,实验
控制语句则通过解释来实现。