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

Results 1 to 6 of 6

Thread: PUT GET Kommunikation überschreibt INOUT Variable

  1. #1
    Join Date
    13.05.2014
    Posts
    2
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Default


    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!
    Last edited by dojo90; 11.09.2018 at 14:49.
    Reply With Quote Reply With Quote PUT GET Kommunikation überschreibt INOUT Variable  

  2. #2
    Join Date
    20.06.2003
    Location
    Sauerland.NRW.Deutschland
    Posts
    5,219
    Danke
    94
    Erhielt 884 Danke für 604 Beiträge

    Default

    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
    Join Date
    08.09.2016
    Posts
    295
    Danke
    6
    Erhielt 6 Danke für 6 Beiträge

    Default

    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
    Join Date
    22.06.2009
    Location
    Sassnitz
    Posts
    13,678
    Danke
    1,114
    Erhielt 4,047 Danke für 3,271 Beiträge

    Default

    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
    Join Date
    27.05.2004
    Location
    Thüringen/Berlin
    Posts
    12,897
    Danke
    629
    Erhielt 2,876 Danke für 2,085 Beiträge

    Default

    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 is offline Neuer Benutzer
    Themenstarter
    Join Date
    13.05.2014
    Posts
    2
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Default


    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?

Similar Threads

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

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •