e!cockpit - Auslesen mehrerer Kanäle via M-Bus

B0bby_S

Level-1
Beiträge
7
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo liebe Community,

kurz etwas zu mir:
Seit einigen Wochen bin ich hier als schweigender, jedoch dankbarer Mitleser unterwegs. Ich beschäftige mich zurzeit mit einer Wago 750-8100.

Konkret möchte ich, im Rahmen meiner Abschlussarbeit, den Energiefluß auf mehreren Ebenen innerhalb einer Anlage regeln, überwachen und dokumentieren. In meinem früheren Berufsleben habe ich bereits Erfahrungen mit S7 (Simatic-Manager) gemacht. Den Einstieg in CoDeSys bzw. e!cockpit haben mir ältere Beiträge in diesem Forum und YouTube-Tutorials stark erleichtert. Nichts desto trotz werdet ihr in den nächsten Monaten sicherlich noch öfter von mir hören.

Nun zu meinem ersten Problemchen:

Ich möchte über M-Bus (Master Modul 753-469) mehrere Daten von einem Energiezähler (EMU Allrounder 3/75) abfragen. Ich habe mich am Tutorial langegehangelt und nach Auswahl der Einheit werden auch entsprechende Werte ausgegeben.

2018-08-14 15_57_46-MODBUS TEST.ecp - e!COCKPIT.jpg

Jedoch möchte ich drei Spannungswerte und Ströme, 2 Leistungen bzw. Energiemengen abfragen. Wenn ich mit der von Wago empfohlenen Software MB-Sheet den M-Bus-Teilnehmer auslese, werden mir ja die einzelnen Parameter mit Werten und zugehörigen Nr. angezeigt.

2018-08-14 15_59_33-M-Bus Sheet  V2.1 Demo-Version.png

Wie kann ich dies nun in mein Programm übernehmen. Ich gehe davon aus, das es mit den vorgefertigten Bibliotheksbausteinen von Wago nicht funktionieren wird. Gibt es evtl. Möglichkeiten diese Bausteine zu editieren oder andere Bibliotheken in denen es unkomplizierter gehandhabt wird wie z.B. dem Mapping von Modbus-Variablen?


Vielen Dank im Voraus.


Gruß B0bby_S
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Bobby_S,

Schau mal was du mit dem Baustein "FbMBusMultiTel" ausgelesenbekommst. Dieser Baustein liest die ersten 36 interpretierbaren Datensätze aus.Welche das dann sind muss man in der Hersteller Doku nachschlagen. Oder dieReihenfolge der Datensätze im MBSheet nachschauen. Strom, Spannung und Leistunglassen sich aber in der Regel schnell wieder finden.


Sollten die Daten im MBSheetangezeigt werden, aber im ARRAY „aMBusRecord“ des FbMBusMultiTel nichtenthalten sein, dann werden evtl. in dem Datensatz herstellerspezifischeEinheiten oder Kennungen verwendet die von den Standard Bausteinen nichtgeparst werden können. In diesen hartnäckigen Fällen kann/muss dann der BausteinFbMbusRawData verwendet werden. Dieser liest den Zähler aus und übergibt das „nackte“Antwort Telegramm als ARRAY_OF_BYTE. Diese M-Bus Rohdaten müssen nun mit Hilfeder Hersteller Doku selbst interpretiert und gewandelt werden (Aufwändig,Zeitintensiv und nicht trivial!!!, aber möglich).
 
Auch wenn meine letzte Anfrage zu dem Thema etwas her ist, habe ich immernoch ein kleines Problem mit meiner M-Bus-Kommunikation. Zwar funktioniert das Auslesen der einzelnen Kanäle mit der empfohlenen Methode nun recht gut, jedoch nicht so lange. Die vom Zähler bereitgestellten 14 Werte werden alle paar Sekunden vom "FbMBusMultiTel" abgefragt und in einer weiteren Funktion vom String in eine Realzahl gewandelt. Nach einiger Zeit hängt sich jedoch der FbMBusMaster auf, auch der Hardware Mbusmaster stellt sein blinken ein. Der Wert in sStatus bleibt auf 'App: busy' hängen und auch mit MBSheet ist dann keine Kommunikation mehr möglich. Erst ein "Warmreset" der SPS bringt das ganze wieder ans laufen.

Ich habe bereits mit der Abfragezeit im Bereich von 500ms - 30s durchprobiert, ob ich den Bus gegebenenfalls mit zu kleinen Intervallen überlaste, aber es ändert sich leider nichts. Auch die Zeit von Programmstart bis zum aufhängen liegt ziemlich random zwischen wenigen Minuten bis hin zu 4 Tagen.

Da es zumindest zeitweise funktioniert, gehe ich davon aus das die Hardware ok ist.

Vielen Dank im Voraus für alle Antworten.


Gruß B0bbyS

EDIT: Mir ist aufgefallen, dass die Variable 'xStart' bei einer Störung auf TRUE bleibt. Ein manuelles schreiben bzw. forcen ändert jedoch nichts.
 

Anhänge

  • M_Bus Abfrage OK.png
    M_Bus Abfrage OK.png
    21,2 KB · Aufrufe: 37
  • M_Bus Abfrage Störung.png
    M_Bus Abfrage Störung.png
    28,5 KB · Aufrufe: 30
Zuletzt bearbeitet:
Fehler gefunden, irgendwann an der falschen Stelle mal STRG+V gedrück und %IB42 als Variable für den MBUS-Port des Multitel-Bausteins gesetzt. Bei mir im normalzustand "0" und somit wurde der Baustein mit 1 initialisiert. Sobald mein Frequenzumrichter die maximale Frequenz erreicht hat wurde jedoch in IB42 ein Wert geschrieben welcher dann im laufenden Betrieb die Adresse des Mbusteilnehmers geändert hat.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Bobby_S,

Schau mal was du mit dem Baustein "FbMBusMultiTel" ausgelesenbekommst. Dieser Baustein liest die ersten 36 interpretierbaren Datensätze aus.Welche das dann sind muss man in der Hersteller Doku nachschlagen. Oder dieReihenfolge der Datensätze im MBSheet nachschauen. Strom, Spannung und Leistunglassen sich aber in der Regel schnell wieder finden.


Sollten die Daten im MBSheetangezeigt werden, aber im ARRAY „aMBusRecord“ des FbMBusMultiTel nichtenthalten sein, dann werden evtl. in dem Datensatz herstellerspezifischeEinheiten oder Kennungen verwendet die von den Standard Bausteinen nichtgeparst werden können. In diesen hartnäckigen Fällen kann/muss dann der BausteinFbMbusRawData verwendet werden. Dieser liest den Zähler aus und übergibt das „nackte“Antwort Telegramm als ARRAY_OF_BYTE. Diese M-Bus Rohdaten müssen nun mit Hilfeder Hersteller Doku selbst interpretiert und gewandelt werden (Aufwändig,Zeitintensiv und nicht trivial!!!, aber möglich).

Hallo .:WAGO::011726:.

ich möchte mich hier mal mit ran hängen, obwohl es um Codesys 2.3 geht und nicht um e!cockpit.
Ich lese einen Zähler mit dem FbMbusMultiTel aus un dbenötige Daten aus mehreren Telegrammen.
Gibt es ein Beispiel von Wago, wo ich sehe wie mit xSND_NKE und eventuell TelNo dort umgegangen wird?

vielen Dank
Ogaw
 
Zurück
Oben