Arbeiten mit Attributen
    
      - Beispiel reworking:
        
          - Idee
            
              - Anteil p von Werkstücken im Server defekt
 
              - müssen zurückgeführt werden
 
              - implementiert durch Entity-Attribut isOk (1 = ok,
                2 = defekt)
 
            
           
          - Modell reworkingA
            
          
 
          - Ergebnis
            
          
 
        
       
      - Attribute definieren:
        
          - immer im Generator
            
              - in Entity Type: Structured Entity
 
              - Attribute id und isOk definieren
 
            
           
          - Entity hat einen Datentyp (hier einfach Entity)
            
              - verschiedene Attribute → verschiedene
                Datentypen → verschiedene Namen
 
            
           
        
       
      - Attributewerte ändern:
        
          - in Event actions
 
          - hier im Server bei Service complete
            
              - pd = 0.3;  probability of
                  defect
                  if rand() < pD
                    entity.isOk = 2;  % defect
                  else
                    entity.isOk = 1;  % ok
                  end 
            
           
        
       
      - Attributwerte als Parameter verwenden:
        
          - häufig direkt über Block-Parameter
 
          - etwa bei Output Switch
            
              - Switching criterion: From attribute
 
              - Switch attribute name: isOk
 
            
           
          - muss Werte 1, 2 haben (oder mehr bei mehr Ausgängen)
 
        
       
      - Attributwerte als Wert verwenden:
        
          - Grundprinzip
            
              - Action ruft Simulink Funtion auf mit
                Attribut-Wert als Parameter
 
              - Simulink Funtion gibt Wert an Ausgang
 
            
           
          - Block Simulink Function
            
              - normales Atomic Subsystem mit In-/Out-Ports
 
              - zusätzlich interne "Anschlüsse" ArgIn/ArgOut
 
              - definieren Funktions-Parameter und -ergebnis
 
              - kann von verschiedenen Blöcken aufgerufen werden,
                u.a. von Actions
 
            
           
          - Simulink Function im Beispiel
            
              - Deklaration: showValue(u)  (kein
                Rückgabewert!)
 
              
 
              - vom Aufrufer übergebener Wert u wird am Port y
                ausgegeben
 
            
           
          - Exit action des Servers
            
          
 
        
       
      - Attributwerte als Message verwenden:
        
          - Message = Zahl als einfache Entity
            
              - verwendet für Kontrolleingänge 
 
              - Zahl nach Message mit Message
                  Send
 
              - Message nach Zahl mit Message
                  Receive
 
            
           
          - verwendet in reworkingB für
            bessere Ausgabe
            
              
 
              - mit Ausgabe
 
              
 
            
           
          - Simulink Function im Beispiel
            
              - Deklaration: createMessage(u)  (kein
                Rückgabewert!)
 
              
 
              - vom Aufrufer übergebener Wert u wird am Port y
                als Message ausgegeben
 
            
           
          - Exit action des Servers
            
              - createMessage(entity.isOk);
 
            
           
          - Message kann Kontroll-Eingänge steuern (etwa Gate
            oder Switch)
 
        
       
      - DisplayMessage:
        
          - Aufgabe
            
              - gibt bei einlaufender Message am Ausgang kurzen
                Impuls zur Anzeige im Osci
 
              - mein Ersatz für Attribute Scope aus SimEvents 4
 
            
           
          - Implementierung
            
              
 
              - einlaufende (Message-)Entities durchlaufen
                Puffer-Queue
 
              - Server hat sehr kurze Servicezeit (w = 0.001)
 
              - gibt Belegung n (1 oder 0) über Statistikausgang
                aus
 
              - gibt Attribut isOk über Entry-Funktion showValue(entity);
                und Simulink Function aus
 
              - Ausgang enthält kurze Peaks der Höhe isOk