シミュレーションの演習のコード
GS17のコードを以下に示します。GS17はBGSPによるシミュレーションは困難です。代数ループが必然的に生じ、回避のためには遅延素子が必要なのにBGSPにはないからです。従って、ここに示すソースコードとは20-Simにおける各要素の式です。20-Simでは式は自動的に入力されますが、必ずしも正しいとは言えないので十分点検する必要があります。ここでは表の値も示しました。便宜上表はc:\usr\data*.txtにあるとしましたが、任意です。
方法1と方法2に分けて記述します。table1とtable2は方法1、2に共通です。
GS17のコード
方法1のコード
C
parameters
real c = 1;
equations
state = int(p.f);
p.e = state / c;
I
parameters
real i = 1;
string f1='c:\usr\data1.txt';
string f2='c:\usr\data2.txt';
equations
state = int(p.e);
if p.e >0 then
p.f =table(f2,state) / i;
else
p.f=table(f1,state)/i;
end;
R
parameters
real r = 0.0;
equations
p.e = r * p.f;
Se
parameters
real effort = 1.5;
variables
real flow;
equations
p.e = effort;
flow = p.f;
data1.txt
-1.00000 -1.20000
-0.98000 -1.00000
-0.93000 -0.90000
-0.86000 -0.80000
-0.77000 -0.70000
-0.53000 -0.50000
-0.40000 -0.40000
0.150000 0.00000
0.670000 0.40000
0.810000 0.50000
0.930000 0.70000
0.980000 0.80000
0.990000 0.90000
1.000000 1.00000
1.020000 1.20000
data2.txt
-1.02000 -1.20000
-1.00000 -1.00000
-0.99000 -0.90000
-0.98000 -0.80000
-0.93000 -0.70000
-0.81000 -0.50000
-0.67000 -0.40000
-0.150000 0.00000
0.400000 0.40000
0.530000 0.50000
0.770000 0.70000
0.860000 0.80000
0.930000 0.90000
0.980000 1.00000
1.000000 1.20000
Runge-Kutta4
Step Size 0.01
Algebraic Relations Solver 1e-7
方法2のコード
C
parameters
real c = 1;
equations
state = int(p.f);
p.e = state / c;
I
parameters
real i = 1;
equations
state = int(p.e);
p.f =port1 / i;
R
parameters
real r = 0.0;
equations
p.e = r * p.f;
Se
parameters
real effort = 1.5;
variables
real flow;
equations
p.e = effort;
flow = p.f;
Delay
parameters
real delay = 1.0e-3 {s}; // time delay (s)
real initial = 0; // initial value
variables
real delayOutput;
equations
delayOutput = tdelay (input,delay);
if (time <= delay) then
output = initial;
else
output = delayOutput;
end;
Switch
equations
output = if condition >= 0.0 then
input_high
else
if condition < 0.0 then
input_low
else
0.0
end
end;
Table
parameters
string f2='c:\usr\data2.txt';
equations
output = table (f2, input);
Table1
parameters
string f1='c:\usr\data1.txt';
equations
output = table (f1, input);
