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

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

Thema: HMI Write geht nicht wenn "normal" Übersetzt - Bug oder Feature?

  1. #1
    Registriert seit
    22.11.2007
    Beiträge
    731
    Danke
    6
    Erhielt 89 Danke für 62 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    TIA V13 SP1 UP2, HMI 300,400,700, S7-1200 1211C Firmware 4.1.1

    Ich habe hier ein Projekt an dem ich schon ein Weile arbeite - doch jetzt plötzlich kann ich alle Variablen im HMI (300, 400, 700) nur noch lesen, NICHT mehr schreiben

    Ich habe eine Testvariable für die ich ein Eingabe und ein Ausgabefeld definiert habe - im Fehlerfall führt eine Eingabe zu ###### in dem Ausgabefeld

    Nach vorsichtigen Tests (das Testprojekt werde immer wieder frisch aus einem Sicherungsordner kopiert - damit nichts aus versehen gespeichert werden kann)
    mit verschiedenen Versionen des Projektes ist das meine reproduzierbare Fehlerkette:

    der Schlechtfall:

    1. SPS "Rücksetzen auf Werkseinstellungen" vom "SIMATIC Automation Tool" - nur damit der Anfang immer definiert ist
    2. mein Problem-Projekt laden
    3. Übersetzmethode 1: mit den Icons "Übersetzen" und "Laden in Gerät" auf die SPS
    4. Wert ins Eingabefeld auf dem HMI schreiben -> Ausgabefeld zeigt ########

    der Gutfall:

    1. SPS "Rücksetzen auf Werkseinstellungen" vom "SIMATIC Automation Tool" - nur damit der Anfang immer definiert ist
    2. mein Problem-Projekt laden
    3. Übersetzmethode 2: mit rechter Maustaste: "Hardware komplett übersetzen", "Software Bausteine komplett übersetzen" und dann laden mit den Icon "Laden in Gerät"
    4. Wert ins Eingabefeld auf dem HMI schreiben -> Ausgabefeld zeigt den geschriebenen Wert

    Dieser "Fehler" ist über mehrere Tests hinweg nachvollziehbar - leider habe ich es noch nicht geschafft das Szenario in ein kleines Beispiel umzuwandeln - ich
    bin da aber noch drann damit das hier jemand bestätigen kann

    Kennt jemand diese Effekte - oder kann sie erkären?
    Ich denke es ist ein Fehler weil es kein Feeback von TIA gibt das irgendetwas nicht in Ordnung ist - nur durch probieren ist mir das Aufgefallen

    Noch ein Frage:

    Die Funktion in Online&Diagnose SPS-Reset (Knopf unter SPS-auf Start/Stop) scheint nicht wirklich die SPS vollständig zu leeren/killen -
    Das Feature "Rücksetzen auf Werkseinstellungen" vom "SIMATIC Automation Tool" scheint radikaler zu sein - danach sind alles Programmblöcke weg und auch die SPS-Sprache steht dann auf Englisch
    https://support.industry.siemens.com...61300?lc=de-WW

    Update 1:

    Es liegt nicht am HMI - nur die Art wie ich das SPS-Projekt übersetze macht den unterschied aus

    Update 2: ES IST EIN BUG

    Es reicht wenn ich den Datenblock umbenenne damit auch Übersetzmethode 1 wieder richtig arbeitet und das HMI die Variable schreiben kann
    Vermutung: Das Umbenennen scheint wohl ein projektinternes Flag ala "vollständige Kompilierung benötigt" zu setzen Also ist es ein BUG weil dieses "Flag" in meinem Testprojekt nicht gesetzt ist
    ich es aber dennoch brauche damit die SPS richtig übersetzt wird

    Das Problem ist vergleichbar mit VStudios Precompiled-Headers-Problemen - normalerweise ist der IDE klar wann wirklich neu kompiliert werden muss - aber in alten Versionen hat das manchmal nicht richtig funktioniert -
    was dazu geführt hat das viele Entwickler im Falle von komischen Fehlern nur dem Rebuild wirklich vertrauen - ABER wie man vergleichbare Probleme in so ein Einschränktes System wie die SPS-Programmierung bekommt ist mir echt ein Rätsel
    Geändert von LowLevelMahn (17.04.2015 um 14:48 Uhr)
    Zitieren Zitieren BUG: HMI Write geht nicht wenn SPS "normal" Übersetzt  

  2. #2
    Registriert seit
    29.03.2004
    Beiträge
    5.739
    Danke
    143
    Erhielt 1.686 Danke für 1.225 Beiträge

    Standard

    Ich hatte solche Probleme mit der V12 in Zusammenhang mit einer S7-1200. Ich habe da sehr oft an den Variablen etwas geändert und das Projekt geladen, und irgendwann funktionierte der HMI-Zugriff auf bestimmte Variablen nicht mehr. Auch auf Merkerbereiche. Die einzige Möglichkeit zur Behebung war die SPS auf Werkseinstellungen zurückzusetzen, ein Reset reichte nicht aus.

    Ich vermute mal, dass entweder die neu vergebenen Variablen-IDs nicht an die SPS oder nicht an das HMI-Projekt übertragen werden. Da es nach einem Rücksetzen der SPS aber wieder funktioniert, würde ich eher vermuten dass die IDs nicht korrekt in die SPS übertragen werden, oder diese ihre internen Zugriffe nicht immer aktualisiert.

    Mit der V13 ist mir das noch nicht wieder aufgefallen, wobei ich damit bei weitem nicht so viel "rumgespielt" habe wie mit der V12.

    Die Steuerung meldet übrigens recht eindeutig woran der Zugriff scheitert, also ob es eine falsche ID ist, oder eine falsche Prüfsumme übermittelt wurde. Ich habe mir das damals aber nicht genau angesehen, weil mein Wireshark-Plugin noch nicht so weit war um die Fehlercodes auszuwerten.

  3. #3
    LowLevelMahn ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    22.11.2007
    Beiträge
    731
    Danke
    6
    Erhielt 89 Danke für 62 Beiträge

    Standard

    Ich vermute mal, dass entweder die neu vergebenen Variablen-IDs nicht an die SPS oder nicht an das HMI-Projekt übertragen werden.
    Es liegt nicht an den Variable-IDs (diese haben sich ewig nicht geändert - kein Namen oder Typ-Wechsel)

    1. Read und Write nutzen richtigerweise die selbe ID - sieht man schön mit deinem Wireshark-Plugin

    2. Read funktioniert - nur das Write auf die SELBE Variable geht nicht

    3. Der Zustand der HMIs ist unrelevant (diese ändere ich genau so wenig wie die DB-Variablen (und damit also auch nicht die IDs)
    nur die Übersetzungsart der SPS bringt den Fehler zum Vorschein

    4. Egal ob mit Methode 1 oder Methode 2 - die Variable-IDs sind immer gleich - nur die SPS verweigert den Write-Zugriff (AccessDenied) bei Methode 1
    bei Read kommt in beiden Fällen 0 als Fehlercode - auf die SELBE Variable

    5. ausser Projekt laden und Übersetzen mache ich gar nichts - kein Speichern

    Ich denke es ist irgendein Compiled-Cache der nicht richtig invalidiert wurde - eine Namesänderung forciert das, womit dann auch das normale "Übersetzen" per Icon wieder
    eine volle Kompilation anstoesst
    Geändert von LowLevelMahn (17.04.2015 um 15:05 Uhr)

  4. #4
    Registriert seit
    29.03.2004
    Beiträge
    5.739
    Danke
    143
    Erhielt 1.686 Danke für 1.225 Beiträge

    Standard

    Was siehst du denn in Wireshark für eine Fehlermeldung bei der Response zu SetMultiVariables?

  5. #5
    LowLevelMahn ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    22.11.2007
    Beiträge
    731
    Danke
    6
    Erhielt 89 Danke für 62 Beiträge

    Standard

    oben noch ein wenig erweitert
    siehe Punkt 4 => AccessDenied

  6. #6
    Registriert seit
    29.03.2004
    Beiträge
    5.739
    Danke
    143
    Erhielt 1.686 Danke für 1.225 Beiträge

    Standard

    Das deutet ja eher auf ein Problem mit den Zugriffmodifizierern hin, d.h. die Haken die man bei den DB-Variablen setzen kann.
    Es gibt unter anderem die Flags HMI-Visible und HMI-Accessible. Mit WinCC V7.3 lässt sich der Variablenhaushalt der Steuerung browsen, dann kann man in Wireshark sehen was für Informationen die Steuerung für die Variablen herausgibt.

    Aber wie auch immer, das Problem beheben kann nur Siemens.

  7. #7
    LowLevelMahn ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    22.11.2007
    Beiträge
    731
    Danke
    6
    Erhielt 89 Danke für 62 Beiträge

    Standard

    Das deutet ja eher auf ein Problem mit den Zugriffmodifizierern hin, d.h. die Haken die man bei den DB-Variablen setzen kann.
    Es gibt unter anderem die Flags HMI-Visible und HMI-Accessible. Mit WinCC V7.3 lässt sich der Variablenhaushalt der Steuerung browsen, dann kann man in Wireshark sehen was für Informationen die Steuerung für die Variablen herausgibt.
    Diese Flags sind doch nur zum Filtern in TIA und bei der Kommunikation völlig unbedeutend - und die stehen alle auf Visible/Accessible = true - auch schon immer
    Der einzige Unterschied ist nur die Art wie ich Übersetze - sonst mache ich absolut nichts mit dem Testprojekt (kein Ändern/Speichern) - nur die SPS kompilieren und übertragen
    alles andere ist 100% fix und konstant

    Code:
    mein Test Loop
      1. SPS "Rücksetzen auf Werkseinstellungen" vom "SIMATIC Automation Tool" - nur damit der Anfang immer definiert ist
    
      2. TIA öffnen
      3. mein (Konstant/Unverändert)Problem-Projekt laden
      
      4. Übersetzmethode 1: mit den Icons "Übersetzen" und "Laden in Gerät" auf die SPS
      5. Wert ins Eingabefeld auf dem HMI schreiben -> Ausgabefeld zeigt ########
    oder
      4. Übersetzmethode 2: mit rechter Maustaste: "Hardware komplett übersetzen", "Software Bausteine komplett übersetzen" und dann laden mit den Icon "Laden in Gerät"
      5. Wert ins Eingabefeld auf dem HMI schreiben -> Ausgabefeld zeigt den geschriebenen Wert
    
      6. TIA beenden / nicht speichern
    und wieder von vorne
    Ich verstehe nicht ganz wie du da den HMI-Visible und HMI-Accessible Bezug herstellst - aber koennte ja auch irgendwie drann hängen

    Aber wie auch immer, das Problem beheben kann nur Siemens.
    Wie immer :{

  8. #8
    Registriert seit
    03.03.2015
    Ort
    Viersen
    Beiträge
    11
    Danke
    2
    Erhielt 5 Danke für 3 Beiträge

    Standard

    @LowLevelMahn :

    Ich hatte das Problem auch schon - leider tritt es nicht immer auf und ist auch nicht wirklich nachvollziehbar. In meinem Fall mit meinem Bildbaustein, der auf ein UDT innerhalb eines DBs zugreift.
    Ich habe mir mittlerweile angewöhnt, immer "komplett übersetzen" zu wählen.
    Nur so bin ich auf der sicheren Seite, denn wer hat schon die Zeit, die komplette HMI jedesmal durchzutesten?

    Ich liebe TIA...


    Gruß,

    Michael

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

    LowLevelMahn (23.04.2015)

  10. #9
    LowLevelMahn ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    22.11.2007
    Beiträge
    731
    Danke
    6
    Erhielt 89 Danke für 62 Beiträge

    Standard

    D.h. bei dir kannst du dann auch nicht schreiben - aber dennoch die selbe Variable lesen
    Geändert von LowLevelMahn (23.04.2015 um 14:03 Uhr)

  11. #10
    Registriert seit
    03.03.2015
    Ort
    Viersen
    Beiträge
    11
    Danke
    2
    Erhielt 5 Danke für 3 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Das äußerte sich bei mir durch einen scheinbaren Versatz der Schreibadresse um (ich glaube mich erinnern zu können) 2 Bytes oder so. D.h. die Eingabe landete dann woanders als der Wert, den das Feld angezeigt hat. Aber das kam jetzt auch nicht oft oder regelmäßig vor - sicherheitshalber hört man dann aber doch auf, die kurze Version zu nehmen.
    So lange dauert das komplette Übersetzen auch nicht, dass ich da ein Risiko eingehen möchte. Das ist es dann doch nicht Wert...

Ähnliche Themen

  1. Step 7 S7-SCL Warum "geht" dieser Vergleich nicht?
    Von -ASDF- im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 29.07.2013, 12:29
  2. Antworten: 1
    Letzter Beitrag: 03.08.2012, 09:17
  3. Antworten: 6
    Letzter Beitrag: 16.03.2012, 18:20
  4. ANY Pointer. Wenn ist DatenTyp NICHT "Byte" ?
    Von JesperMP im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 05.03.2009, 23:11
  5. Antworten: 2
    Letzter Beitrag: 14.12.2007, 15:09

Lesezeichen

Berechtigungen

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