1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
3
<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
4
original version by: Nikos Drakos, CBLU, University of Leeds
5
* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
6
* with significant contributions from:
7
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
10
<TITLE>Rate limiter </TITLE>
11
<META NAME="description" CONTENT="Rate limiter ">
12
<META NAME="keywords" CONTENT="main">
13
<META NAME="resource-type" CONTENT="document">
14
<META NAME="distribution" CONTENT="global">
16
<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
17
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19
<LINK REL="STYLESHEET" HREF="main.css">
23
<BODY bgcolor="#FFFFFF">
25
<!--Table of Child-Links-->
26
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
29
<LI><A NAME="tex2html4687"
30
HREF="RATELIMITER.htm#SECTION00577100000000000000">Library</A>
31
<LI><A NAME="tex2html4688"
32
HREF="RATELIMITER.htm#SECTION00577200000000000000">Description</A>
33
<LI><A NAME="tex2html4689"
34
HREF="RATELIMITER.htm#SECTION00577300000000000000">Dialog Box</A>
35
<LI><A NAME="tex2html4690"
36
HREF="RATELIMITER.htm#SECTION00577400000000000000">Default properties</A>
37
<LI><A NAME="tex2html4691"
38
HREF="RATELIMITER.htm#SECTION00577500000000000000">Interfacing function</A>
39
<LI><A NAME="tex2html4692"
40
HREF="RATELIMITER.htm#SECTION00577600000000000000">Computational function (type 4)</A>
42
<!--End of Table of Child-Links-->
45
<H2><A NAME="SECTION00577000000000000000"></A><A NAME="RATELIMITER"></A>
51
$\epsfig{file=RATELIMITER.eps,width=90.00pt}$
54
WIDTH="143" HEIGHT="108" ALIGN="BOTTOM" BORDER="0"
56
ALT="\epsfig{file=RATELIMITER.eps,width=90.00pt}">
58
<H3><font color="blue"><A NAME="SECTION00577100000000000000">
63
<H3><font color="blue"><A NAME="SECTION00577200000000000000">
69
<H3><font color="blue"><A NAME="SECTION00577300000000000000">
73
<TABLE CELLPADDING=3 BORDER="1">
74
<TR><TD ALIGN="CENTER">Set rate limiter parameters</TD>
78
<TR><TD ALIGN="CENTER">max slope</TD>
79
<TD ALIGN="CENTER">1</TD>
81
<TR><TD ALIGN="CENTER">min slope</TD>
82
<TD ALIGN="CENTER">-1</TD>
94
<H3><font color="blue"><A NAME="SECTION00577400000000000000">
95
Default properties</A>
101
<LI>direct-feedthrough: yes
103
<LI>zero-crossing: no
107
<LI>number/sizes of inputs: 1 / 1
109
<LI>number/sizes of outputs: 1 / 1
111
<LI>number/sizes of activation inputs: 0 /
113
<LI>number/sizes of activation outputs: 0 /
115
<LI>continuous-time state: no
117
<LI>discrete-time state: no
119
<LI>name of computational function: <EM>ratelimiter</EM>
122
<H3><font color="blue"><A NAME="SECTION00577500000000000000">
123
Interfacing function</A>
125
<TT>scilab/macros/scicos_blocks/misc/RATELIMITER.sci</TT>
127
<H3><font color="blue"><A NAME="SECTION00577600000000000000">
128
Computational function (type 4)</A>
131
<PRE>#include "scicos_block.h"
132
#include <math.h>
138
void ratelimiter(scicos_block *block,int flag)
139
{/* rpar[0]=rising rate limit, rpar[1]=falling rate limit */
141
if (flag == 4){/* the workspace is used to store previous values */
142
if ((*block->work=
143
scicos_malloc(sizeof(double)*4))== NULL ) {
144
set_block_error(-16);
152
}else if (flag == 5){
153
scicos_free(*block->work);
154
} else if (flag==1) {
155
if (get_phase_simulation()==1) do_cold_restart();
161
rate=(block->inptr[0][0]-pw[1])/(t-pw[0]);
163
else if(t<=pw[2]){
165
rate=(block->inptr[0][0]-pw[1])/(t-pw[0]);
170
if(rate>block->rpar[0]){
171
block->outptr[0][0]=(t-pw[0])*block->rpar[0]+pw[1];
172
} else if(rate<block->rpar[1]){
173
block->outptr[0][0]=(t-pw[0])*block->rpar[1]+pw[1];
175
block->outptr[0][0]=block->inptr[0][0];
178
pw[3]=block->outptr[0][0];