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

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 21

Thema: CPU Fehlerwoher?

  1. #1
    Registriert seit
    21.10.2013
    Beiträge
    29
    Danke
    2
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Morgen,

    ich habe beim Tia Portal V12 das Problem das die Steuerung bei der Bearbeitung dieses Textes in den Stopp geht, wisst Ihr eventuell wo hier der Fehler liegt?

    Danke für die Hilfe!

    MfG Frank

    Temporärer CPU-Fehler: Ausrichtungsfehler in FC 5
    betrifft OB 1 Ausführung
    Lesezugriff Gepufferter DB-Bereich
    fehlerhafte Adresse, Operand ersetzt

    |> Bearbeitung wird fortgesetzt (keine OB-Bearbeitung)

    |> HW_ID= 52
    interne Adressierungsdetails: Caddr=16#00002310, Bereich: DB 17

    Code:
           Bool                                           Byte                                                   Byte
    
      "Sonstiges"."Endschalter fehlt"[0]:="Ketten DB 7"."Endschalter Aktuell".X0<>"Ketten DB 7"."Endschalter Endlage"["I"].X0;
      "Sonstiges"."Endschalter fehlt"[1]:="Ketten DB 7"."Endschalter Aktuell".X1<>"Ketten DB 7"."Endschalter Endlage"["I"].X1;
      "Sonstiges"."Endschalter fehlt"[2]:="Ketten DB 7"."Endschalter Aktuell".X2<>"Ketten DB 7"."Endschalter Endlage"["I"].X2;
      "Sonstiges"."Endschalter fehlt"[3]:="Ketten DB 7"."Endschalter Aktuell".X3<>"Ketten DB 7"."Endschalter Endlage"["I"].X3;
      "Sonstiges"."Endschalter fehlt"[4]:="Ketten DB 7"."Endschalter Aktuell".X4<>"Ketten DB 7"."Endschalter Endlage"["I"].X4;
      "Sonstiges"."Endschalter fehlt"[5]:="Ketten DB 7"."Endschalter Aktuell".X5<>"Ketten DB 7"."Endschalter Endlage"["I"].X5;
    Zitieren Zitieren CPU Fehlerwoher?  

  2. #2
    Registriert seit
    02.04.2013
    Beiträge
    143
    Danke
    7
    Erhielt 22 Danke für 20 Beiträge

    Standard

    <> Vergleicher Ungleich.... du vergleichst zwei Bools miteinander (nicht zwei Bytes). Das geht nicht!

    EXKLUSIV-ODER-Verknpüfung (XOR) wäre für dich sicherlich das richtige...
    Geändert von shutdown_TIA12 (03.01.2014 um 12:22 Uhr)

  3. #3
    Frank_the_Tank ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    21.10.2013
    Beiträge
    29
    Danke
    2
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Mit XOR geht es auch nicht, ist auch nur für BOOL Format.

    MfG

  4. #4
    Registriert seit
    02.04.2013
    Beiträge
    143
    Danke
    7
    Erhielt 22 Danke für 20 Beiträge

    Standard

    Mit XOR geht es auch nicht, ist auch nur für BOOL Format.
    Und was ist das? :

    Code:
    :="Ketten DB 7"."Endschalter Aktuell".X0
    für mich ein Bool (Slice-Zugriff auf das erste Bit des Bytes "Endschalter Akutell"). Du hast jedoch im ersten Beitrag geschrieben, dass das ein Byte ist.


    Hilfreich wäre es noch zu wissen, ob du mit optimierten oder standard Bausteinen arbeitest...

  5. #5
    Frank_the_Tank ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    21.10.2013
    Beiträge
    29
    Danke
    2
    Erhielt 1 Danke für 1 Beitrag

    Standard

    In dem Byte sind die Zustande der Endschalter abgeleht und ich möchte vergleichen ob der abgelegte Zustand gleich dem Aktuellen ist.

    Was sind optimierte Bausteine?

    MfG

  6. #6
    Registriert seit
    02.04.2013
    Beiträge
    143
    Danke
    7
    Erhielt 22 Danke für 20 Beiträge

    Standard

    Bevor ich jetzt hier näher eingehen werde, sag uns kurz, welche CPU du verwendest und welchen Stand dein TIA hat...

  7. #7
    Registriert seit
    29.03.2004
    Beiträge
    5.731
    Danke
    143
    Erhielt 1.685 Danke für 1.225 Beiträge

    Standard

    Ob X0 wirklich ein Bool oder nicht doch ein Byte oder was ganz anderes ist kann man überhaupt nicht erkennen, da X0, X1, ... auch erlaubte Variablenbezeichnungen sind.
    Code:
    #bool1 := "GlobalDb".data[0].X0.X0 <> "GlobalDb".data[1].X0.X0;
    #bool1 := "GlobalDb".data[0].X0 <> "GlobalDb".data[1].X0;
    wäre als Beispiel durchaus möglich. Das erste X0 ist eine Variable vom Datentyp Byte, das zweite X0 ist Bit-Zugriff auf ein Bit in einem Byte.

    Wenn bei ihm XOR anstelle von <> nicht funktioniert, dann ist X0 nämlich kein Bit-Zugriff auf ein Byte/Word/Dword.

    Ich finde die Syntax für diese Slice-Zugriffe nicht ganz glücklich gewählt, da man eben nicht ohne den ganzen Kontext zu sehen erkennen kann, um was es sich dabei handelt.

    Ich vermute aber fast dass bei ihm der Array-Zugriff mit dem Index "I" aus dem gültigen Bereich läuft.

  8. #8
    Registriert seit
    15.01.2005
    Ort
    In der Mitte zwischen Bayreuth/Weiden
    Beiträge
    6.725
    Danke
    314
    Erhielt 1.519 Danke für 1.282 Beiträge

    Standard

    Naja, oberflächlich betrachtet scheinen die Datentypen wohl zu passen, sonst würde TIA beim Übersetzen bereits meckern ...

    Gemäß deiner Fehlermeldung würde ich das jetzt eher so interpretieren,
    das dein Index "I" nicht ganz dem entspricht was er sollte, sprich die Zahl zu klein oder zu groß für dein festgelegtes Array ist.

    Natürlich wäre XOR dennoch eine Möglichkeit, aber vermutlich keine die dein konkretes Problem behebt.
    Byte_Erg := Byte_1 XOR Byte_2 ;
    In Byte_Erg stehen nun also an der entsprechenden Bitposition deine Unterschiede.

    @thomasv2.1
    Laut S7-1200 SHB gibt es auch auf Byte/Word/Dword Basis eine AND/OR/XOR Verknüpfung.

    Mfg
    Manuel
    Geändert von MSB (03.01.2014 um 14:59 Uhr)
    Warum denn einfach, wenn man auch Siemens einsetzen kann!

    Wer die grundlegenden Freiheiten aufgibt, um vorübergehend ein wenig Sicherheit zu bekommen, verdient weder Freiheit noch Sicherheit (B. Franklin).

  9. #9
    Registriert seit
    02.04.2013
    Beiträge
    143
    Danke
    7
    Erhielt 22 Danke für 20 Beiträge

    Standard

    @Thomas_v2.1:
    vllt hast du Recht, dass X0 seine Byte Variable ist... Dies müsste der TE nochmals mitteilen, ob dem so ist.
    Mit der SLICE-Fkt müssen wir jetzt leben. Und um sich nicht selber in die Irre zu führen, sollte man deratige Variablendeklarationen meiden. Ist leider so...
    Seinen Index "I" habe ich beim Überfliegen, übersehen...
    Auch hier wäre es gut vom TE einen Screenshot von seinem Datenbaustein on zu stellen, damit man Einblick in seine Struktur hat, und nicht alles erraten muss.

  10. #10
    Frank_the_Tank ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    21.10.2013
    Beiträge
    29
    Danke
    2
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    Code:
    Endschalter Endlage"["I"]
    ist die Vatiable und das
    Code:
    .X0
    ist um nur das erste Bit anzusprechen. Ist bei der Anderen Variable genau so.

    MfG

Ähnliche Themen

  1. Antworten: 1
    Letzter Beitrag: 23.01.2013, 16:28
  2. Antworten: 5
    Letzter Beitrag: 13.08.2012, 14:32
  3. CPU 414-2DP alle LEDs an der CPU blinken
    Von mmuehlbach im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 17.12.2010, 20:43
  4. Zugriff einer CPU auf Daten 2. CPU über LAN
    Von Nico99 im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 06.02.2010, 12:17
  5. Antworten: 17
    Letzter Beitrag: 21.08.2008, 07:47

Lesezeichen

Berechtigungen

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