→童 続 系 シ ミ ュ レ ー シ ョ ン 言 語
松 坂 知行 *
Continuous System Simulation Language
Tomoyuki MATSUZAKA
Abstr act
Continuous system simulation languages such as CSPL or CSSL are implemented on large― scale computers, but not on small scale― oReS.
However,rapid development of micro computers or personal computers has enabled us to realize such languages on small computers. HeRCe, the author has developed a new simulation language DECS(Differential Equation based Contunuous system Simulation program) which can be
implelnent ed oR ROt ORly personal co:nputers ,but also large― scale macines. Thus,the users can select computers properly,depending on problem scales,and save computation cost. This paper describes the constitution and application of the language.
1。 ま えが き
近年 、 システ ムの分析 ・ 設 計段 階 にお け る シ ミュ レー シ ョン技術 の普 及 は 目を見 張 る ものが あ る。計算機 のハ ー ドウエア、 ソフ トウエアの発展 と相 ま っ て理・ 工学分野 のみな らず社会科 学 の分野 に まで利用 範 囲が拡 って い る。 こ れ は システ ムが大規模 、複雑化 してい く中で設計段階 での事前 分析・ 評 価 が 重要 な作業 とな り、分析 ・評価 に精密 化 が要 求 され る一方 、 これ に応 え る計 算手段 、計 算技 法 が発達 し、言 わ ば需 要 と供 給 の相乗 効 果 で シ ミュ レー シ ョ
ン技術 の利 用範 囲が広 が って い る もの と思 わ れ る 1)。
シ ミュ レー シ ョンとい う言葉 は、 1940年 代 の後半 にVon NeumanRと Ulamが 確率 的試行 の問題 を モ ンテカル ロ法 を用 いて解 いた こ とに起因 して いる と言
昭和 63年 12月 15日 受理
* 電 気工 学科 ・ 情 報 システ ムエ 学研 究所教 授
わ れ て お り、 い まで も シ ミュ レー シ ョ ン と言 え ば モ ンテ カル ロ法 を指 す ほ ど で あ る。 モ ンテ カ ル ロ法 は主 と して待 ち行 列 な どの確 率 現象 の分 析 に用 い ら れ て きた。
これ に対 して シ ミュ レー シ ョン とい う用 語 が適用 され て きた分 野 に工学 現 象 が あ る。 工 学 現 象 は基 本 的 に は連 立 常 微分 方 程 式 で システ ムが表 現 され 、 デ ィ ジタ ル 計算 機 が普 及 す る前 は 、 そ の求 解 に アナ ログ計 算 機 が も っぱ ら利 用 され て きた。 ア ナ ロ グ計 算 機 は原 理 的 に は 、時 間 的 、 空 間 的 な並 列 演 算 器 で あ り、初 期 の デ ィ ジタル計 算 機 よ り達 か に高 速 な求解 が可能 で あ ったが 、 非 線 形 演 算 や複 雑 な論 理 判 断 、計 算 精 度 、 ス ケ ー リング な どの 問題 が あ り、
デ ィ ジタ ル計 算 機 の普 及 に よ りあ ま り利 用 され な くな って きた 。
一 方 デ ィ ジタ ル計算 機 は ア ナ ロ グ計 算 機 の この よ うな欠 点 を カバ ー して い るが 、 FORTRANな どの よ うな汎 用 言 語 で プ ロ グ ラ ミングを行 な うと、 パ ッチ ボ ー ド上 で 積分 器 や加 算器 を物 理 的 に接 続 す るアナ ログ計算機 の プ ログ ラ ミ ング に比 較 して プ ログ ラ ミングが 非 常 に面倒 で あ る。 そ こで この よ うな アナ ログ計 算 機 の利 点 を生 か し、 か つ 欠 点 を デ ィ ジタル計算 機 で カバ ーす るとい うハ イ ブ リ ッ ト計 算 機 が考 案 され たが 、値 段 が高 い こと とソ フ トゥェ ァが 十 分 に整 備 され なか った た め、 普 及 され る に至 らなか った 。
そ こで汎 用 デ ィ ジタ ル計 算 機 を用 いて アナ ログ計 算 機 な み の容 易 さで プ ロ グ ラ ミングが行 な え な いか ど うか の検 討 が は じま り、専 用 シ ミュ レー シ ョン 言 語 が 開 発 され る よ うに な った。
2.連 続 系 シ ミュ レー シ ョン言 語 2)
1955年 Self五 dgeが デ ィジタル計算機 によるアナ ログ計算 の シ ミュ レータ、
す なわ ちデ ィジタル・ アナ ログ シ ミュ レータ (DAS)を 開発 して以 来、種 々の 連続系 シ ミュ レータ (連 続 系 シ ミュ レー シ ョン言語 の通 称 )が 開発 されて き た。 それ らを ま とめ る と
(a)ブ ロ ック向 き言 語 (block oriented) DAS
MIDAS PACTOLUS CSMP/1130
(b)方 程 式 向 き言 語 (equation Oriented) MIMIC
DSL/90
CSSL
CSMP/360
な どで あ る。
連 続 系 シ ミュ レー シ ョ ンで重 要 な ポ イ ン トは 2点 で あ る。 一 つ は動 特 性 記 述 部 分 の処 理 順 番 を決 め る ソ ー テ ィ ング、 も う一 つ は積 分 方 式 で あ る。 1964 年 に開 発 され た MIDASは この二 つ も機 能 を備 え た 点 で 画 期 的 な シ ミュ レー タ で あ った 。 さ らに そ の 後 MIDASの 改 良 版 PACTOLUSが IBMの R.D.Brennanに よ り 開 発 され た 。 ア ナ ロ グ計 算 機 で行 な わ れ る シ ミュ レー シ ョ ンで は、 動 特 性 を
目で追 い な が ら、 モ デ ル の制 御 が 実 行 で き る が 、 PACTOLUSは この点 で連 続 系 シ ミュ レー シ ョ ン言 語 の労 作 で あ る。
以 上 の言 語 は ア ナ ロ グ演 算 で用 い られ て い る ブ ロ ック・ モ デ リン グを基 に して い るが 、 1960年 代 の後 半 か ら従 来 の ア ナ ロ グ的 な ブ ロ ック・ モ デ リン グ の他 に デ ジタル プ ログ ラ ミングの機 能 を附加 す る こ との重 要性 が認 識 され始 め、 1965年 IBMの Syn,Wyn■ に よ り DSL/90が 開 発 され 、 この 機 能 を備 え た FORTRA Nベ ー ス の 第 一 号 の シ ミ ュ レ ー タ で あ っ た 。 MIMIC、 CSSL、 CSMP/360は 同 様 な 考 え方 で 開 発 され た もので あ る。
以 上 述 べ た連 続 系 シ ミュ レー シ ョン言 語 は大 型 計 算 機 を ベ ー ス に して開 発 され た もの で あ るが 、 1980年 代 に入 リマ ンマ シー ン・ イ ンタ ー フ ェ ー スの優 れ た 16ビ ッ トの パ ー ソナ ル コ ン ピュ ー タが登 場 しは じめ 、 パ ー ソナ ル コ ン ピュ ー タベ ー ス のMCSP3)‑6、 ACSLな ど の連 続 系 シ ミュ レー シ ョ ン言 語 が 開 発 され た 。
筆 者 は今 回 DECS(Differential Equation based Continuous system Simul ator)と 呼 ば れ る新 しい 連 続 系 シ ミュ レ ー シ ョ ン言 語 を 開 発 し、 い くつ か の 改 良 を お こ な った の で 報 告 す る。
3.ソ フ トウエ ア構 成 7)9)
DECSは FORTRANに よ り記 述 さ れ て い る 。 本 言 語 の 開 発 に 用 い た FO RTRANは PROFESS10NAL FORTRANで あ る 。 F77完 全 準 拠 で あ れ ば こ れ 以 外 の FORTRANで も
よ い 。 つ ぎ に ソ フ トウ エ ア の 構 成 に つ い て 述 べ る 。
3 .1 ソ フ トウエア構成
DECSの ソ ー スプ ログ ラムは ,基 本 的 に次 の 6つ の文 よ り成 る。
a)制 御 文
プ ロ グ ラムの流 れを制御す る文 で 、 ">"で 始 ま る。
b)初 期 値 設定 文
状 態 変数 の初期 値 を設 定 す る文 で 、 これ を省 略 した時 は初期 値 を零 と 見 なす 。
c)定 数 設定文
シス テム記述部 に出て くる変数 の値 を設定す る文 であ る。
d)配 列 宣言文
シス テム記述部 に出て くる配列 を宣言 す る文 であ る。
e)シ ス テ ム 記 述 文
シス テムを表 わ す連立常微 分方程式 を記述す る文 であ る。
シス テム記 述文 の中 には後 述す る シス テムマ クロ関数、FORTRAN命 令 文 を記述 す る こ とがで きる。
f)サ ブ ル ーテ ン文
FORTRANの SUBRoUTINE文 を記 述す る文 で ある。
つ ぎに制 御文 の説 明 を行 な う。
3.1。 1 制御 文
(1)タ イ トル文 (〉 TITLE)
CRT画 面 の最上段 や プ リンタの最初 の行 にTITLEを 表示す る。
(2)パ ラメー タ文 (〉 PARAM文 )
各 シ ミュ レー シ ョン実行時 のパ ラメー タを設定 す る。
(3)時 間制御 文 (〉 TIMER)
演算 時間刻 み、最終 時 間、 スキ ップ間隔、横 スク ロール時間 を制御 す る。 横方 向 にス クロールが可能 なため過度状態 か ら定常状態 まで長 い 現象 を観察 で きる。
(4)ス ケ ール文 (〉 SCALE)
縦軸 の フル スケ ール、 目盛 りの種 類 (均 等 、対数 )を 設 定 す る。
(5)出 力制御文 (〉 PRINT)
出力 形式 ,出 力 機器 ,出 力 す べ き変数 を指定 す る。 出力機器 と して は CRT画 面 、 プ リンタ、 プ ロ ッタ、デ ィスクな どで、出力形式 はグラフ、
数値 で あ る。
(6)入 力制御文 (〉 INPUT)
デ ィスクフ ァィルを読 み出 す制御文で ある。 これ によ りあ らか じめ作 成 して いた実 デ ータ (例 え ば ラ ンダム信号 ,外 部 デ ータ な ど )を シス
テムに取 り込 みなが らシ ミュ レー ションが可能で、よ り現実的な シ ミュ レー シ ョンが可能 にな る。
これ らの制御文 の具 体 的な記述 方法 は応用 例 を通 して説明す る。
3。 1.2 初期 値設 定文
状態変 数 の初期値 を設 定す る文 で次 の様式 で記述 され る。
*INITCON
Xl=Cl
X2=C2
Xn=Cn
*END
ここで Xl、 2・ Xnは 状態 変数 で Cl,C2 ・ Cれ は初 期値 で あ る。
3.1。 3 定 数 設 定 文
シス テ ム記 述 文 に使 用 され る変 数 の値 を記述 す る文 で あ る。
*CONSTANTS
V土 =tl V2 t2
Vnit n
*END
ここで Vl、 2・ Vnは 変数 で tl,t2 ◆ tnは 定数 で あ る。
3.1.4 配 列 宣 言 文
シ ス テ ム記 述 文 に使 用 さ れ る配 列 を 記 述 す る文 で あ る 。
*ARRAY
DIMENS10N Al(10),A2(100)
COMMON Bl(10),C1/B2(100),B3(10)/
*END
3。 1.5 システム記 述文
システ ムの ダイ ナ ミック スを記述 す る文 であ る。 システムの挙 動 は一般 に次 の よ うな二 つの方程式 に よ って記 述 で きる。
d″ /dt=デ (″ ,v, ど ) (1) y=g(″ ,を と , ど ) (2)
こ こで ″、 v、 yは そ れ ぞ れ状 態 ベ ク トル、 入 カ ベ ク トル 、 出 カ ベ ク トルで あ る。 上 式 が線 形 の場 合 は状 態 遷 移 行 列 を計 算 す る こ とに よ り状 態 ベ ク トル 、 出 カ ベ ク トル を求 め る こ とが で きるが 、非 線 形 の場 合 は この方 法 は使 え な い。
DECSで は線 形 、 非 線 形 い づ れ の シ ステ ム に も適 用 で き る よ うに 四次 RUNGE―
KUTTA法 を 用 い て い る。
シ ス テ ム 記 述 文 は
*DYNAMICS
DOT(Xl)=Fl(Xl,X2,X3, ・・° Xn,U,T) DOT(X2)=F2(Xl,X2,X3,° ・・ Xn,U,T)
DOT(Xn)=Fn(Xl,X2,X3,… ・ Xn,U,T)
*END
の よ う に記 述 され る。
な お シ ス テ ム記 述 文 の 中 で は シ ス テ ム マ ク ロ関 数 と FORTRAN命 令 文 を 記 述 す る こ とが で き る。
DECSの も って い る関数 と記述 形 式 を表 1か ら表 4に 示 す 。 これ らの関数 は
,a)信 号 発 生 関 数 RAMP ラ ンプ 関数
STEP ス テ ップ関数 SINE 正 弦 波 関 数 RANF 正 規 乱 数 発 生 関数
b)論 理 関 数
NOT 否 定
AND 論 理 積 OR 論 理 和 C)ス イ ッチ ン グ関 数
FCNSV 関 数 スイ ッチ INSW 入 カ スイ ッチ
d)非 線 形 関 数
LIMIT リ ミッタ
DEADSP 不 感 帯
HSTRSS ヒステ リシス
FITTER 折 れ線 関 数
な どで あ る。
3.1.6 サ ブ ル ー チ ン文
サ ブ ル ー チ ンを記 述 す る文 で 、 FORTRANの サ ブ ル ー チ ン文 と同 じで あ る。 な
お サ ブ ル ー チ ン文 で は システ ム記 述 文 で用 い られて い るマ ク ロ関数 は使用 で
きな い。 従 来 の システ ムで はサ ブ ル ーテ ン文 を シス テ ム記述 文 の中 に記述 し
た が 、 マ ク ロ関数 を使 用 で きな い た め、混 同 を避 け るた め独立 の ブ ロ ック と
した 。
*SUBROUT INE
SUBROUTINE SUBl(Al) DIMENS10N Al(10)
COMMON Bl(10),C1/B2(100),B3(10)/
RETURN END
*END
4.ハ ー ド ウ エ ア
DECSを 実 行 させ るに はFORTRANの 走 るハ ー ドウエ アな らパ ー ソナル・ コ ン ピュー タで も大型 機 で もよい。現 在 まで に実績 のあ る もの は PC‑9801(数 値 演算 プ ロセ ッサ ー付 き )、 ワー ク ステ ー シ ョ ン NEWS、 大 型計 算 機ACOSS2000 で あ る。
5。 翻訳 と実行
3.の ル ー ル に した が つて 書 い た ソ ー ス プ ロ グ ラ ム は DECSに よ り FORTRAN プ ロ グ ラ ム に変 換 さ れ る。 す な わ ち DECSは 実 行 形 式 の FORTRANプ ロ グ ラ ム を 生 成 す る た め の プ リプ ロセ ッサ ー と して 働 く。 した が っ て 全 体 の実 行 時 間 は FORTRANプ ロ グ ラ ム ヘ の 変 換 時 間 と生 成 きれ た FORTRANプ ロ グ ラ ム の 実 行 時 間 との 和 に な る。 DECSの 文 法 と生 成 され た FORTRANプ ロ グ ラ ム に 誤 りが な け れ ば 直 ち に実 行 され るが ,ソ ー ス プ ロ グ ラ ム に 文 法 誤 りが あ る時 は ソ ー ス プ ロ グ ラ ム が 自 動 的 に 呼 出 され る の で 訂 正 後 再 度 DECSを 起 動 す る。 実 行 形 式 の F0 RTRANプ ロ グ ラ ム 自体 に誤 りが あ る時 は FORTRANコ ンパ イ ラの エ ラ ー メ ッセ ー
ジに よ り誤 りを訂 正 す る。
6。 応 用 例
以 下 具 体 的 な応 用 例 を通 して ソ ー スプ ログ ラムの書 き方 、実 行 結 果 、方 法 、 を述 べ る。
図 1の よ うなパ ラメ トリック励 磁 回路 を シ ミュ レー シ ョン して み た。文 献
(7)よ り この回路 の微分方 程式 は (3)式 の よ うに与 え られ る。
〜
ど lsin2ω ど 父 0
島 LO
庁
φ
2φ】
I I
! 宅
C
20‑― ●い
Lュ
ι
:一
‑ 22
RI 牟
︱
・ 竹 R
図 1 パ ラ メ トリ ック回路
3,0 2.5 2.0 1.5 1.0 0.5 0.0
‑0 5
‑1 0
‑1.5
‑2 0
‑2.5
‑3 0
く ( :Parametric ciFCuiti >> P= 1
図 2 パ ラメ トリッック回路 の応答
da/dt+kl((a2+3b2)a 8uO)/8=Bsin2t
d2b/dt2+k2db/dt+(3a2+b2)b/8=0 (3)
(4)
ン で ソ ﹂ C
xl=a x2=b x3=db/dt
Kl=
K2=
B=
│
│ )
とお い て ソ ー ス プ ロ グ ラ ムを作 成 す る と、
1: C 2: C
3:
4:
5 :
6:
7 :
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
REM PARAMETRIC EXCITAT10N
〉 TITLE ['Parametric Circuit']
〉 TIMER [150,.02]
〉 PRINT [D:Xl,X2]
*CONSTANTS
UO=.8
*END
*INITCON Xl=.5
X2=― .5
*END
*DYNAMICS
DOT(Xl)=B*SIN(2*T IME)―Kl*((Xl**2+3*X2**2)*Xl‑8*UO)/8 DOT(X2)=X3
DOT(X3)=― K2*X3‑(3*Xl**2+X2**2)*X2/8
*END
とな る。 リス トの内容 は下記 の通 りで あ る。
2: タ イ トル文
3: タ イマ ー文 で 、終 値 時 間 150、 演算 刻 み 0.02
生 出 力制 御文 で デ ィス クに フ ァイル名 Xl.0、 X2.0で 出力 5:〜 10:定 数設 定文
11:〜 14:初 期値 設定 文
15:〜 19:シ ステ ム記述文 で、 (3)の 微分方 程式 を (4)の 状 態方 程 式 に直
Y=RANF(Pl,P2) Y=SINE(Pl,P2,P3) Y=STEP(X)
Y=RAMP(X) DECS記 述
表 1 信 号 発 生 関 数 関 数
RAMP
STEP
SINE RANF
関 数
NOT
AND
OR
関 数
FCNSW
INSW
Y=0, Y=t― X,
数 式 記 述
t〈 X t≧ X
表 2 論 理 関 数
表 3 ス イ ッ チ 関 数
Y =0 t〈 X
Y=1 t≧ X
Y=0, t〈 Pl
Y=SIN(P2(t― Pl)十 P3),t≧ Pl Pl:平 均 値
P2:標 準 偏 差
数 式 記 述 X≦ 0 X〉 0
Y=1,Xl〉 O and X2〉 0
Y=0,:上 記 以 外 の 時
Y=0,Xlこ ≦ O and X2≦ 0
Y=1,I上 記 以 外 の 時
数 式 記 述
Y Y