Moin zusammen,
für meine Hausautomatisierung arbeite ich mich immer noch in das Thema Modbus ein.
Um den Thread von @ Scorpi08 nicht mit meinen Fragen weiter zu belasten hier ein neuer
in dem ich ein paar kurze Verständnissfragen habe.
Well trotz gemachter Hausaufgaben und einer auf den Sample Script basierenden (Simple Modbus) funktionierenden
Schaltung habe ich das massive Problem die gelernte Theorie (modbus.org - General Specification + Spec RS485) MIT der Hardware (Arduino Nanos) + der Software in Einklang zu bringen. (Ich möchte es verstehen was ich hier mache und nicht nur stumpf Str+C - Str+V)
Um hier keinem unnötige Arbeit zu machen ein paar Worte zu dem was ich mir bisher erarbeitet habe.
Wenn ich das richtig gelernt habe, so habe ich
laut "Spec" (und in Klammern bezogen aufs Arduino wording) 4 Bereiche, so gennante (Coil Stat. (Dig. Out) - Input Stat. (Digit. IN) - Holding Reg. (Analog Out) - Input Reg. (Analog IN)) . Diese können mit jeh 10.000 (laut spec.) Speicherstellen adressiert und in den ersten beiden Fällen mit 1 bit (boolean) (ON/OFF) und bei den letzten beiden Fällen mit 2 byte beschrieben sein. (0-65535 unsigned int)
Über die Funktion 1,2,3,4 kann ich diese Speicheradressen auslesen, b.z.w. über Funtkion 5 und 6 Adressbereich "Coil Stat." & Holding Reg." EINZELN beschreiben, 15 & 16 dienen zum beschreiben zuvor genannter Bereiche in SERIE.
Wie die Komunikation, Fehlerevaluierung CRC, CRL, Polling, das Adressieren an einen der 1-247 Slaves, die Aufrechung der einzelnen Fehlerwerte, oder das Broadcasting (0) geschieht, auch das habe ich in der Theorie verstanden. Soweit die Vorarbeit, aber :
Und nun meine Fragen (und mögen diese sich auch noch so dämlich anhören..... ich kann es nicht ändern)
FRAGE 1 : Verstehe ich es richtig das JEDER SLAVE und der MASTER über einen EIGENEN Speicher Verfügen in dem JEWEILS diese 4 Adressbereiche gehosted sind ? (Mir ist schon klar das jedes PIC ein RAM hat) Aber ich habe noch nicht verstanden ob hier der Master die Zentrale Rolle übernimmt oder ich eben (Bildlich gesprochen) in jedem Slave ein KOMPLETTES Ablageregister habe wo die Werte ins RAM geschrieben werden. Oder verstehe ich es gar total falsch ?
FRAGE 2 : Unabhängig der Frage 1 ob jeder SLAVE + MASTER eine eigene Adressdatenbank haben so frage ich mich wie man bei dem vorhanden Speicher auf die volle Datenbankbreite kommen kann. 10K Coil Stat. *1bit (IPM-PC 8 bit = 1 byte)= 1250 byte (/1024) = 1,22 Kbyte * 2 = 2,44 KB + 10K * 2byte = 19,53 MB ??????? * 2 (Bereiche) ca. 40 MB und das 1970 ???? Na ja und da hat die Firma Motcom das wohl entwickelt. Oder denke ich hier einfach VIEL ZU KOMPLIZIERT, gar verkehrt ?
Oder ist es wirklich so trivial das ich ein INT definiere, sich der PIC um eine freie stelle bemüht und das Modbus protokoll lediglich den wert vom SLAVE zum MASTER transportiert der das dann wieder in ein definiertes (irgendwo) int schreibt ? Aber wo wäre da dann der Sinn von der Definition des Modbusses ?
Für eine Antwort wäre ich sehr dankbar.
Tom