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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 14

Thema: Bitmelderbyte drehen

  1. #1
    Registriert seit
    04.09.2009
    Beiträge
    7
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen
    Ich habe 12Panels und dazu jeweils ein dazugehöriger DB mit Fehlermeldungen. Alles reine Kopien. Allerdings soll nicht auf jedem TP die gleiche Fehlermeldung angezeigt werden. Dafür habe ich einen FC geschrieben der bestimmt welche Fehlernummer in welchen DB geschrieben wird. Dabei entsteht aber naheliegenderweise das Problem das WinCC mit der Adressierung mit 1.0 anfängt, die SPS jedoch genau umgekehrt.
    Die einzige Lösung die ich bisher erdacht habe ist leider alles andere als elgegant (jeweils ein DB "dazwischenschalten" und dort H-Byte und L-Byte tauschen).
    Die Bitmeldungen kann ich leider nicht Byte-weise einstellen nur Wort-weise. Oder ich habe diese Option einfach noch nicht hinbekommen.
    Kennt ihr da eine elegante Lösung? Entschuldigt falls diese Frage schon oft gekommen sein sollte, habe es mit Google und Suchfunktion versucht bin aber auf nichts gekommen.
    Vielen Dank
    Zitieren Zitieren Bitmelderbyte drehen  

  2. #2
    Registriert seit
    30.10.2009
    Ort
    10 km vom Herzen der Natur
    Beiträge
    1.626
    Danke
    120
    Erhielt 340 Danke für 255 Beiträge

    Standard

    Was spricht dagegen, einfach die Reihenfolge der Meldungen im Panel zu tauschen?
    Benötigst Du wirklich für jedes Panel einen eigenen DB?
    Vielleicht reicht es ja auch aus, im Panel Meldeklassen anzulegen, und in jedem Panel nur bestimmte Meldeklassen anzeigen zu lassen. Auf diese Art und Weise würdest Du Dir die Hin- und Herkopiererei mit den DBs sparen.
    Gruß
    Michael

  3. #3
    SPSSchlapf ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    04.09.2009
    Beiträge
    7
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Dagegen spricht die Menge der Meldungen. Ich habe 50 Gruppen mit jeweils 40 Fehlermeldungen die sich auf 12Panels verteilen. Dazu kommen 100Meldungen die auf allen Panels angezeigt werden. Das Ziel sollte sein das sich alles möglichst leicht auch ändern lässt. Mit der aktuellen Konfig kann ich in Sekundenschnelle sagen welcher Fehlerbereich zb. in Panel zwei angezeigt werden sollte. Habe ich nun Meldeklassen in einem einzigen DB für alle Panels geht das nicht mehr.

  4. #4
    Registriert seit
    23.04.2009
    Ort
    Allgäu
    Beiträge
    3.042
    Danke
    241
    Erhielt 863 Danke für 617 Beiträge

    Standard

    Zitat Zitat von SPSSchlapf Beitrag anzeigen
    Dafür habe ich einen FC geschrieben der bestimmt welche Fehlernummer in welchen DB geschrieben wird. Dabei entsteht aber naheliegenderweise das Problem das WinCC mit der Adressierung mit 1.0 anfängt, die SPS jedoch genau umgekehrt.
    Die einzige Lösung die ich bisher erdacht habe ist leider alles andere als elgegant (jeweils ein DB "dazwischenschalten" und dort H-Byte und L-Byte tauschen).
    Was machst Du denn genau in diesem Baustein?

    Der Befehl "TAW" dreht die Byte eines Wortes, hilft Dir das vielleicht?
    Gruß
    Paule
    ----------------------------------------------------------------------------
    > manchmal verliert man und manchmal gewinnen die anderen <

  5. #5
    SPSSchlapf ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    04.09.2009
    Beiträge
    7
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Grundsätzlich bestehen zwei DB's. Im ersten liegen die Fehlermeldungen so wie die SPS rechnet, sprich L-Byte beginnt bei 0.0. Danach wird genau über diesen TAW-Befehl die Drehung der Bytes bewirkt und von dem zweiten DB dann ins MobilePanel geschrieben. Da im Normalfall immer nur ein MP pro Anlage gleichzeitig gesteckt werden kann ist das ganz einfach. Nun ist aber wie beschrieben das Problem das feste Panels eingesetzt werden und auf denen sollen jetzt nur die platzrelevanten Meldungen angezeigt werden. Wenn ich aber nun aus dem zweiten DB heraus die Meldungen aufteile kann ich nicht Bitgenau festlegen welche Meldungen wo sondern nur Wortgenau. Da dies aber scheinbar nicht anders zu lösen ist habe ich jetzt halt 48Meldungen pro Platz und 112 allgemeine um so die Meldungen wortweise festlegen zu können. Wär halt "schöner" gewesen wenn ich willkürliche Nummern hätte wählen können. Das war die Idee dahinter.
    Trotzdem Danke

  6. #6
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.727
    Danke
    398
    Erhielt 2.402 Danke für 2.001 Beiträge

    Standard

    Hallo,
    wo ist denn das Problem ? Du schreibst deine Bitmeldungen in einen entsprechend definierten Bereich in deinem DB. Hinter diesem Bereich ist ein gleich großer Bereich, der die Byte-getauschten Werte für die Visu beinhaltet. Dazwischen liegt ein FC, der die "vorderen" Bitmeldungen in die "hinteren" umdreht. Das kann auch ein FB sein, der seine Instanz so zur Verfügung stellt und das Drehen durchführt.
    Auf jeden fall würdest du so dann das bekommen, was du haben willst ...

    Gruß
    Larry

  7. #7
    SPSSchlapf ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    04.09.2009
    Beiträge
    7
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Eben nicht... Da diese Bereiche variabel sein sollten. Nach deiner Lösung wäre eine Änderung des Bereiches eine Tagesaufgabe...
    Nun sieht das so aus:
    Der GrundDB ist der DB91
    Im FB81 drehe ich das Byte und schreibe alles in den DB81:
    Code:
          AUF   DI    81
          AUF   "Stoerungen"
          LAR1  P#0.0
    
          L     DBLG
          L     2
          /I    
    
    LOP2: T     #Schleife
          L     DBB [AR1,P#0.0]
          T     DIB [AR1,P#1.0]
    
          L     DBB [AR1,P#1.0]
          T     DIB [AR1,P#0.0]
          +AR1  P#2.0
          L     #Schleife
          LOOP  LOP2
    Nun muss ich die Bereiche festlegen, das schreibe ich im FB1111:
    Code:
          CALL  FC  1111
           DB_Nr        :=81
           Fehler_Nr_min:=113
           Fehler_Nr_max:=160
           DB_Nr_Ziel   :=1111
           RET_VAL      :=#dummy_bool
    (ist nur als Beispiel aufgeführt, wird dann für 49 weitere Plätze ausgeführt)
    Da bestimme ich den DB81 aus dem ich lese, den Bereich sowie den Ziel DB. In diesem Fall der DB1111. Zu diesem DB gehört das Touchpanel mit der Profibus Adresse 11. So kann jeder DB exakt den gleichen Inhalt besitzen und ist somit variabel was die Fehlermeldungen angeht und gleichzeitig auch deren Quittierung.
    Verstehst du was ich meine? Oder habe ich jetzt dich falsch verstanden?

  8. #8
    Registriert seit
    30.10.2009
    Ort
    10 km vom Herzen der Natur
    Beiträge
    1.626
    Danke
    120
    Erhielt 340 Danke für 255 Beiträge

    Standard

    Also, wo ist jetzt das Problem?
    Teil 1 (tauschen der Bytes) mit TAW, Teil 2 (transferieren in die anderen DBs) z.B. mit SFC20.

    Das ist sicherlich nicht der schönste aber wahrscheinlich der einfachste Weg.
    Gruß
    Michael

  9. #9
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.727
    Danke
    398
    Erhielt 2.402 Danke für 2.001 Beiträge

    Standard

    Zitat Zitat von SPSSchlapf Beitrag anzeigen
    ... Nach deiner Lösung wäre eine Änderung des Bereiches eine Tagesaufgabe ...
    ... Oder habe ich jetzt dich falsch verstanden?
    Wahrscheinlich hast du mich falsch verstanden, denn ich hätte dir sicherlich nicht etwas vorgeschlagen, das derartig unflexibel wäre. Ich selbst setze so etwas ähnliches (den Bytewender nämlich) selber ein.
    Mein FB ist darauf ausgelegt, 512 Fehlermeldungen handeln zu können - mehr brauche ich halt nicht aber alles andere ist genauso denkbar.
    Hier gibt es dann halt den Teil, der im Programm zugewiesen wird als Array 0..511 of Bool (wobei der Index dann der Fehlermeldung entspricht) und den Teil, der die Byte-Spiegelung beinhaltet und der dann der Visu übergeben wird.

    Den Teil, daraus einzelne Meldungen dann wieder in einen seperaten Bereich zu schieben, könnte man dann ja noch dazubringen. Da ich das Ganze in SCL realisiert habe würde ich den Seperations-Teil mit dem selben FB und anderer Parametrierung realisieren.

    Gruß
    Larry

  10. #10
    Registriert seit
    11.09.2007
    Ort
    Suedwestpfalz
    Beiträge
    917
    Danke
    81
    Erhielt 209 Danke für 192 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Warum überhaupt so kompliziert?

    Bau doch einfach den DB81 so zusammen wie die Panels es haben wollen.

    Auf dis Art ist auch das erweitern vom Bereichen kein Problem - aber immer etwas Reserve lassen.

    Fehler 1..8
    DBX 1.0..7

    Fehler 9..16
    DBX 0.0..7

    Dann den DB noch schön benamsen

    dbx1.0 "Stoermeldung 1" Kommentar "Fehler 1 SCHLOSSER im System"

    Ist 'ne Lösung die es eimem Kollegen erlaubt auch suchen zu können...

    dtsclipper
    Das Grauen lauert in der Zwischenablage !!

Ähnliche Themen

  1. Bilder drehen in C#
    Von Benni im Forum Hochsprachen - OPC
    Antworten: 2
    Letzter Beitrag: 04.11.2011, 10:40
  2. Störmeldung im Panel drehen.
    Von Katrin1982 im Forum Simatic
    Antworten: 21
    Letzter Beitrag: 21.05.2011, 08:27
  3. DB-Werte drehen
    Von Outrider im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 19.10.2010, 07:38
  4. Hgh Low byte drehen
    Von skyracer im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 09.05.2007, 15:01
  5. Bits drehen in Phoenix CMD
    Von Rengel im Forum PHOENIX CONTACT
    Antworten: 4
    Letzter Beitrag: 09.03.2005, 09:06

Lesezeichen

Berechtigungen

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