| 1 | model 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 |
|
|---|
| 244 | end PickPlace;
|
|---|