Ticket #3957: PickPlace.2.mo

File PickPlace.2.mo, 5.8 KB (added by Bernhard Thiele, 10 years ago)

Revised version (still buggy)

Line 
1model PickPlace
2 inner Real y(start=10.0);
3 inner Real yd(start=0.0);
4 inner Real x(start=10.0);
5 inner Real xd(start=0.0);
6 inner Boolean inn(start=false);
7 inner Boolean down(start=true);
8 inner Boolean up(start=false);
9 inner Boolean out(start=false);
10 inner Boolean pick(start=false);
11 inner Boolean drop(start=false);
12 inner Integer count(start=1);
13 inner Boolean ON(start=false);
14 inner Boolean OFF(start=false);
15
16 model VerActDyn
17 constant Real m=5.0;
18 constant Real b=1.0;
19 constant Real k=1.0;
20 inner outer output Real y;
21 inner outer output Real yd;
22 inner outer output Integer count;
23 outer input Boolean down;
24 outer input Boolean up;
25 block StandingStill
26 end StandingStill;
27 StandingStill standingstill;
28 block MovingDown
29 outer output Real y;
30 outer output Real yd;
31 outer output Integer count;
32 equation
33 yd=-5;
34 y=previous(y)+yd*0.002;
35 count=previous(count)+1;
36 end MovingDown;
37 MovingDown movingdown;
38 block MovingUp
39 outer output Real y;
40 outer output Real yd;
41 equation
42 yd=+5;
43 y=previous(y)+yd*0.002;
44 end MovingUp;
45 MovingUp movingup;
46 equation
47 initialState(standingstill);
48 transition(standingstill,movingdown,down,immediate=true,priority=1);
49 transition(standingstill,movingup,up,immediate=true,priority=2);
50 transition(movingdown,standingstill,not down,immediate=true);
51 transition(movingup,standingstill,not up,immediate=true);
52 end VerActDyn;
53 VerActDyn veractdyn;
54
55 model HorActDyn
56 constant Real m=5.0;
57 constant Real b=1.0;
58 constant Real k=1.0;
59 inner outer output Real x;
60 inner outer output Real xd;
61 outer input Boolean inn;
62 outer input Boolean out;
63 block StandingStill
64 end StandingStill;
65 StandingStill standingstill;
66 block MovingOut
67 outer output Real x;
68 outer output Real xd;
69 equation
70 xd=+5;
71 x=previous(x)+xd*0.002;
72 end MovingOut;
73 MovingOut movingout;
74 block MovingIn
75 outer output Real x;
76 outer output Real xd;
77 equation
78 xd=-5;
79 x=previous(x)+xd*0.002;
80 end MovingIn;
81 MovingIn movingin;
82 equation
83 initialState(standingstill);
84 transition(standingstill,movingout,out,immediate=true,priority=1);
85 transition(standingstill,movingin,inn,immediate=true,priority=2);
86 transition(movingout,standingstill,not out,immediate=true);
87 transition(movingin,standingstill,not inn,immediate=true);
88 end HorActDyn;
89 HorActDyn horactdyn;
90
91 model SensorVup
92 constant Real ymax=10.0;
93 inner outer output Boolean up;
94 inner outer output Boolean out;
95 inner outer output Boolean inn;
96 inner outer input Integer count;
97 outer input Real y;
98 block On
99 Integer res;
100 outer input Integer count;
101 outer output Boolean out;
102 outer output Boolean inn;
103 outer output Boolean up;
104 equation
105 res=rem(count,2);
106 out=res>0;
107 inn=res<1;
108 up=false;
109 end On;
110 On on;
111 block Off
112 end Off;
113 Off off;
114 equation
115 initialState(on);
116 transition(on,off,y<ymax,immediate=true);
117 transition(off,on,y>=ymax,immediate=true);
118 end SensorVup;
119 SensorVup sensorvup;
120
121 model SensorVdown
122 constant Real ymin=0.0;
123 inner outer output Boolean down;
124 inner outer output Boolean drop;
125 inner outer output Boolean pick;
126 inner outer input Integer count;
127 outer input Real y;
128 block On
129 Integer res;
130 outer output Boolean down;
131 outer output Boolean drop;
132 outer output Boolean pick;
133 outer input Integer count;
134 equation
135 res=rem(count,2);
136 pick=res>0;
137 drop=res<1;
138 down=false;
139 end On;
140 On on;
141 block Off
142 end Off;
143 Off off;
144 equation
145 initialState(off);
146 transition(off,on,y<=ymin,immediate=true);
147 transition(on,off,y>ymin,immediate=true);
148 end SensorVdown;
149 SensorVdown sensorvdown;
150
151 model SensorHout
152 constant Real xmax=10.0;
153 inner outer output Boolean down;
154 inner outer output Boolean out;
155 outer input Real x;
156 block On
157 outer output Boolean down;
158 outer output Boolean out;
159 equation
160 out=false;
161 down=true;
162 end On;
163 On on;
164 block Off
165 end Off;
166 Off off;
167 equation
168 initialState(off);
169 transition(off,on,x>=xmax,immediate=true);
170 transition(on,off,x<xmax,immediate=true);
171 end SensorHout;
172 SensorHout sensorhout;
173
174 model SensorHin
175 constant Real xmin=0.0;
176 inner outer output Boolean inn;
177 inner outer output Boolean down;
178 outer input Real x;
179 block On
180 outer output Boolean inn;
181 outer output Boolean down;
182 equation
183 inn=false;
184 down=true;
185 end On;
186 On on;
187 block Off
188 end Off;
189 Off off;
190 equation
191 initialState(on);
192 transition(on,off,x>xmin,immediate=true);
193 transition(off,on,x<=xmin,immediate=true);
194 end SensorHin;
195 SensorHin sensorhin;
196
197 model Picker
198 inner outer output Boolean OFF;
199 inner outer output Boolean ON;
200 outer input Boolean pick;
201 outer input Boolean drop;
202 block Open
203 outer output Boolean OFF;
204 equation
205 OFF=true;
206 end Open;
207 Open open;
208 block Closed
209 outer output Boolean ON;
210 equation
211 ON=true;
212 end Closed;
213 Closed closed;
214 equation
215 initialState(open);
216 transition(open,closed,pick,immediate=true);
217 transition(closed,open,drop,immediate=true);
218 end Picker;
219 Picker picker;
220
221 model SensorPicker
222 outer input Boolean OFF;
223 outer input Boolean ON;
224 inner outer output Boolean up;
225 block Off
226 outer output Boolean up;
227 equation
228 up=true;
229 end Off;
230 Off off;
231 block On
232 outer output Boolean up;
233 equation
234 up=true;
235 end On;
236 On on;
237 equation
238 initialState(off);
239 transition(off,on,ON,immediate=true);
240 transition(on,off,OFF,immediate=true);
241 end SensorPicker;
242 SensorPicker sensorpicker;
243
244end PickPlace;