Probleme mit Kommunikation zwischen Wago 750-889 und KNX Bus

prozanko

Level-1
Beiträge
43
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich habe einen 750-889 Controller mit einer 750-646 TP Klemme. Konfiguriert ist es als IP-Controller und IP-Router.

Es funktionierte alles bisher und die Kommunikation zwischen CodeSys und KNX war da. Zwischendurch bei Programmänderungen war sie wieder weg, irgendwie habe ich es aber wieder ans Laufen gebracht.

Heute habe ich mehrere Änderungen in Codesys und ETS5 vorgenommen und eingespielt. Nun ist die Kommunikation wieder weg. Ich kann zwar meine Geräte auf der KNX Seite weiterhin bespielen, zwischen KNX und CodeSys passiert aber nichts.

Ich habe wie sonst auch immer eine XML Datei erzeugt und in den IP Controller importiert, mit Codesys das Programm geladen und das Programm gestartet. Nun weiß ich aber nicht mehr weiter da ich keine Fehlermeldung habe und kein Plan habe wo ich weiter suchen muss.

Grüße
 
D.h. die Routerfunktion ist gegeben.

Wie sieht es mit den KNX-FBs aus - Konfiguration, Aufruf im selben Zyklus usw?
Hast Du die Filtertabellen ggfs. aktualisiert u. den Controller seitens KNX auch geladen?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Was mit den Aufruf im selben Zyklus gemeint ist weiß ich leider nicht. Mit den Filtertabellen habe ich bisher nichts gemacht.
In den Controller habe ich immer die aktuelle XML Datei geladen und das Applikationsprogramm eingespielt.
Ich habe das defekte Projekt bis auf die Grundbausteine zurück gelöscht und eingespielt, immer noch keine Funktion! Irgend etwas muss da zerschossen sein.

Anschließend habe ich ein altes Projekt (habe mehrere Sicherungsprojekte) genommen welches noch funktioniert und eingespielt, alles wieder OK.
Darin habe ich ein wenig rumgespielt. Ich habe ein Netzwerk im Programm in einer Position verschoben, dieser FB funktionierte dann nicht mehr. Zurückverschoben: alles OK.
Habe anschließen ein neues Netzwerk mit einen neuen FB erstellt. Bei diesen ist es egal an welcher Position es sich im Programm befindet, es funktioniert immer.

Momentan ist CodesSys für mich noch etwas unerklärlich warum es mal funktioniert und mal nicht.
Sicher ist es auch von Ferne schwer zu sagen wo der Fehler liegt wenn man das laufende Programm nicht sieht.
 
Wie meinst Du das mit verschoben?
In einen anderen Ordner im Projektverzeichnis?

Wegen dem Aufrufszyklus - goto Wago-Doku KNX-Konzept.
 
Ich habe es in der Reihenfolge in einem Programm (PRG_KNX_IP_Controller) geändert.
Konfiguriert ist alles im Routermodus.

Das Wago-KNX-Konzept kenne ich wohl. Einen Unterschied habe ich aber in meiner Konfiguration: Die TP Klemme ist nicht direkt nach dem Wago Controller gesteckt sondern hinter paar DI und DO Karten. Weiß nicht ob das relevant ist oder nicht!?!

Im Anhang habe ich paar Screenshots meiner Grundkonfiguration.
 

Anhänge

  • codesys.jpg
    codesys.jpg
    356,4 KB · Aufrufe: 52
  • ets.jpg
    ets.jpg
    57,7 KB · Aufrufe: 40
  • kartenconfig.jpg
    kartenconfig.jpg
    105,1 KB · Aufrufe: 40
  • web.jpg
    web.jpg
    142,7 KB · Aufrufe: 42
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn du die Reihenfolge der KNX-Bausteine änderst, musst Du auch die sym.xml neu erstellen - das wäre ungefähr so, als würdest Du bei einem KNX-Gerät die KOs neu adressieren.

Außerdem würde ich dir empfehlen, die dwIndex_DPT zu benutzen - macht das ganze bequemer.

Ich muss das mal testen (weil ich das so nie mache), aber ich vermute, das der Fehler evtl dann gar nicht erst existent geworden wäre, wenn man die Index verwendet u. den Baustein dann "verschiebt" - ist aber, wie gesagt, ohne Gewähr.

Der Aufruf des Masters mit seinen IO-FBs müssen im selben Zyklus aufgerufen werden - das ist ja bei dir der Fall.
 
Die sym.xml lese ich immer neu ein.
Die dwIndex_DPT wollte ich eigentlich wegen der Namensgebung der Bausteine vermeiden. Oder gibt es mit der Benennung Vorteile beim Arbeiten?
Vielleicht mache ich das Programm noch mal neu mit der dwIndex_DPT, bin noch recht am Anfang daher nicht so tragisch und übt zudem;)

Ist es denn möglich einfach mal ein Netzwerk im Programm zu löschen und durch ein anderes zu ersetzen? Wenn immer wieder neue Netzwerke dazu kommen sortiere ich diese ab und zu mal neu um den Überblick zu behalten, sonst herrscht schnell das Chaos:D
 
Neu erstellen - einlesen reicht nicht, wenn man die Kopplung verändert

Vlt. solltest Du auch Mal deine Arbeitsweise überdenken?
Im Projektgeschäft sind Änderungen während der IBN häufig; ständiges Umsortieren aber trotzdem nicht nötig.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Beim Laden des Projektes wird ja immer eine neue sym.xml Datei erzeugt, diese lese ich in der ETS Software auch ein.

Da ich bisher nicht viel mit SPS zu tun hatte (etwas S7 vor 15 Jahren in der Ausbildung) bin ich mir auch nicht so sicher wie ich das Programm am besten aufbauen soll bzw. mit welcher Arbeitsweise ich vorgehen soll…
 
Mal paar generelle Verständnisfragen:

Ich habe für Reedkontakte und andere potentialfrei Kontakte etwa 30 DIs auf meiner Wago belegt, die sollen alle auf den KNX Bus geschickt werden.
Vom KNX Bus sollen in die Wago mit Tastern, Präsenzmeldern usw. auch locker 30 Befehle rein.
Dann kommen noch paar Messwerte und die Logikbefehle die aus der Wago auf den KNX Bus sollen, macht locker über 100 Datenpunkte. Hierfür brauche ich dann über 100 Netzwerke im
PRG_KNX_IP_Controller?

Wird sicher irgendwann unübersichtlich wenn man da ohne Struktur voran geht oder?

Soll ich die Logik auch in den PRG_KNX_IP_Controller (PRG) Netzwerk machen? Bisher habe ich im PRG_KNX_IP_Controller (PRG) nur die FbDPT Bausteine drin gehabt und die Logik in andere Programme verfrachtet damit es übersichtlicher bleibt. Über globale Variablen habe ich dann in allen Programmen auf die Variablen zugreifen.

Ist für das PRG_KNX_IP_Controller (PRG) FUP oder CFC besser geeignet?
 
Zuletzt bearbeitet:
Hierfür brauche ich dann über 100 Netzwerke im PRG_KNX_IP_Controller?
Im FUP würd ich das so machen.

Wird sicher irgendwann unübersichtlich wenn man da ohne Struktur voran geht oder?
Teils ja - wobei man ja ohnehin mit "sprechenden" Variablen arbeitet u. auch über das ETS-Plugin z.B. schnell die Info hat, wo der entsprechende FB "sitzt".

Soll ich die Logik auch in den PRG_KNX_IP_Controller (PRG) Netzwerk machen?
Nein - ich mach immer nur die Kommunikation dort - alles andere in eigenen Programmen. So mach ich es auch, wenn andere "Bussysteme" eingebunden werden.

Ist für das PRG_KNX_IP_Controller (PRG) FUP oder CFC besser geeignet?
Bei der Auswahl würde ich für FUP plädieren.
Da hast Du alles schön untereinander, die Reihenfolge ist automatisch festgelegt.

Das schöne an CoDeSys ist ja, nimm die Sprache, mit der Du deine Aufgabe am elegantesten/leichtesten lösen kannst (solange es keine Vorschriften, wie von einem Auftraggeber gibt).
Evtl. landest Du dann schlussendlich doch bei ST, weil hier die Bearbeitungsmöglichkeiten ohne Zeigerfingerarthrose am bequemsten u. schnellsten sind - kopieren/wiederverwenden/anpassen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Besten Dank für die ausführlichen Antworten:)
Generell habe ich das Meiste richtig gemacht, außer das Benennen der Bausteine.
Werde dann mit FUP und CFC Arbeiten, von ST habe ich keine Ahnung.

Eine Frage zu der Namensgebung:
Ich werde die FB ja folgend benennen: M1_001_xyz, M1_002_xyz, M1_003_xyz,
Kann ich einfach bei den dwIndex_DPT paar Nummern als Platzhalter auslassen? Würde z.B. so aussehen:
dwIndex_DPT 1-20 Reedkontakte
dwIndex_DPT 21-30 nicht vorhanden da als Platzhalter reserviert (diese Netzwerke würde ich evtl. später dazwischen einfügen)
dwIndex_DPT 31-40 Präsenzmelder usw.
 
D.h. die Routerfunktion ist gegeben.

Wie sieht es mit den KNX-FBs aus - Konfiguration, Aufruf im selben Zyklus usw?
Hast Du die Filtertabellen ggfs. aktualisiert u. den Controller seitens KNX auch geladen?

Ich habe hierzu eine kleine Frage:
Ich lese über KNX Raumbediengeräte und Schalter ein. Zudem schreibe ich Stellantriebe. Ich habe ein Programm für "KNX Master", eines für die "Raumthermostaten", eines für "Schalter" und zuletzt noch "Stellantriebe".
In meinem Programm rufe ich zuerst den Master auf, danach die anderen Programme. Somit ist dies meiner Meinung nach zyklisch. (Da das Hauptprogramm die Unterprogramme aufruft). Jedoch funktioniert dies bei mir nicht. Sobald ich jedoch die Unterprogramme lösche und alle in das gleich Programm packe, funktioniert es. Habt ihr hierfür eine Erklärung oder geht meine Überlegung nicht auf?

Beispiel:
TASKKNX mit dem Programm KNX_PLC welches folgendes beinhaltet:
Aufruf Unterprogramm KNX Master
Aufruf Unterprogramm Raumbediengeräte
Aufruf Unterprogramm Schalter
Aufruf Unterprogramm Stellantriebe

Danke für Eure Hilfe.
 
Ich habe mehrere Unterprogramme für bestimmte Funktionen gemacht, so wie du es auch vorhast.
Ich hatte auch einmal das Problem, dass die Unterprogramme nicht funktionierten. Ich habe das gesamte Projekt noch mal neu erstellt und dann ging es wieder. Seitdem mache ich immer eine Sicherung des Projektes, bevor ich Änderungen vornehme. Manchmal macht CodeSys irgendetwas was man nicht nachvollziehen kann und es läuft nicht mehr…
 
Zurück
Oben