#include "scicos_block4.h" #include <math.h> void deadband(scicos_block *block,int flag) {/* rpar[0]:upper limit, rpar[1]:lower limit */ double *_rpar=GetRparPtrs(block); int _ng=GetNg(block); double *_g=GetGPtrs(block); int *_mode=GetModePtrs(block); double *_u1=GetRealInPortPtrs(block,1); double *_y1=GetRealOutPortPtrs(block,1); switch(flag) { /*----------------------------*/ case 1: if ( !areModesFixed(block) ||_ng==0 ){ if (_u1[0]>=_rpar[0]){ _y1[0]=_u1[0]-_rpar[0]; }else if (_u1[0]<=_rpar[1]){ _y1[0]=_u1[0]-_rpar[1]; }else { _y1[0]=0.0; } }else{ if (_mode[0]==1){ _y1[0]=_u1[0]-_rpar[0]; }else if(_mode[0]==2) { _y1[0]=_u1[0]-_rpar[1]; }else{ _y1[0]=0.0; } } break; /*----------------------------*/ case 9: _g[0]=_u1[0]-(_rpar[0]); _g[1]=_u1[0]-(_rpar[1]); if (!areModesFixed(block)) { if (_g[0]>=0){ _mode[0]=1; }else if (_g[1]<=0){ _mode[0]=2; }else { _mode[0]=3; } } break; /*----------------------------*/ default: break; } }