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

BGSA6のコードを以下に示します。このコードは20-Sim用です。

BGSA6のコード


I
parameters
	real global i =1.0;
variables
		real global vv;
equations
   
    state = int(p.e,0);
    p.f = state / i;

Integrate
parameters
	real initial = 0;	// initial value
variables
		real global ss;
		
equations
	out = int (input, initial);
	ss=out;
MSe
variables
	real flow;

equations
	p.e = output;
	flow = p.f;
	F1=p.e;
R
parameters
	real dv=1e-3;
	real fstick=100.0;
	real fslip=75.0;
	real astrick=0.001;
	real dvel=10.0;//Stribeck Constant
	real global i;
	
variables
	real sw;
	real global ss;
	real fsl;
	real fst;
	
	
equations
	sw=if abs(p.f) <= dv then
		1
		else
			0.0
			end;
	p.e=if abs(p.f) >= dv then 
	(fslip+(fstick-fslip)*exp(-3*abs(p.f)/dvel))*sign(p.f)
        else
	fst
	end;
      fst=if abs(F1) >= fstick then
	sw*fstick*sign(F1)
	else
		F1*sw
		end;
	ACC=(F1-p.e)/i;

Ramp
parameters
	real slope = 2.5 {1/s};
	real start_time = 0.0 {s};
	real start_position=100.0;
variables
	boolean hidden change;
equations
	"calculate at least at the start time"
	change = timeevent (start_time);

	"calculate the ramp signal"
	out= slope * ramp (start_time)+start_position;
     
Signal Monitor
variables
	real interesting plot;
equations
	plot = ACC;
   

Sine
parameters
	real omega = 0.6292{rad/s};		// angular frequency of the wave
variables
	boolean hidden change;
	real hidden half;
equations
	"calculate at least 2 points per cycle to get a triangle"
	half = pi / omega;
	change = frequencyevent (half, half / 2);

	"calculate the sine wave"
	output= port1* sin ( omega * time);