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



## B0bby_S (14 August 2018)

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. 




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. 




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


----------



## B0bby_S (16 August 2018)

Hi, besteht evtl. seitens der Mods die Möglichkeit dieses Thema in das WAGO-Support-Forum zu verschieben?


----------



## .:WAGO::011726:. (16 August 2018)

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).


----------



## B0bby_S (10 Juli 2019)

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.


----------



## B0bby_S (8 August 2019)

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.


----------



## ogaw (16 September 2021)

.:WAGO::011726:. schrieb:


> 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


----------

