Forum: Mikrocontroller und Digitale Elektronik PIC mit Ethernet für SMA Modbus TCP auslesen


von Danny_678 (Gast)


Lesenswert?

Hallo zusammen,

ich grabe meinen alten Thread mal aus

Beitrag "Modbus Sunspec Protokoll zu mA oder V Signal"

und frage mal in die Runde, ob jemand einen PIC (18 F?) empfehlen kann, 
welcher hierfür (Modbus TCP) her halten kann?

Aktuell programmiere ich einen 18F mit meinem Sohn mit Interrupts/ ADC 
und PWM, so dass es für mich eventuell leichter erscheint einen PIC zu 
nehmen.

Eigentlich muss der PIC "doch nur" im TCP Netz lauschen, die 
entsprechenden Daten einlesen, zerlegen und bei XXX Wert ein PWM wert 
setzen, so wie ich es jetzt schon mache oder stell ich mir das zu 
einfach vor?

Frage, die sich mir gerade stellt, woran erkennt der Controller das es 
SMA Modbus Daten sind und nicht vom Internetverkehr ?

Antworten braucht er jedenfalls nicht. Den gekauften Rasberry Pi 4 würde 
ich da erstmal lieber wieder zur Seite legen

Danke an alle.

von Frank K. (fchk)


Lesenswert?

Danny_678 schrieb:

> und frage mal in die Runde, ob jemand einen PIC (18 F?) empfehlen kann,
> welcher hierfür (Modbus TCP) her halten kann?

Es gibt genau eine PIC18-Familie mit eingebautem Ethernet MAC/PHY: 
PIC18F67J60/87J60/97J60. Unterscheiden sich in der Anzahl der Pins, sind 
absonsten identisch. Wenn Du Ethernet mit einem 8 Bit PIC machen willst, 
dann wirst Du den tunlichst nehmen. Dazu brauchst Du den TCP-Stack aus 
der Legacy(!) MLA. Der funktioniert einwandfrei.

Ein passendes Board bekommst Du hier, wenn Du nicht selber bauen willst:
https://www.olimex.com/Products/PIC/Proto/PIC-P67J60/

> Eigentlich muss der PIC "doch nur" im TCP Netz lauschen, die
> entsprechenden Daten einlesen, zerlegen und bei XXX Wert ein PWM wert
> setzen, so wie ich es jetzt schon mache oder stell ich mir das zu
> einfach vor?

Nein.
Du erzeugst einen Socket und baust eine TCP Verbindung zu einem Server 
auf. Diese Verbindung ist durch die IP-Adresse und den Serverport 502 
für Modbus TCP gekennzeichnet. Ab diesem Punkt gehts dann genauso wie 
bei seriell/RTU weiter, nur mit dem Unterschied, dass bei 
TCP-Verbindungen der TCP/IP-Stack die Prüfsummen erzeugt und prüft, das 
muss dann der Modbus-Stack nicht machen.

Jedenfalls wirst Du dann Modbus-Pakete senden und empfangen 
wollen/müssen. Da hilft es dann, die Normen vorrätig zu haben.

Dieses Vorgehen ist überall das gleiche, egal ob mit Windows, Linux oder 
dem PIC.

Wenn Du fertig bist oder die Verbindung irgendwie unterbrochen wird, 
machst Du Deinen Socket zu, und das wars.

> Frage, die sich mir gerade stellt, woran erkennt der Controller das es
> SMA Modbus Daten sind und nicht vom Internetverkehr ?

Du hast halt eine falsche Vorstellung. Du hörst nicht auf irgendwelche 
Pakete, sondern Du must gezielt eine Verbindung zu einem Gerät aufbauen, 
und über die magische Nummer 502 sagst Du ihm, dass Du den Modbus-Dienst 
willst. SSH wäre Nummer 22, http Portnummer 80.

von Danny_0678 (Gast)


Lesenswert?

Sehr ausführlich deine Antwort, vielen Danke.

Muss trotzdem an einem Punkt noch einmal an knüpfen.

Der Home Manager kommuniziert mit dem Wechselrichter über das Netzwerk. 
Jeder wird wahrscheinlich eine eigene Adresse haben, die von SMA 
festgelegt ist. Mir ist immer noch nicht klar, warum ich in die 
Kommunikation eingreifen sollte oder muss, da ich das Gespräch zwischen 
den beiden Teilnehmern abhören und entsprechend der übertragenen 
Leistung mein PWM Signal generieren möchte.

Für den von dir beschriebenen PIC gibt es hier ein Netz Experimentier 
Baugruppen wie diese

https://www.google.com/shopping/product/1?q=PIC18F67J60&client=safari&channel=iphone_bm&biw=414&bih=719&tbs=vw:l,ss:44&prmd=sinv&sxsrf=ALeKk03alTy42V20_5csI4sHid7RDqLdVg:1587292551406&prds=num:1,of:1,epd:2040295052239887490,paur:ClkAsKraX12jVzor6GBWhrj11R8JacT72EvFMOS8s7eyQvDv-430jFxA00LxBrWc-AnJNpNyiBYxtXXiHsPaOWRubMR8xRuyIX3-cQkfFonl7Gx4LeKNVTNfkBIZAFPVH70iZkvDR6iwjZPHdIuWP835gaaPDA,prmr:1,pid:2040295052239887490,cs:1

Mit meinem Pickit 3 sollte das ja machbar sein.

Danke

von Frank K. (fchk)


Lesenswert?

Danny_0678 schrieb:

> Der Home Manager kommuniziert mit dem Wechselrichter über das Netzwerk.
> Jeder wird wahrscheinlich eine eigene Adresse haben, die von SMA
> festgelegt ist. Mir ist immer noch nicht klar, warum ich in die
> Kommunikation eingreifen sollte oder muss, da ich das Gespräch zwischen
> den beiden Teilnehmern abhören und entsprechend der übertragenen
> Leistung mein PWM Signal generieren möchte.

Du kannst nicht in die Kommunikation eingreifen. Du kannst sie auch 
nicht so einfach abhören. Du musst eine neue Verbindung aufbauen und Dir 
selber die benötigten Werte holen.

Alle Ethernet-Geräte hängen an einem Ethernet-Switch. Jedes Gerät hat 
seine eigene Ethernet-Adresse (die nichts mit der IP-Adresse darüber zu 
tun hat). Der Switch-Chip hat eine spezielle Art von Speicher, wo er 
sich merkt, welche Teilnehmer mit welcher Adresse an welchem Anschluss 
des Switches hängt. Wenn der "Home Manager" ein Paket an den 
Wechselrichter schickt, wird Dein PIC das Paket gar nicht zu Gesicht 
bekommen, weil der Switch-Chip das Paket nur an den Port weiterleitet, 
an dem der Wechselrichter hängt. Es gibt Switche, wo man das ganze 
einstellen kann (Stichwort "Port Mirroring" oder "RMON"), aber 
Privatleute haben solche Switche in der Regel nicht, weil sie teuer 
sind.

Selbst wenn Du diese Hürde überwinden würdest, müsstest Du Dir jetzt 
eine Software schreiben, die einzelne TCP-Streams aus Ethernet-Paketen 
herausfiltert und wieder in der richtigen Reihenfolge zusammensetzt und 
dann das Ergebnis analysiert. Kein TCP-Stack kann das so, das müsstest 
Du Dir alles von Null an selber schreiben, und das wird Dir mit Deinem 
Knowhow so nicht gelingen. Sorry wenn ich das so hart schreiben muss, 
aber das ist  zwei Nummern zu groß für Dich. Außerdem ist der PIC dafür 
nicht die geeignete Plattform, weil man für eine solche Analyse mehr 
Speicher braucht als für die direkte Abwicklung einer TCP-Verbindung. 
Sowas macht man eher auf eine PC, zumindest in der Entwicklungsphase.

Dein PIC kann nur selber eine Verbindung zum Wechselrichter aufbauen und 
den periodisch nach den gewünschten Parametern fragen und 
dementsprechend irgendwelche Aktionen ausführen. Genau das ist der Weg, 
den Du gehen wirst.

> Für den von dir beschriebenen PIC gibt es hier ein Netz Experimentier
> Baugruppen wie diese
>
> 
https://www.google.com/shopping/product/1?q=PIC18F67J60&client=safari&channel=iphone_bm&biw=414&bih=719&tbs=vw:l,ss:44&prmd=sinv&sxsrf=ALeKk03alTy42V20_5csI4sHid7RDqLdVg:1587292551406&prds=num:1,of:1,epd:2040295052239887490,paur:ClkAsKraX12jVzor6GBWhrj11R8JacT72EvFMOS8s7eyQvDv-430jFxA00LxBrWc-AnJNpNyiBYxtXXiHsPaOWRubMR8xRuyIX3-cQkfFonl7Gx4LeKNVTNfkBIZAFPVH70iZkvDR6iwjZPHdIuWP835gaaPDA,prmr:1,pid:2040295052239887490,cs:1

Das ist auch von Olimex, aber eben ohne Lochraster für eigene 
Erweiterungen.

> Mit meinem Pickit 3 sollte das ja machbar sein.

Definitiv. Eventuell musst Du den ISP-Stecker tauschen, weil Olimex 
keine nackten Stiftleisten nimmt, sondern Molex MTA-100 mit Rastnasen. 
Sollte aber kein Problem sein.

fchk

: Bearbeitet durch User
von Danny_0678 (Gast)


Lesenswert?

Huch, klingt für mich jedenfalls kompliziert und nicht so einfach zu 
lösen. Jetzt umso mehr ?

Ich stehe am Scheideweg, PIC oder Rasberry Pi 4.

Eine Empfehlung vom Meister bzw. wo ist der Weg nicht so steinig ?

Danke and schönen Sonntag

von Stefan F. (Gast)


Lesenswert?

Der Raspberry Pi ist auf jeden Fall um Welten einfacher zu 
programmieren, was die Netzwerk-Kommunikation und Zugriff auf 
Speichermedien angeht. Aber er nimmt auch mehr Strom auf und ist größer.

Das musst du selber abwägen.

von Frank K. (fchk)


Lesenswert?

Spare Dir erstmal die Hardware. Sorge erstmal dafür, dass Du eine 
funktionierende Netzwerkverbindung hast und fange auf Deinem PC mit der 
MODBUS-Kommunikation an.

Hast Du schon ein PC-Linux? Wenn nicht, dann wäre das der nächste 
Schritt. Entweder in einer virtuellen Maschine oder als Dual Boot. Um 
Linux kennenzulernen, ist der PC die beste Plattform.

Nächster Schritt: ARM Linux Hardware. Ich bin kein Freund von den 
Raspberries. Die Peripherie von denen ist einfach nur Müll, verglichen 
mit anderen Kandidaten. Mein Vorschlag:

https://www.olimex.com/Products/SOM204/A20-SOM204-EVB/

Da hast Du zwei Netzwerkanschlüsse. Damit könntest Du zum Beispiel die 
Netzwerkverbindung auftrennen und "Mann in der Mitte" spielen und Dich 
so in die Kommunikation reinhängen. Außerdem hast Du dort viel mehr und 
viel bessere Peripherie. Das Auftrennen der Netzwerkverbindung könntest 
Du auch schon mit Deinem PC und einer zweiten Netzwerkkarte machen. Wenn 
Du mit einem PC-Linux zurechtkommst, wirst Du Dich auf einem ARM-Linux 
sofort zuhause fühlen, auch programmiertechnisch.

Wenn Du dann noch auf eine Mikrocontrollerplattform willst, ist PIC32MZ 
für Dich das einfachste. Nimm das hier:

https://www.microchip.com/DevelopmentTools/ProductDetails/dm320007
plus
https://www.microchip.com/DevelopmentTools/ProductDetails/AC320004-4

Auch damit kannst Du Dich in eine Netzwerkverbindung reinhängen. Der 
Switch-Chip auf dem Aufsatzboard hat nämlich einige Tricks auf Lager. 
Und der PIC32 auf dem Board hat mit 200MHz Takt, 512k RAM, 2M Flash und 
Fast Ethernet schon einiges mehr zu bieten.

Aber da Du ja eh nur Stückzahl 1 brauchst, wirst Du wahrscheinlich bei 
den Olimex-Board hängen bleiben.

Dann noch ein Tip: Wenn Du mit Netzwerkgeschichten hantierst, kann Dir 
ein guter managebarer Switch das Leben deutlich erleichtern. Der kann 
dann nämlich beispielsweise Netzwerkverkehr umleiten, damit Du ihn Dir 
ansehen kannst. Vorschlag:

https://www.amazon.de/dp/B0747TBTDX/ref=psdc_1626220031_t2_B00I4QJRWE

Gut, ganz wenig ist das jetzt nun nicht. Aber für das, was die Kiste 
kann, zahlst Du bei HPE oder Cisco locker das dreifache. Muss ja auch 
nicht alles sofort sein.

fchk

von Danny_0678 (Gast)


Lesenswert?

Den Pi 4 könnte ich entweder mit so einer Funkdose, welche vom 
Homemanager aktiviert wird oder zu festen Zeiten ab 10 Uhr aktivieren. 
Leistungsüberschuss > 6,8 kW gibts erst ab 12 Uhr rum.

Energie wäre zum Glück nicht das Problem ?.

Danke.

von Danny_0678 (Gast)


Lesenswert?

Hallo Frank, vielen Dank für die ausführlichen Zeilen. Du scheinst 
ziemlich tief hierzu in der Materie stecken ? nach deinen Vorschlägen. 
Mit dem PIC32 werde ich wohl eher Rentner sein und die Anlage Schrott, 
als das es laufen würde. Hatte heute Kontakt mit einem Arbeitskollegen, 
er meinte auch einen Pi 4. Er hat auch was mit dem Pi im Haus was 
gemacht mit Lüftungsanlage und so. Eventuell kann er mich praktisch 
unterstützen.

Vielen Dank bis hier her.

Danke an alle und bleibt gesund !
Grüße

von Frank K. (fchk)


Lesenswert?

Danny_0678 schrieb:
> Hallo Frank, vielen Dank für die ausführlichen Zeilen. Du scheinst
> ziemlich tief hierzu in der Materie stecken ? nach deinen Vorschlägen.

Äh, ja. Ich habe mit dem ganzen Thema 1981 angefangen, als die Welt noch 
ganz anders aussah.

> Mit dem PIC32 werde ich wohl eher Rentner sein und die Anlage Schrott,
> als das es laufen würde. Hatte heute Kontakt mit einem Arbeitskollegen,
> er meinte auch einen Pi 4. Er hat auch was mit dem Pi im Haus was
> gemacht mit Lüftungsanlage und so. Eventuell kann er mich praktisch
> unterstützen.

Die meisten Leute kennen nicht anderes als die Raspberries, wenn sie an 
die kleinen Rechner denken. Ich habe einen Arbeitskollegen, den ich 
anfangs nicht von den Dingern abbringen konnte, der aber nach einem Jahr 
und etlichen Boards, die ich ihm für seine Compute Modules gemacht habe, 
versteht, warum ich explizit von den Raspberries abrate. Ich habe mir 
schon was dabei gedacht, als ich Dir das Olimex-Board empfohlen habe. 
Von der Bedienung oder der Programmierung ist das beides Linux und damit 
ziemlich ähnlich, nur das Olimex-Board hat weniger Einschränkungen in 
der Hardware, und der zweite Ethernet-Port kann für Dich echt nützlich 
sein, auch wenn es nur ein 100 MBit/s Port ist.

fchk

von Ingo S. (schicki)


Lesenswert?

Hi,

ein passendes Board kannst auch von mir inkl. Doku und Beispielen zu 
bekommen.

Ich nehme den auch sehr gerne.
https://schwabenplan.com/downloads/d03000.pdf

VG
Ingo

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.