1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
|
/* autogenerated from "macros/Linear/DELAY_f.sci" */
function DELAY_f() {
DELAY_f.prototype.define = function DELAY_f() {
evtdly = EVTDLY_f("define");
evtdly.graphics.orig = [243,296];
evtdly.graphics.sz = [40,40];
evtdly.graphics.flip = true;
evtdly.graphics.exprs = [["0.1"],["0"]];
evtdly.graphics.pein = 10;
evtdly.graphics.peout = 7;
evtdly.model.rpar = 0.1;
evtdly.model.firing = 0;
register = REGISTER_f("define");
register.graphics.orig = [238,195];
register.graphics.sz = [50,50];
register.graphics.flip = true;
register.graphics.exprs = "0;0;0;0;0;0;0;0;0;0";
register.graphics.pin = 6;
register.graphics.pout = 5;
register.graphics.pein = 9;
input_port = IN_f("define");
input_port.graphics.orig = [92,210];
input_port.graphics.sz = [20,20];
input_port.graphics.flip = true;
input_port.graphics.exprs = [["1"],["1"]];
input_port.graphics.pout = 6;
input_port.model.ipar = 1;
output_port = OUT_f("define");
output_port.graphics.orig = [440,210];
output_port.graphics.sz = [20,20];
output_port.graphics.flip = true;
output_port.graphics.exprs = [["1"],["1"]];
output_port.graphics.pin = 5;
output_port.model.ipar = 1;
split = CLKSPLIT_f("define");
split.graphics.orig = [[263],[271.2]];
split.graphics.pein = 7;
split.graphics.peout = [[9],[10]];
diagram = scicos_diagram();
diagram.objs[1-1] = input_port;
diagram.objs[2-1] = output_port;
diagram.objs[3-1] = register;
diagram.objs[4-1] = evtdly;
diagram.objs[5-1] = scicos_link(xx=[[296.6],[440]],yy=[[220],[220]],from=[3,1],to=[2,1]);
diagram.objs[6-1] = scicos_link(xx=[[112],[229.4]],yy=[[220],[220]],from=[1,1],to=[3,1]);
diagram.objs[7-1] = scicos_link(xx=[[263],[263]],yy=[[290.3],[271.2]],ct=[5,-1],from=[4,1],to=[8,1]);
diagram.objs[8-1] = split;
diagram.objs[9-1] = scicos_link(xx=[[263],[263]],yy=[[271.2],[250.7]],ct=[5,-1],from=[8,1],to=[3,1]);
diagram.objs[10-1] = scicos_link(xx=[[263],[308.6],[308.6],[263],[263]],yy=[[271.2],[271.2],[367],[367],[341.7]],ct=[5,-1],from=[8,2],to=[4,1]);
x = scicos_block();
x.gui = "DELAY_f";
x.graphics.sz = [2,2];
x.graphics.gr_i = [];
x.graphics.pin = 0;
x.graphics.pout = 0;
x.model.sim = "csuper";
x.model.in1 = 1;
x.model.out = 1;
x.model.blocktype = "h";
x.model.dep_ut = [false,false];
x.model.rpar = diagram;
x.graphics.in_implicit = ["E"];
x.graphics.in_style = "";
x.graphics.out_implicit = ["E"];
x.graphics.out_style = "";
}
DELAY_f.prototype.details = function DELAY_f() {
}
DELAY_f.prototype.get = function DELAY_f() {
}
DELAY_f.prototype.set = function DELAY_f() {
ppath = list(0,0);
for (i=1;i<=length(arg1.model.rpar.objs);i+=1) {
o = arg1.model.rpar.objs[i-1];
if (typeof(o)=="Block"&&o.gui=="REGISTER_f") {
ppath[1-1] = i;
}
if (typeof(o)=="Block"&&o.gui=="EVTDLY_f") {
ppath[2-1] = i;
}
if (and(ppath!=list(0,0))) {
break;
}
}
x = arg1;
newpar = list();
register = x.model.rpar.objs[ppath[1-1]-1];
evtdly = x.model.rpar.objs[ppath[2-1]-1];
register_exprs = register.graphics.exprs;
evtdly_exprs = evtdly.graphics.exprs;
exprs = [[evtdly_exprs[1-1]],[register_exprs]];
while (true) {
[ok,dt,z0,exprs] = scicos_getvalue([["This block implements as a discretized delay"],["it is consist of a shift register and a clock"],["value of the delay is given by;","the discretization time step multiplied by the"],["number-1 of state of the register"]],[["Discretization time step"],["Register initial state"]],list("vec",1,"vec",-1),exprs);
if (!ok) {
break;
}
mess = [];
if (prod(size(z0))<1) {
mess = [[mess],["Register length must be at least 1"],[" "]];
ok = false;
}
if (dt<=0) {
mess = [[mess],["Discretization time step must be positive"],[" "]];
ok = false;
}
if (!ok) {
message(mess);
} else {
evtdly.graphics.exprs[1-1] = exprs[1-1];
if (evtdly.model.rpar!=dt) {
evtdly.model.rpar = dt;
newpar[$+1-1] = ppath[2-1];
}
x.model.rpar.objs[ppath[2-1]-1] = evtdly;
register.graphics.exprs = exprs[2-1];
if (or(register.model.dstate!=z0.slice())) {
register.model.dstate = z0.slice();
newpar[$+1-1] = ppath[1-1];
}
x.model.rpar.objs[ppath[1-1]-1] = register;
break;
}
}
needcompile = 0;
y = needcompile;
typ = newpar;
}
}
|