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

Ergebnis 1 bis 6 von 6

Thema: PUT GET Kommunikation überschreibt INOUT Variable

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,

    zur Koordination unserer Bestücklinie gibt es ein übergeordnetes Leitsystem welches auf C# und Snap7 arbeitet. Das Anlagennetzwerk besteht idR. aus mind. 15 SPS' (1200er oder 1500er) welche alle beim Leitsystem nach der Richtung fragen.

    Erster Ansatz/DB Aufbau:

    DBX0.0 - Start
    DBD2.0 - ErrorCode

    1. CPU setzt Bit 0.0 auf true
    2. PC führt seine Aktion aus (schreibt optional einen Fehlercode in 2.0 und) setzt Bit 0.0 auf false

    Problem - sporadisch: Die CPU überschreibt (mit true) den vom PC geschriebenen Wert (false) und wartet dadurch endlos (bis zum Timeout) auf Rückmeldung vom PC.

    Die Variablen werden dabei als INOUT an die FBs gehängt.
    Beim Aufruf des FBs werden die Werte in einen I-DB zwischengespeichert und anschließend über diesen wieder zurück geschrieben. Dadurch kann es passieren, dass ein Wert/eine Variable die während einem FB Aufruf (vom PC) geschrieben wurde, von der CPU wieder zurück überschrieben wird und diese/r somit verloren geht.

    Zweiter Ansatz:

    DBX0.0 - Done
    DBD2.0 - ErrorCode
    DBX6.0 - Start

    1. CPU setzt Bit 6.0 auf true
    2. PC führt seine Aktion aus (schreibt optional einen Fehlercode in 2.0 und) setzt Bit 0.0 auf true
    3. CPU setzt Bit 6.0 auf false
    4. PC setzt Bit 0.0 auf false

    Dadurch konnte dieses Problem vermieden werden.

    Meine Frage, gibt es jdn. der einen ähnlichen Anwendungsfall hat und dieses Problem kennt oder anders gelöst hat?

    Danke!
    Geändert von dojo90 (11.09.2018 um 14:49 Uhr)
    Zitieren Zitieren PUT GET Kommunikation überschreibt INOUT Variable  

  2. #2
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.933
    Danke
    84
    Erhielt 826 Danke für 558 Beiträge

    Standard

    was ich mich als erstes frage ist warum der pc nicht auf die erneute änderung auf true des bit 0.0 reagiert?
    in der regel handhabe ich das wie dein 2ter ansatz.
    allerdings setze ich nach erfolgreichem datenaustausch das done-bit zurück und nicht der pc. der pc muss also nur das startbit überwachen. aber das ist sicherlich ansichtssache.
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  3. #3
    Registriert seit
    08.09.2016
    Beiträge
    260
    Danke
    5
    Erhielt 6 Danke für 6 Beiträge

    Standard

    Servus,
    das ist ein Leidiges Thema und darüber stolpert jeder mal.

    Das Problem nennt sich "Zyklus Synchronisierungspunkt" (der fehlt bei den 1200 und 1500 Steuerungen) und das in Kombination mit einem nicht Optimierten DB.

    Du bist zu dem Thema recht schnell fündig benutze einfach mal die Suche.

    Gruß

  4. #4
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    12.300
    Danke
    996
    Erhielt 3.639 Danke für 2.933 Beiträge

    Standard

    Mit dem Suchbegriff "zykluskontrollpunkt" kannst Du unsere vielen bisherigen Diskussionen zu dem Thema finden.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  5. #5
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.517
    Danke
    568
    Erhielt 2.771 Danke für 2.004 Beiträge

    Standard

    Das Verhalten kenne ich aber auch schon von Früher mit 300-er und OPC (PC).
    Daher nutze ich auch immer Verfahren 2, wobei grundsätzlich jeder "Teilnehmer" seine Variablen die er setzt auch wieder rücksetzt.
    Damit umgeht das Problem, dass sich Variablen gegenseitig überschreiben.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  6. #6
    dojo90 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    13.05.2014
    Beiträge
    2
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Danke für eure Antworten! Ich bin gestern Abend auch noch fündig geworden und auf "Zyklus Synchronisierungspunkt" gestoßen.

    was ich mich als erstes frage ist warum der pc nicht auf die erneute änderung auf true des bit 0.0 reagiert?
    in der regel handhabe ich das wie dein 2ter ansatz.
    allerdings setze ich nach erfolgreichem datenaustausch das done-bit zurück und nicht der pc. der pc muss also nur das startbit überwachen. aber das ist sicherlich ansichtssache.
    Der PC reagiert jedesmal, sobald das Bit 0.0 auf true gesetzt wird. Ich lasse den PC dieses Bit zurücksetzen, da ich damit das Problem umgehe, dass sich Variablen gegenseitig überschreiben.


    Gibt es eine Alternative zu PUT GET um eine konsistente Datenübertragung zu haben und Daten zwischen PC und SPS auszutauschen?

Ähnliche Themen

  1. TIA unspezifizierte Kommunikation put,get
    Von SPS_NEU im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 28.07.2018, 14:49
  2. Step 7 S7-300 PUT/GET Kommunikation
    Von J_R im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 29.03.2017, 15:11
  3. TIA Achsbaustein: AXIS_REF als InOut-Variable
    Von D-Platoon im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 26.08.2015, 11:20
  4. Step 7 Inout-Variable
    Von kuti im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 19.01.2014, 20:00
  5. Timer mit Instanz als InOut Varíable
    Von blubbi im Forum CODESYS und IEC61131
    Antworten: 3
    Letzter Beitrag: 31.01.2013, 20:37

Lesezeichen

Berechtigungen

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