Welcome to our new forum
All users of the legacy CODESYS Forums, please create a new account at account.codesys.com. But make sure to use the same E-Mail address as in the old Forum. Then your posts will be matched. Close

PFC K-Bus: Buskommunikation unterbricht

Anonymous
2018-10-31
2024-03-12
  • Anonymous - 2018-10-31

    Originally created by: mg

    Hallo

    Produkt:
    Product Description:WAGO 750-8202 PFC200 CS 2ETH RS
    Order Number:750-8202
    License Information:Codesys-Runtime-License
    Firmware Revision:02.07.07(10)

    allgemeine K-Bus Informationen aus dem Codesys
    Name: Wago PFC200 interner Bus
    Hersteller: 3S - Smart Software Solutions GmbH
    Kategorien:
    Typ: 288
    ID: 0000 0001
    Version: 3.5.13.0
    750-553 K-Bus Informationen aus dem Codesys
    Name: 75x-553 4AA, 0-20 mA
    Hersteller: WAGO Kontakttechnik GmbH u. Co. KG
    Kategorien:
    Typ: 288
    ID: 0000 0001
    Modul-ID: 0229_75x_553
    Version: 3.5.13.0
    Bestellnummer: 75x-553
    Beschreibung: 4-Kanal-Analogausgangsklemme 0-20 mA; Standard-Mapping
    Beschreibung: Wago PFC200 interner Bus

    Mir kommt vor daß der K-Bus NICHT stabil läuft (zumindest nicht konstant). Wenn ich daran nicht rumprogrammiere läuft es soso (mit den folgenden Einschränkungen.) Wenn ich das System programmiere, fällt der Bus mit einer Wahrscheinlichkeit von 25% komplett aus. Dann hilft nur noch STROM AUS - STROM EIN.

    Ich habe unter anderem zwei 750-553 auf dem KBus (siehe Anhang)
    Für ca. 10-50ms ändert sich der mA-Wert der Karten geringfügig, obwohl sich der Eingangswert nicht ändert.
    Siehe Softwareauszug (fixer Wert wird DIREKT an die Karte gesendet)

    Für weniger als 50ms (gehen die Analogausgänge mit dem Strom runter). In Wirklichkeit glaube ich der verliert den Wert komplett. Aber da das SOOO kurz ist sieht es aus als ob sich der Wert nur um ca. 10% verringert.

    Wenn man nun GANZ KONZENTRIERT auf die grüne LED bei der 750-553 schaut, sieht man daß die im Abstand von ca.
    8-10sec (unregelmäßig) für einen SEHR KURZEN Moment erlischt. Genau zu diesem Zeitpunkt passiert das mit der Reduktion der Ausgangsströme.

    Ich habe bereits im Vorherigen EMail bemängelt, daß die 750-638 ebenfalls die K-Bus Kommunikation verliert. (Auch diese Klemme hat eine LED die die Busverbindung anzeigt) Diese Klemme bleibt ca. für 50-100ms dunkel. Das kann man eindeutig sehen. Auswirkungen hat es bisher dort keine (aber ich habe die noch nicht programmiert). Allerdings blinkt die ziemlich nervös, alle ca. 500ms kommt es zu einem Kommunikationsunterbruch.

    Was mit den anderen Karten passiert weiß ich nicht. ABER vertrauenswürdig ist das nicht.

    Für den Fall der 750-553 sollte ich eine schnelle Lösung haben.

    Mit bestem Dank

    Mg

    Zur Info:
    - Die Versorgungsspannung ist 27V (etwas zu hoch), leider kann ich sie nicht absenken, weil eine USV davor steht und die doppelte Batteriespannung die Versorgungsspannung ergibt.
    - In der DIAGNOSTICS steht nichts. (leer, ich weiß nicht wie ich das aktivieren soll)

    IMG: test.jpg

     
  • Anonymous - 2018-10-31

    Originally created by: mg

    Zumindest habe ich nun eine merkliche Verbesserung erzielt, wenn ich den Buszyklus-Task auf den Task der auf die E/A's wirkt, lege. Was ich da zwar genau mache weiß ich nicht. Die Beschreibung in der Hilfe habe ich nicht vollumfänglich kapiert.

     
  • Anonymous - 2019-11-27

    Originally created by: mg

    Also obige Lösung war zwar besser aber nicht gut.
    RICHTIG GUT FUNKTIONIERT DAS NUR ....

    Wenn man für den K-Bus einen EIGENEN Task vergibt. Darauf darf NUR der K-Bus laufen. Keine weitere Software.
    Dann muß man an diesen Task die K-Bus-Leiste anhängen.

    IMG: test.jpg

     
  • eschwellinger

    eschwellinger - 2019-11-28

    Hallo,

    ja sorry, ich habe das schon ein paar mal hier im Forum "gepostet".
    - Ich würde immer empfehlen eine eigene BusTask zu machen.....die je nach Applikations anforderungen (minimal)4-50ms zyklisch aufzurufen.
    - dann daruf achten das man die IO's nur in der KBUS Task verwendet ( mit Taskdeployment kontrollieren)
    - Update IO while in stop aktivieren ( das bedeutet KBUS update wird weiter aufgerufen / download / online change / stop)

    je höher man den update zyklus macht für die Kbus task- desto höher wird der load der SPS ( kontrollieren mit der plcshell)
    hänge mal das Projekt noch an.

    IMG: plcload.png

    IMG: Taskdeployment.png

    IMG: Updatewhile.png

    PFC200_KBUS.project [156.31 KiB]

     
  • Anonymous - 2019-11-28

    Originally created by: mg

    Hallo Edwin

    Kann man diese Informationen nicht mal irgendwo GESAMMELT zur Verfügung stellen.
    Das Suchen im Forum funktioniert nicht grad zuverlässig (habe ich auch schon bemängelt, sogar über google funktioniert es besser als über die inkludierte Suchfunktion), und dadurch sind derartige Informationen nahezu nicht zu bekommen.

    Man könnte es ja als LINK zum STORE geben (mit Datum)

    Trotzdem Dank

    Mario

     
  • Chris.O - 2019-11-28

    Hallo,

    dürfte ich mich zu dem Thema auch mal einklinken?

    Wenn ich dann jetzt die KBus Task separat mache... wie sieht das dann mit der Aktualisierung der Werte in meiner Main Task aus?

    Wenn ich jetzt als Beispiel meine Main-Task mit 20ms laufen lasse und möchte zu Beginn immer die aktuellsten Werte vom KBus haben und am Ende der Main Task die Ausgänge direkt auf den KBus geben,... wie bekomme ich das hin?

    Ich müsste quasi vor Beginn der Main-Task die KBus Task laufen lassen => KBusTask hat höhere Prio. Somit hätte ich zu Beginn der MainTask die aktuellsten Werte vom KBus. Ist die Main Task Fertig, müsste die KBus Task wieder aufgerufen werden, um die Ausgänge zu schreiben. Nur wie stelle ich die Zykluszeit der KBus-Task ein, damit auch wirklich immer die aktuellsten Werte gelesen und geschrieben werden? Hätte ich da immer irgendwo einen Versatz bzw. wie alt wären im schlimmsten Fall die Daten vom KBus bzw. zum KBus?

    Mir ist da nicht so ganz klar, wie das dann laufen würde...

    Im Endeffekt würde ich gerne vor Beginn der MainTask die Daten vom Kbus holen und am Ende der Main-Task meine Ergebnisse auf die Ausgänge am Kbus schreiben.
    Somit hätte ich die aktuellsten Werte für meine Berechnungen und für meine Peripherie hätte ich die schnellst möglichen Ausgangswerte.

    Gruß Christian

     
  • Anonymous - 2019-11-28

    Originally created by: mg

    Nur mal als Hinweis:
    Es gibt beim offiziellen WAGODokument zum PFC eine Beschreibung, wie die das mit dem PFC Bus machen.
    Das betrifft zwar V2.3 aber deshalb fiel mir überhaupt erst eine Lösung ein ...

    https://www.wago.com/at/d/6767

    siehe 8.9 Klemmenbussynchronisation

    ABER EDWIN WEISS SICHER MEHR !!!

    Mg

     
  • eschwellinger

    eschwellinger - 2019-12-02

    Hi,
    hm.. ich habe den KBus nicht erfunden inzwischen gibt es da schon auch "zeitgemäßeres/schnelleres"
    ich hoffe und denke auch das Wago da auch was nachlegt. Für die meisten Applikationen ist das schon ok so wie es ist und macht ja keine Probleme.
    Wenn du synchron (mit schnellen IO Updatezyklen) mit deinen IO's sein musst, dann echt das ganze in der KBus Task also IO Update und dein programm oder aber die Kbustask höher prior und schneller.... was halt echt extremen PLCload verursacht.

    Die 2th Generation PFC's entschärfen das ein wenig durch die ca 20% mehr Performance, aber
    das hilft halt manchmal immer noch nicht.
    Wie gesagt für die meisten Sachen passt das schon so.
    Hoffe das hilft euch weiter.

    Grüße
    Edwin

     
  • Chris.O - 2019-12-02

    Hallo,

    erstmal danke für die Infos.
    Hab mir die Beschreibung von Wago mal angesehen... aber da wird ja eigentlich auch nur das Verhalten der Task mit den KBus Aufrufen dargestellt.
    Wenn ich jetzt aber eine extra Task mache weiß ich nicht wann genau die IO's in meiner MainTask aktualisiert werden...

    Wie von Herrn Schwellinger angemerkt, hätte ich höhere CPU-Load auf der PFC, wenn ich die KBus Task dann entsprechend Zyklisch schneller mache...
    Ich müsste Sie quasi höher Prior als die MainTask machen und doppelt so schnell. Somit würde ja vermutlich immer mit den aktuellsten Werten gestartet bzw. immer die aktuellsten Ausgänge gesetzt...oder?

    Hab das ganze auch mal Ereignisgesteuert versucht...somit könnte ich es ja optimal laufen lassen. Ich setze mein Ereignis am Anfang der Main TRUE => Eingänge Einlesen in der KBus Task. In der KBus Task setzte ich das Ereignis zurück.
    Am Ende der Main Task wieder Ereignis auf TRUE => Setzen der Ausgänge. In der KBus Task wieder Ereignis zurücksetzen.

    Leider kommt mir das nach kurzer Zeit außer Tritt und die Task wird nicht mehr aufgerufen (da in irgend einem Zyklus meine Ereignisvariable komischerweise nicht mehr zurückgesetzt wird.) => hab hier schon dem Support mal geschrieben.
    Vllt könnte ich das so hin bekommen?

    Gruß Christian

     

Log in to post a comment.