# Modbus Unterschiede zw. BC9000, BK90x0 und BC9050



## Macbeth (18 März 2010)

MoinMoin,
ich habe hier ein Problem:

Wenn ich eine BC9000 oder eine BK90x0 (zB BK9050) mit ein paar Klemmen dran einschalte (unkonfiguriert, im Auslieferungszustand), dann kann ich direkt auf die Klemmen-Register über ModBUS zugreifen (zB ReadDiscreteInputs 0 [ModBUS Befehl 2] liest den ersten DI-Kanal).

Ich dachte, die BC9050 würde sich genauso verhalten. Anscheinend aber nicht. In den "unteren" Modbus-Bereichen ist nicht zu finden (ReadDiscreteInputs 0 bringt immer 0). Es wird wohl nicht automatisch gemappt.
Als Workaround habe ich ein Programm geschrieben, dass die IOs auf Merkerbereiche ummappt. Dann kann man die Merker-Adressen über Modbus auslesen (ab 0x4000).

Frage: Wie kann man eine BC9050 dazu bringen, die ModBUS-Bereiche automatisch zu mappen, wie es auch die BC9000 und BK90x0 machen?

In der Doku gibt es absolut keinen Unterschied zwischen BC9050 und BC9000 beim ModBUS-gemappe.

Komisch finde ich auch den Fakt, dass das automatische ModBUS-mapping bei der BC9000 nur geht, solange kein Programm auf der Steuerung ist. In dem Moment, so nur eine Zeile Code drin ist, sind die Modbus-Bereiche leer (außer wenn man Merker definiert, s.o.) Soll das so sein???

Ich wäre dankbar um :idea: bei dieser Sache!!


----------



## Feldbus (18 März 2010)

Hi,

der BK9xx0 sind einfache Koppler die immer die Daten von allen Klemmen in das PZabbildes des Modbus kopiert. Die digitalen kommen in die digitalen Modbusfunktionen und die analogen oder komplexen Klemmen in die Register Funktionen. 
Die BC sind Steuerungen und haben erstmal keine Modbusdaten (ausgenommen der Merker Bereich der ist immer da, dieser Fehlt aber bei den BKs da diese ja nur Ein und Ausgänge haben).
Beim BC9050 zum Beispiel kann man die Prozessdaten über den SystemManager anlegen oder wenn man den SystemManager nicht nutzt findet man die Modbus In und Output Daten ab der Adresse %I/&Q..1000.
Die Funktionen 1,2,5,15 also alle digitalen Modbusfunktionen werden beim BC9050 nicht unterstützt.
Der BC9000 ist da eine Ausnehme weil man bei diesem Koppler noch mal die Klemmen zum Feldbus oder zur lokalen SPS mappen kann. Dieses kann man zum Beispiel mit dem SystemManager oder der KS2000 SW einstellen.
Ich würde empfehlen bei den BCs immer den Merkerbereich zu verwenden - dieser ist bei allen BCs gleich und ist auch nicht Watchdog getrigger und man kann lesen und schreiben wie man will.

Viele Grüße...


----------



## Macbeth (18 März 2010)

Vielen Dank!
Diese Info habe ich tagelang versucht, aus der Doku rauszuholen. Aber da ist nichts von diesen Unterschieden zu finden. War wohl etwas blauäugig von mir zu denken, dass die BC9050 nur eine speicherschwache Schwester der BC9000 wäre.
Dass bei der BC9050 nur Register-basierte ModBUS-Funktionen gehen, sollte doch wenigstens in der Doku doppelt unterstrichen drinstehen. Und dass das Default-Mapping ab 1000 anfängt ...

Auf jeden Fall weiss ich jetzt mehr und werde in Zukunft lieber die 50.- mehr für die BC9000 ausgeben.

Aber abschließend doch noch eine Frage:
Wie mache ich das "ummappen" einer BC9050 mit dem Systemmanager? Könnte ich die so konfigurieren, dass die ModBUS-Adressen so sind wie in der BC9000 defaultmäßig?

Vielen Dank!


----------



## trinitaucher (18 März 2010)

Macbeth schrieb:


> Vielen Dank!
> Dass bei der BC9050 nur Register-basierte ModBUS-Funktionen gehen, sollte doch wenigstens in der Doku doppelt unterstrichen drinstehen.


Also ich kenne die BCs nicht so gut, aber wenn man weiß, wie man die Beckhoffsche Doku zu lesen hat, dann findet man's auch:

BC9000:
http://infosys.beckhoff.com/index.p.../html/bt_ethernet modbus function.htm&id=1948

BC9xx0:
http://infosys.beckhoff.com/index.p...tml/bt_ethernet modbus function_4.htm&id=2104

Nur beim BC9000 steht explizit, dass die Funktion 2 unterstützt wird. 
... so herum musst du das lesen


----------



## Macbeth (18 März 2010)

Stimmt schon, da steht was von den Funktionen.

Aber wenn man da zB mal nach den Zuordnungen schaut findet man für:

BC9000:
http://http://infosys.beckhoff.com/index.php?content=../content/1031/bc9000/html/bt_ethernet%20modbus%20function.htm&id=1948

und für BC9xx0:

http://http://infosys.beckhoff.com/index.php?content=../content/1031/bc9000/html/bt_ethernet%20modbus%20function.htm&id=1948

Nur dass bei der BC9xx0 (wie ich aus dem letzten Posting verstanden habe) der untere Bereich ab 0x0 nicht vorhanden ist...

und dafür steht ein "*" für den Merkerbereich ab 0x4000 (* nur BC9000), aber *den* Bereich gibts trotzdem in den BC9xx0ern. 

Oh well, what the hell. Jetzt weiss ich's ja.


----------

