Arbeiten mit Storage und Release-Gate
- Modellierung einer Fabrik:
- vereinfacht nach Argesim-Benchmark C14
- Fabrik produziert rund um die Uhr
- drei feste Produkttypen 1/2/3
- Produktionszeit exponentiell mit tMean
- Fabrik beliefert zwei Distributoren
- am Eingang kommen Bestellungen mit Attributen für
Produkt und Distributor
- keine Prüfung auf Bestand
- Gesamtmodell factory

- Order Generator erzeugt Bestellungen mit
Attributen Product und Distributor
- Ergebnis
- kleiner Trick
- Server zwischen Produkttyp- und
Distributor-Anzeige
- → im Osci übersichtlich nebeneinander dargestellt
- vgl. Anzeige Bestelleingang
- Implementierung der Komponente FactoryA:
- Aufbau
- Produktion füllt Lager auf
- Bestellungen werden einmal kopiert
- ein Exemplar geht zur Lagerhaltung
- entsprechendes Produkt kommt aus dem Lager
- zweites Exemplar geht zur Auslieferung
- schickt Produkt vom Lager an Distributor gemäß
Bestellung
- Ausgang des Lagerbestands als Vektor
- für Darstellungs- und Testzwecke
- für Erweiterung um eine Bestandsprüfung
- Implementierung der Komponente Auslieferung:
- Aufbau
- aus order wird Distributor abgelesen (in Server)
- als Message an Output Switch geschickt
- steuert Ausgangs-Port der Factory
- Vorsicht Nullserver (Server mit tS = 0)
- wird hier eingesetzt wegen Entry Action
- können problematisch sein (vgl. [9])
- speichern bei blockiertem Ausgang eine bzw.
mehrere Entities
- hier unkritisch, da Ausgang nie blockiert ist
- Implementierung der Komponente Lagerhaltung:
- Aufbau
- Produkte, nach Typ sortiert, in Speicherbausteinen (Entity Store) gesammelt
- Entities im Store ohne Reihenfolge
- alle Entities können auf einmal den Store
verlassen
- Queue statt Store wäre hier genauso gut
- Store nützlich bei Erweiterung (alle Typen in
einem Store)
- Release Gate lässt bei Eintreffen einer Message genau
eine Entity durch
- order wird durch Output Switch auf entsprechenden
Produkttyp geroutet
- Problem
- Release Gate verlangt Message (Anonymous Entity)
- order ist structured (hat Attribute)
- Lösung mit "Converter" Untyped
- ist ein Generator mit Generation method =
Event-based
- erzeugt Entity mit Type anonymous
- Ergänzungen:
- Store und Selection Gate (A19, testFactory5)
- Arbeiten mit Timern (A17, sendmessage3A)
- Simulink Function getTime() liefert t
- Attribute speichern z.B. Ein- und Austrittszeiten
- Auswerteblock berechnet Statistik
- Probleme in SimEvents
- Fehler bei komplexen gleichzeitigen Events (testDistributor1A/B)
- stoppt bei zu vielen gleichzeitigen Events pro
Block (supplychain1)