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

Seite 1 von 5 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 42

Thema: Problem mit UDT inout und Multiinstanz

  1. #1
    Registriert seit
    31.07.2013
    Beiträge
    13
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Alle,

    ich habe schon überall verzweifelt nach meinem Problem gesucht, bin aber nicht so wirklich fündig geworden.

    Ich habe mir kleine FBs gebaut, die zb. einen G120c ansteuern und diverse Störungen erzeugen wenn der Umrichter n Problem hat. Am FB ist unter anderem ein inout PLC-Datentyp, der in einem DB steht. Dieser wird dann von der HMI benutzt um im Einrichtbetrieb den Motor (Um den Motorbaustein geht es egtl. nicht, dieser funktioniert schon lange) zu steuern. Unter anderem ist da eine Variable drin die den Sollwert vorgibt.

    Ich baue mir nun aus solchen kleinen FB (Motor, Zylinderbewegung.... usw) einen großen FB der ein Anlagenteil dar stellt. Diese kann man prima von Projekt zu Projekt wiederverwenden.

    Das Problem ist nun das wenn ich in der HMI denn Sollwert ändere, dieser manchmal nicht übernommen wird und wieder zurückspringt. Wenn ich mir das ganze am PC betrachte und da die Variable ansteuere funktioniert es immer...

    Ich habe schon alles möglich probiert.... zykluszeit der hmi variable.... kommunikationslast...

    Hat jemand ähnliche Erfahrungen oder weiß jemand vielleicht sogar eine Lösung?

    Danke schonmal

    Gruß

    Dominik
    Zitieren Zitieren Problem mit UDT inout und Multiinstanz  

  2. #2
    dodi110480 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    31.07.2013
    Beiträge
    13
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    achso... nochwas... in_out deswegen weil ich den Sollwert intern im Motor FB begrenze.

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

    Standard

    Du hast wahrscheinlich eine S7-400, oder eine neuere S7-300 bei der du die priorisierte BuB-Kommunikation aktiviert hast. Bei diesen werden die Kommunikationsdaten auch mitten im Zyklus in die internen Datenstrukturen eingebunden. Wenn die Daten nun gerade in dem Moment eintreffen in dem der Baustein auf den In-Out Daten arbeitet, werden diese beim Verlassen des Bausteins wieder überschrieben. Das Phänomen tritt umso häufiger zu Tage, desto größer die Zeit die in dem Fb im Verhältnis zur Gesamtzykluszeit verbracht wird (großer Baustein, kleines Restprogramm). Behandeln sollte man es aber so als ob es immer da wäre.

  4. #4
    dodi110480 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    31.07.2013
    Beiträge
    13
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hi Thomas, danke für die Antwort.... es sind 1200er und 1500er bei der 300er gehts nämlich. ...so etwas Ähnliches habe ich vermutet kann man das irgendwo abstellen?

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

    Standard

    Bei der 300er hieß das "priorisierte BuB-Kommunikation", war aber in Voreinstellung deaktiviert. Bei der 1200/1500 scheint es so eine Option nicht zu geben. Dann musst du wohl dein Programm so schreiben dass es damit umgehen kann.

  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 Thema gab es vor einem Jahr schonmal:
    S7-1500 HMI-Kommunikation (Zykluskontrollpunkt)

    Wie man das bei einer 1500 lösen kann weiß ich aber momentan auch nicht.

  7. #7
    Registriert seit
    24.04.2013
    Beiträge
    309
    Danke
    23
    Erhielt 160 Danke für 88 Beiträge

    Standard

    Hi all

    bei der 300 bin ich über sowas noch nicht gestolpert, aber bei der 400 oft. Bei der 1200 vielleicht schon, und bei der 1518 sicher aber nicht so oft wie bei der 400. Je schneller die AS desto mehr Probleme bekommt man.

    Ich habe mir deswegen angwöhnt keine direkten Schreibzugriffe der Visu in Variablen des Prozesses zu machen. So lästig es am Anfang sein mag, es spart auf die Dauer Zeit und Nerven für BuB einen (oder mehrere) eigenständige DB zu machen.
    Also über die Visualisierung schreibe ich in den HMI-DB und am Zyklusbeginn übertrage ich Daten in den Prozess.
    Das müssen nicht alle immer sein, sondern die, die im aktuellen Zustand des Prozesses von Wichtigkeit sind.

    Durch diese Entkopplung entfallen die Probleme mit Ablaufebenen und Konsistenz.

    Sollte man mehr als 480 Bytes am Stück übertragen müssen, dann klappt das nicht. Irgendwo bei 460 oder so ist eine Grenze, jenseits dieser werden mehrere Pakete übertragen. Zwischen diesen Paketen kann die CPU (und die 400 macht das ausgiebig) bereits wieder auf die erst halb geschriebenen Daten zugreifen. Das macht in 99 von 100 Fällen keinen Ärger, aber einmal die Woche sieht der Prozess Daten aus zwei (oder mehr) zu übertragenden Runden. An solchen Fehlern kann man verzweifeln.

    Durch spezielle "HMI-Koppel-DB" hat man jetzt die Möglichkeit an zwei Stellen eine Sequenznummer zu hinterlegen. Also ganz am Anfang des großen Paketes und ganz am Ende, die gleiche Zahl. Bevor man die Daten in den Prozess übernimmt vergleicht man die beiden Sequenznummern. Sind sie ungleich, dann wartet man in diesem Zyklus, kopiert nix und lässt die Daten links liegen. Wenn sie gleich sind, dann kann man die Daten verwenden.

    Nächster Trick: Man merkt sich die Sequenznummer an einer dritten Stelle. Aber erst nach dem die Daten in den Prozess übernommen wurden. Im nächsten Zyklus kann man damit herausfinden ob überhaupt neues von VISU rein gekommen ist. Wen nix neues reingekommen ist, braucht auch nix kopiert werden.

    JA, ich gebe zu, das klingt alles umständlich. ABER so bekommt man eine robuste Kommunikation die ohne Artefakte friedlich tut was sie soll. Das spart Nerven.

    'n schön' Tach auch
    HB

  8. #8
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.727
    Danke
    398
    Erhielt 2.402 Danke für 2.001 Beiträge

    Standard

    ... so baut sich halt jeder seine Hintertürchen um die Defizite der Visu-Kommunikation umgehen zu können ...

    Im Falle des Vorschlages von HB muss ich allerdings sagen, dass ich das für den umgekehrten Weg (SPS -> Visu) schon ausprobiert habe und dabei habe feststellen müssen dass auch das kein Garant für Datenkonsistenz ist - kann klappen - muss aber nicht ...

    Ob das allerdings dem TE hilft ...
    In denke, dass das Vernünftigste (auch nach meiner Erfahrung) ist, es so zu machen, wie von Thomas vorgeschlagen. "Einfach" den Baustein so ändern, dass die Daten in ihn nur eingelesen, nicht aber von ihm auch wieder zurück geschrieben werden ...

    Gruß
    Larry

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

    Standard

    Sein Problem ist aber nicht die Datenkonsistenz, sondern dass die HMI-Daten auch mitten im OB1-Zyklus in den SPS-Daten landen, und der Verwendung dieser Variable als In-Out-Parameter an einem FB. Die Real-Variable mit ihren 4 Bytes landet immer konsistent im Speicher.

    Eine Lösung wäre den Sollwert vom HMI auf Änderung zu überwachen, und ihn nur bei Änderung auf die Variable der er als In-Out-Parameter verwendet zu schreiben.

  10. #10
    Registriert seit
    24.04.2013
    Beiträge
    309
    Danke
    23
    Erhielt 160 Danke für 88 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi Thomas

    klar hat Dodi kein Problem mit der konsistenz, aber er hat eines mit der Nebenläufigkeit. Beiden Problemen kann man entkommen wenn man die Visu nicht direkt in den Prozess -- in Dodis Fall den Instanz-DB -- schreiben lässt.

    'n schön' Tach auch
    HB

Ähnliche Themen

  1. Step 7 UDT als Eingangsvariable eines Multiinstanz-FBs
    Von Bär1971 im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 20.08.2013, 19:11
  2. Timer mit Instanz als InOut Varíable
    Von blubbi im Forum CODESYS und IEC61131
    Antworten: 3
    Letzter Beitrag: 31.01.2013, 20:37
  3. Baustein mit IN & OUT Paramtern, oder INOUT`erstellen?
    Von Bensen83 im Forum CODESYS und IEC61131
    Antworten: 13
    Letzter Beitrag: 23.11.2012, 13:08
  4. Problem mit Multiinstanz und SFB4
    Von shephard im Forum Simatic
    Antworten: 15
    Letzter Beitrag: 05.11.2010, 08:31
  5. UDT als In_Out an Multiinstanz FB
    Von dirknico im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 01.10.2009, 12:28

Stichworte

Lesezeichen

Berechtigungen

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