Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 10 von 10

Thema: Statusword

  1. #1
    Registriert seit
    14.10.2008
    Ort
    Palz
    Beiträge
    89
    Danke
    9
    Erhielt 12 Danke für 9 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich schreibe gerade an einem FB...
    und weil ich die Schnittstelle nicht mit BITs riesig groß machen möchte,
    will ich ein Statusword ausgeben.

    Sowas wie:

    1. U IN_01
    2. = Status.0


    U IN_01 = Status
    funktioniert nicht!!

    Also habe ich einen FC geschrieben,
    mit dem ich einen Signalzustand beliebig vielen BITs eines WORDs zuweisen kann.

    Rufe ich diesen in meinem FB auf und weise die Variable vom FC IN_OUT:Ziel_Word
    der Variable des FBs OUT:Status zu bekomme ich die Meldung:
    "Deklarationsbereich der Aktualseite VAR_OUTPUT paßt nicht zum formalen Deklarationsbereich VAR_IN_OUT des Formalparameters ZIEL_WORD"

    Kann mir vllt jemand helfen?? ^^
    Ich möchte einfach nur ohne viel code ein BIT in einem WORD manipulieren.
    Zitieren Zitieren Statusword  

  2. #2
    Registriert seit
    19.07.2010
    Beiträge
    1.289
    Danke
    213
    Erhielt 267 Danke für 233 Beiträge

    Standard

    Ich würde da nicht mit einem FC arbeiten.

    Dafür hab ich zwei Vorschläge:
    Code:
    // Adressregister auf Statuswort setzen
    lar1   P#Status
    
    // Bit´s zuweisen
    u   IN_01
    =   B [AR1,P#0.0] // Statuswort Bit 9 
    
    u    IN_02
    =   B [AR1,P#1.0] // Statuswort Bit 0
    oder:

    Code:
    // Status 1
    U     IN_01
    L      1
    SPB  stat
    
    // Status 17
    U     IN_02
    L      17
    SPB  stat
    
    L      0
    stat: T   Status
    mfG Aventinus

  3. #3
    Registriert seit
    14.10.2008
    Ort
    Palz
    Beiträge
    89
    Danke
    9
    Erhielt 12 Danke für 9 Beiträge

    Standard

    Danke ^^

    Das erste ist gut,
    aber wieso ist
    Code:
    [AR1,P#1.0]
    Bit 0 ??

    Ich hatte sowas geschrieben ^^

    Code:
     U     #Signal
          SPBNB m001
    
          L     W#16#FFFF
          L     #BIT                    //Bitmuster laden
          UW    
          L     #Ziel_WORD          //aktuell ausgegebenes WORD laden
          OW                            //BITs aus Bitmuster setzen
          T     #Ziel_WORD         // und ausgeben
          BEA   
    
    m001: L     W#16#FFFF
          L     #BIT                    //Bitmuster laden
          UW    
          L     #Ziel_WORD          //aktuell ausgegebenes WORD laden
          INVI                           //Word invertieren
          OW                            //mit dem Bitmuster verrechnen
          INVI                           //geändertes WORD zurückinvertieren
          T     #Ziel_WORD          //und ausgeben
          BEA
    Geändert von The Blue (15.08.2010 um 10:06 Uhr)

  4. #4
    Registriert seit
    22.05.2005
    Ort
    sonniges Maifeld
    Beiträge
    1.067
    Danke
    77
    Erhielt 205 Danke für 159 Beiträge

    Standard

    Dafür eignen sich UDT´s sehr gut !
    "Man kann auf seinem Standpunkt stehen, aber man sollte nicht darauf sitzen" - Erich Kästner

  5. #5
    Registriert seit
    19.07.2010
    Beiträge
    1.289
    Danke
    213
    Erhielt 267 Danke für 233 Beiträge

    Standard

    @TheBlue

    mit

    LAR1 P#Status

    Setzt du das Adressregister auf dein Statuswort, bzw. wenn dein Statusword beispielsweise auf DIW8 liegt auf DIX8.0.

    Wenn du dann das Bit mit

    = x [AR1,p#0.0]

    zuweist (und nicht wie ein meinem Beispiel mit B für Byte ) dann weißt du da das Bit 8.0 zu, das im Wort aber an 9. Stelle sitz.
    mfG Aventinus

  6. #6
    Registriert seit
    14.10.2008
    Ort
    Palz
    Beiträge
    89
    Danke
    9
    Erhielt 12 Danke für 9 Beiträge

    Standard

    Hab´s gerade getestet ^^
    nur muß ich schreiben:

    = [AR1,P#0.0]

    ohne X

    aber in FUP kann ich nicht auf BITs zugreifen,
    wenn ich den Adresszeiger geladen habe ?!

  7. #7
    Registriert seit
    14.10.2008
    Ort
    Palz
    Beiträge
    89
    Danke
    9
    Erhielt 12 Danke für 9 Beiträge

    Standard

    Zitat Zitat von Lars Weiß Beitrag anzeigen
    Dafür eignen sich UDT´s sehr gut !
    dann bekomme ich aber auf Ausgabe auch einen UDT und bin nicht mehr Bibliothekfähig - oder ??

  8. #8
    Registriert seit
    19.07.2010
    Beiträge
    1.289
    Danke
    213
    Erhielt 267 Danke für 233 Beiträge

    Standard

    Der Zugriff müsste mit und ohne X funktionieren

    Die UTD-Geschichte bekommst du bibliothekfähig wenn du den UDT in die Bibliothek aufnimmst und dann den UDT auch ins Projekt ziehst, aber für ein Statuswort würde ich das so nicht machen (Anlehnung an die SFB's von Siemens).
    mfG Aventinus

  9. Folgender Benutzer sagt Danke zu Aventinus für den nützlichen Beitrag:

    The Blue (15.08.2010)

  10. #9
    Registriert seit
    14.10.2008
    Ort
    Palz
    Beiträge
    89
    Danke
    9
    Erhielt 12 Danke für 9 Beiträge

    Standard

    noch nicht das gelbe vom Ei...

    BOOLsche aufgaben löse ich gerne un FUP
    um auch später eine Fehlersuche zu erleichtern.
    In FUP schein das mit dem AR1 nicht zu funktionieren.
    Also brauche ich wieder zusätzliche Ressourcen...

  11. #10
    Registriert seit
    19.07.2010
    Beiträge
    1.289
    Danke
    213
    Erhielt 267 Danke für 233 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Dann bastelst du dir ein Temporäre Variable vom Typ Struct in der du die einzelnen Bits deklarierst. Diese beschreibst du dann in FUP.

    Anschliesend kopierst du die Struktur auf dein Statuswort. SFC20 machst das unabhängig vom Datentyp.
    mfG Aventinus

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •