Forum: Gesperrte Threads PIC mittels Modbus RTU an einem HMI /MMI


von Fred F. (aspus)


Lesenswert?

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
von Christian M. (Gast)


Lesenswert?


von Schorsch X. (bastelschorsch)


Lesenswert?

Einer der ersten Einträge bei Tante guckstu hier:
www.camillebauer.com/src/download/Modbus%20Grundlagen.pdf

von STK500-Besitzer (Gast)


Lesenswert?

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.

von Fred F. (aspus)


Lesenswert?

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

Dieser Beitrag ist gesperrt und kann nicht beantwortet werden.