Interfacing function
eng


OpAmp

File content


function [x,y,typ]=OpAmp(job,arg1,arg2)
  x=[];y=[];typ=[]
  select job
   case 'plot' then
    standard_draw(arg1,%f) 
   case 'getinputs' then
    [x,y,typ]=standard_inputs(arg1)
   case 'getoutputs' then
    [x,y,typ]=standard_outputs(arg1)
   case 'getorigin' then
    [x,y]=standard_origin(arg1)
   case 'set' then
    x=arg1;
    graphics=arg1.graphics;exprs=graphics.exprs
    model=arg1.model;
    while %f do
     [ok,OLGain,SatH,SatL,exprs]=getvalue('Set the Operational Amplifier parameters',..
      ['Open Loop Gain';'Positive saturation voltage';'Negative saturation voltage'],..
      list('vec',1,'vec',1,'vec',1),exprs);
    if ~ok then break,end
    model.equations.parameters(2)=list(OLGain,SatH,SatL)
    graphics.exprs=exprs
    x.graphics=graphics;x.model=model
    break
  end
case 'define' then
//  OLGain=1000;
//  SatH=10;
 // SatL=-10;
 // S=['OLGain';'SatH';'SatL'];
 // Z=eval(S);
  S=[];
  Z=[];
  model=scicos_model();
  model.sim='OpAmp';
  model.blocktype='c';
  model.dep_ut=[%t %f];
  mo=modelica();
  mo.model=model.sim;
  mo.inputs=['in_p';'in_n'];
  mo.outputs=['out'];
  mo.parameters=list(S,Z);
  model.equations=mo;
  model.in=ones(size(mo.inputs,'*'),1);
  model.out=ones(size(mo.outputs,'*'),1);
  model.rpar=Z;
  exprs=string(Z);
  gr_i=['';
      'if orient then';
      '  xx=orig(1)+[30,28,08,08,00,08,08,00,08,08,28,28]*(sz(1)/32);';
      '  xstring(orig(1)+10*(sz(1)/32),orig(2)+24*(sz(2)/70),''-'');';
      '  xstring(orig(1)+10*(sz(1)/32),orig(2)+46*(sz(2)/70),''+'');';
    'else';
      '  xx=orig(1)+[02,04,24,24,32,24,24,32,24,24,04,04]*(sz(1)/32);';
      '  xstring(orig(1)+20*(sz(1)/32),orig(2)+24*(sz(2)/70),''-'');';
      '  xstring(orig(1)+20*(sz(1)/32),orig(2)+46*(sz(2)/70),''+'');';
    'end';
    'yy=orig(2)+[35,35,12,24,24,24,48,48,48,60,35,35]*(sz(2)/70);';
    'xpoly(xx,yy);';
    'txt=''OP'';'
    'style=2;'
    'rectstr=stringbox(txt,orig(1)+13*(sz(1)/32),orig(2)+30*(sz(2)/70),0,style,0);'
    'if ~exists(''%zoom'') then %zoom=1, end;'
    'w=(rectstr(1,3)-rectstr(1,2))*%zoom;'
    'h=(rectstr(2,2)-rectstr(2,4))*%zoom;'
    'xstringb(orig(1)+13*(sz(1)/32),orig(2)+30*(sz(2)/70),txt,w,h,''fill'');'
    'e=gce();'
    'e.font_style=style;']
  x=standard_define([2 2],model,exprs,gr_i)
  x.graphics.in_implicit=['I';'I']
  x.graphics.out_implicit=['I']
  end
endfunction
// OpAmp