シミュレーションの演習のコード

GS7.BGSのコードを以下に示します。このコードは BGSP用です。第1行の

BOND SYMBOL EXPR OUT DEFIN PARM INIT

はコードの一部ですから省略してはいけません。また、BGSPではカラム指定が厳格で1カラムでもずれるとエラーになります。また、許される文字は英数字、コロン(:)、スラッシュ(/)、加減乗算記号(+-*)、半角空白のみであり、制御文字が入るとエラーになります。倍角の空白はエラーを生じますが、ソースをプリントしても気づきにくいので注意が必要です。

GS7のコード

フィードバックのある場合のコード

BOND SYMBOL EXPR OUT DEFIN PARM INIT
SF1    11
ZJ     -11   14    12    19
CI1    14
RE3    12
TF4    19    21
OJ     -21   22    24
II6    24
RE5    22
/
BC: V-P   EF14      PRESSURE IN VALVE
BC: PIS-P DP24      PISTON POSITION
BC: V24   FL24
BC: P13   EF14
BC: FP    FL11
OP: DX    CONTROL AMP
PA: PINPT  1.000D-02       INPUT COMMAND
PA: PGAIN  2.000D+01       AMP GAIN
FB: XXPP   DP24       XDATA
RV: XXPV   AMP OUTPUT
        XXPV=(PINPT-XXPP)*PGAIN
        OP=XXPV
EOD
/
SF1
PA: PFLCON 9.8D+02
RV: XXPV
       F=PFLCON*XXPV
EOD
CI1
PA: PR1    0.351            VOLUME/BULK MODULOUS
      C=Z/PR1
EOD
RE3
PA: PCLR   11.60D-00        RESISTANCE COEFFICIENT
      R=Z/PCLR
EOD
TF4
PA: PL12   1.963D+03        TRANSFORMATION RATIO
      TF=1/PL12
EOD
II6
PA: PMAS   100.0D-00        MASS
      L=Z/PMAS
EOD
RE5
PA: PLR    5.0D03          FRICTION
      R=PLR*Z
EOD
/
0.00              1.0D-00           1.00D-05          4000
/

20-Simによるシミュレーションのコード

Step1
parameters
	real amplitude = 0.01;
	real start_time = 0.0 {s};
variables
	boolean hidden change;
equations
	"calculate at least at the start time"
	change = timeevent (start_time);
	
	"calculate the step signal"
	output = amplitude * step (start_time)

Gain
parameters
	real K = 20;		// gain
equations
	output = K * input;

C2
parameters
	real c = 0.351;
equations
	state = int(p.f);
	p.e = state / c;

R13
parameters
	real r = 5.0e3;
equations
	p.e = r * p.f;

TFA
parameters
	real r = 1.963e3;
equations
	p1.e =  p2.e/r;
	p2.f = p1.f/r;

MSf

variables
	real effort;
equations
	p.f = flow*980.0; 
	effort = p.e;

R3
parameters
	real r = 11.6;
equations
	p.f =  p.e/r

I24
parameters
	real i = 100;
equations
    state = int(p.e);
    p.f = state / i;

Integrate
parameters
	real initial = 0;		// initial value
equations
	output = int (input, initial);