Hallo, ich versuche seit einiger Zeit einen praktikablen verständlichen Weg zu finden, ein proffesionelles HMI / Terminal (ProFace, Hakko, Magelis etc.) mit einem PIC-16F886 o.ä. zu koppeln, bzw. ein paar Steuerbits zu übertragen. Vorzugsweise mit Modbus RTU. Ich habe einige Erfahrungen mit Hochsprachen-Compilern und auch einige Projekte realisiert, einschließlich Hardwarebau. Da ich der englischen Sprache auf Grund der frühen Geburt in einer falschen Region nicht wirklich mächtig bin, ist es schwierig Ansätze dafür zu finden. Vielleicht kann mir jemand beim Einstieg in einer nicht allzufachchinesischen Sprache helfen... ? Ich habe viele Jahre temporär SPS Programmiert und bin daher etwas verwöhnt, was interne Prozessorstrukturen betrifft. Auch mit Assembler sieht es sehr düster, eher dunkel aus. Gruesse Aspi
:
Verschoben durch Moderator
Einer der ersten Einträge bei Tante guckstu hier: www.camillebauer.com/src/download/Modbus%20Grundlagen.pdf
Erste Anlaufstelle: https://de.wikipedia.org/wiki/Modbus#RTU-Modbus Vielleicht hole ich jetzt weiter aus als nötig: RTU-Modbus recht einfach: Es ist eine Client-Server-Geschichte: Der Client (PC, Terminal) sendet entweder eine Schreib- oder Lese-Anfrage an den Server. Der Server antwortet entsprechend. Je nachdem, welche Register/Coils wie angesprochen werden sollen (Lesen, Schreiben), gibt es Functioncodes ("Funktion" im Wikipedia-Link; Bytes von 1 bis 255). Coils und Discrete Inputs sind mit Bits vergleichbar, wobei Coils Schreib- und Lesezugriff bieten, Discrete Inputs aber nur Lesezugriff. Holding Register und Input Register verhalten sich ähnlich, nur sind diese 16 Bit breit. Holding Register sind wie Coils les- und beschreibbar - Input Register nur lesbar. Jetzt würde ich auf Fragen reagieren, da ich nicht weiter weiß, was ich noch schreiben könnte.
Zunächst Danke für Eure Antworten. Den sehr ausführlichen Beitrag von camillebauer habe ich mir schon mehrfach durchgelesen, dies bringt mich jedoch zunächst nicht wirklich weiter, da mir mächtig Vorwissen zur Umsetzung fehlt. 1. Zunächst wie gestalte ich die Hardware am PIC, ist z.B. eine Quarztaktung notwendig ? ,,,oder reichen 8 Mhz der internen Oszis aus ? Benötige ich einen speziellen PIN mit besonderen Eigenschaften oder kann ich ähnlich I2C-Bus nahezu jeden nehmen ? 2. Vorgänge in parallelen Bussen mit entsprechenden Steuerleitungen sind mir verständlich, ein serieller Bus aber bedingt sicher eine exakte Taktung auf beiden Seiten, bzw. eine Takt-Synchronisation. Das erscheint mir ungeheuer schwierig in einer Hochsprache, wenn es dafür keine speziellen Befehle gibt. Vielleicht hat ja jemand mal ein Tutorial zu solchen Dingen geschrieben. Für den wirklich Anfänger. Bisher habe ich bei der Beschreibung von LCD-Datenanzeige auf Bibliotheken zurückgreifen können. Nur sind das ja reine Sendevorgänge. Dateneingaben wurden mittels Tastaturmatrix getätigt. Nun ist die Welt des seriellen Datenaustausches mir prinzipiell klar, aber das wars auch schon. Zumal ich nicht weiß, wie man sich da rantasten kann. Bei SPSteuerungen sehe ich jedes Zwischenergebniss, beim µC muss es funktionieren, oder gibt es da Tools für Debug-Möglichkeiten ? Ich denke die Verarbeitung wird ohne eine maschinennahe Routine nicht gehen. Nur bin ich dafür definitiv zu doof... leider. Vielleicht gibt es auch Literatur dazu, die wirklich unten anfängt. Denn, ich merke an den Antworten, dass zuviel vorausgestzt wird. Ich fange hier bei Nahe Null an und dazu werden die Forenmitglieder nicht die Zeit haben, jeden Detailschritt zu erläutern... Ich verbinde den Bus mit einem I/O-Tristate-PIN und dann ....schaue ich mir das Datenmuster des Busses am Oszi über einen parallel programmierten Ausgang an, vergleiche beide Signale und freue mch, das der PIC die empfangenen L/H Zustände wieder ausgibt. Um z.B. eine Codebeispiel für I2C umzustricken fehlen mir schon die Grundlagen. Prinzipiell müsste das doch ein interressantes Thema sein. Ich wundere mich, das ich darüber ausser 2-3 YouTube Videos nichts finde. Grüsse