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

Ergebnis 1 bis 8 von 8

Thema: MP 277 an S5-115U ----> E / A / M um ein Byte verschoben DB Bereiche nicht

  1. #1
    Registriert seit
    08.05.2009
    Beiträge
    117
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Guten Morgen liebe Leute,

    habe ein MP 277 10'' Touch über eine IM 308 C mit einer S5-115 U verbunden.
    Läuft alles soweit super.
    Verbindung steht, Datentransfer haut hin, tausche im Moment Daten über DBs mit dem Panel aus, auch das funktioniert tadellos.
    Wollte direkt nen Merker abfragen, der Merker war 1 jedoch im Panel kam nichts.
    Diagnose Fenster im Panel angeschmissen, auch da war er 0.
    Mal das ganze Wort überprüft und da musste ich feststellen, mein Panel schaut nicht auf das Byte welches ich ihm vorgebe, sondern auf ein Byte weiter.
    Soll heissen, ich will mir über das Panel den Zustand von Eingang 0.0 anschauen, geht nicht.
    Schaue ich mir über das Panel den Zustand von Eingang 1.0 an und schalte an der Steuerung Eingang 0.0 so sehe ich den Zustand auf dem Panel wechseln.
    Verdrahtet ist alles richtig, habe ich gecheckt.
    Habe mal Spasseshalber, in einem DB das Bit 0.0 vom Eingang 0.0 setzen lassen, frage ich über das Panel den Zustand vom Bit 0.0 im DB ab, funktioniert es richtig.
    Das ganze verhällt sich so bei Eingängen, Ausgängen und Merkern.


    Hat von euch jemand eine Idee was der Hintergrund sein könnte und wie ich das beheben kann?
    Zitieren Zitieren MP 277 an S5-115U ----> E / A / M um ein Byte verschoben DB Bereiche nicht  

  2. #2
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.849
    Danke
    78
    Erhielt 800 Danke für 543 Beiträge

    Standard

    wie hast du denn die variable definiert? als byte oder als wort?
    wie benutzt du bit.
    so z.b.? mw0 bit2 <- das wäre m1.2 wegen mw0 = mb0 mb1

    bei dw funktioniert das weil db's wortorientiert sind und nicht wie in s7 byteorientiert
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  3. #3
    Registriert seit
    13.09.2010
    Beiträge
    2.292
    Danke
    178
    Erhielt 375 Danke für 355 Beiträge

    Standard

    wortweise und byteweise Adressierung, du musst die bytes tauschen
    kind regards
    SoftMachine

  4. #4
    matziane ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    08.05.2009
    Beiträge
    117
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ich habe in den Variablen das ganze als Datentyp "Bit im Wort" definiert, also EW 0 Bit 0, da würde ich ja noch mit gehen, dass vielleicht Probleme geben könnte.
    Macht aber keinen Sinn, da ich es mit den Bits in den Datenbausteinen genauso handhabe und da bekomme ich exakt den Zustand des Bits das ich anspreche.
    Im Panel kann man ja noch dieses Status/Steuern Fenster einfügen, dort kann man ja die Verbindung wählen und mittels Bool direkt eine Adresse abfragen.
    Wenn ich dort Bool wähle und E 1.0 eingebe sehe ich den Zustand von E0.0.
    Gebe ich dort Bool ein und wähle Beispielsweise DB 0 DBX0.0 so bekomme ich exakt den Zustand dieses Bits und muss da nicht DB 0 DBX1.0 abfragen.

  5. #5
    Registriert seit
    19.12.2008
    Beiträge
    336
    Danke
    19
    Erhielt 28 Danke für 28 Beiträge

    Standard

    Das Problem hast du aber auch bei einer S7 ...
    Ich nehme an, du machst es so :
    - du hast eine Variable vom Typ Wort und die adressiert das EW 0 (z.b.)
    - hier benutzt du zur Animation im Bild den E0.0 und sagst vom EW0 das Bit 0 verwenden. Das adressiert dann aber den E1.0 (wegen der von Softmachine schon genannten Byte-Verdrehung bei E, A, M - High-Byte und Low-Byte werden vertauscht). Du müßtest also Bit 8 verwenden oder alternativ nicht ein Wort, sondern ein Byte adressieren.

  6. #6
    matziane ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    08.05.2009
    Beiträge
    117
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Nein, mache ich nicht so.
    Wenn ichs so machen würde wie du es beschreibst wäre es so, da hast du vollkommen recht.

    Ich mache es so,
    Ich kann den Datentyp meiner Variablen als KF, KH, KM, KY, KG, KC, KZ, KT, Bit in D, Bit in W, DF oder in DH deklarieren.
    Für mich habe ich "Bit in W" gewählt, dadurch kann ich unter Adresse den Bereich festlegen (in diesem Fall "EW") dann kann ich das EW festlegen (hier "0") und unter Bit wähle ich 0.
    Ich kann hier von Bit 0 bis 15 auswählen, wegen der Highbyte Lowbyte Geschichte müsste ich logischerweise ja das 8te Bit ansprechen um Bit 0.0 zu bekommen.
    Mein Chef meinte aber den Tag, das muss so funktionieren, dass ich direkt das Bit eingebe welches ich anspreche und dann bekomm ichs ausgegeben.

    Habs eben mal getestet, wenn ich hier anstatt Bit 0, Bit 8 wähle dann wird mir der korrekte Zustand ausgegeben, was ja von der Sache her auch Sinn macht.
    Aber so muss ich ja bei der Variablendeklaration jedesmal um die Ecke denken, ist ja auch doof.

    Verwirren tut mich nur dieses STATUS/STEUER Fenster im Panel, das kennt ihr doch sicherlich.
    Da kann ich Datentyp BOOL wählen, was ja einer Bitabfrage entspricht.
    Gebe ich hier Typ E wie Eingang ein, Offset 0, Bit 0 bekomme ich den Zustand nicht.
    Schalte ich jetzt E1.0 sehe ich den Zustand wechseln, hier könnte ich mir ja nie Eingang 0.0 anschauen, außer ich frage das Wort 0 ab und schaue mir das 8te Bit an.

    So, hoffe jetzt seid ihr nicht noch verwirrter als vorher

  7. #7
    Registriert seit
    19.12.2008
    Beiträge
    336
    Danke
    19
    Erhielt 28 Danke für 28 Beiträge

    Standard

    Zitat Zitat von matziane Beitrag anzeigen
    So, hoffe jetzt seid ihr nicht noch verwirrter als vorher
    Nöööö - denn du hast ja das bestätigt, was schon beschrieben wurde. Was generell für das Auslesen gilt, das gilt natürlich genau für das Beschreiben. Es hat etwas mit dem Byte-im-Wort-Aufbau bei Siemens zu tun. Hier mal ein Schlagwort : Little-Endian bzw. Big-Endian.
    Wenn du das Verhalten umgehen willst dann empfehle ich dir, nicht mit Worten an der Stelle zu arbeiten, sondern mit Bytes. Dann klappt es auch, wie gewünscht.

  8. #8
    matziane ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    08.05.2009
    Beiträge
    117
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Würd ja mit den Bytes arbeiten, geht ja aber nicht kann ja nur Bit in Wort oder Bit in Doppelwort, KM würde ja auch gehen bezieht sich aber dummerweise auch aufs Wort.

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 29.11.2011, 00:55
  2. Antworten: 9
    Letzter Beitrag: 18.05.2011, 18:04
  3. INT in ein Byte schreiben
    Von TimoK im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 16.06.2009, 11:52
  4. Antworten: 4
    Letzter Beitrag: 08.07.2008, 08:52
  5. Elau: Ein Byte, bitweise in ein Array schreiben?
    Von Trashman im Forum CODESYS und IEC61131
    Antworten: 4
    Letzter Beitrag: 24.10.2007, 19:27

Lesezeichen

Berechtigungen

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