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