Zwei BC9000 koppeln

HofMar

Level-1
Beiträge
4
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich habe hier zwei BC9000 welche zur Zeit eigenständig laufen. Nun gibt es aber eine neue Bedingung, wo ich die Eingänge der Busklemmen der einen BC9000 auch bei der anderen BC9000 benötige. Dazu muß ich diese beiden BC9000 koppeln. Daher werde ich beide BC9000 im gleichen Ethernet plazieren. Aber wie mache ich die Koppelung nun am Besten? Wenn ich das richtig verstanden haben, gibt es drei mögliche Ansätze:
1) Netzwerkvariablen, wobei ich mir nicht sicher bin, ob das mit zwei BC9000 auch klappt. Bis jetzt waren da meistens andere SPSen im Spiel.
2) SPS-Variablen, hierbei scheint es aber eine hierachische Struktur zu geben. Also kann nur die Haupt-SPS auf die Neben-SPS zugreifen, bzw. wird die Neben-SPS nur noch zur Klemmenbox degradiert.
3) Direkte Programmierung mittels ADS, was sicherlich am auswendigsten ist, da alles per Hand gemacht werden muß.

Was läßt sich überhaupt mit BC9000 machen? Was ist davon am einfachsten. Ich würde gerne die beiden BC9000 weiterhin so laufen lassen und nur zuzätzlich die Eingangsklemmen der einen SPS bei der anderen SPS im Zugriff haben. Möglichst auch wechselseitig. Dann würden beide Systeme auch im Fall einer Ethernet-Unterbrechung weiterlaufen. Einzig die aktuellen Eingangszustände der jeweils anderen SPS lägen nicht vor.

Würde mich über jeden Hinweis freuen.

Gruß Martin
 
Hi,

der BC9000 ist die unterste Leistungsklasse bei Beckhoff.
Da hat man keinen System Manager, muss fix Adessieren usw.
Die einzige Möglichkeit direkt zwischen den beiden Daten auszutauschen ist ADS.
Ich würde einfach eine Struktur anlegen (in beiden Programmen die gleiche) und dann per ADS lesen/schreiben.
Ist nur 1 FB und du kannst jede Menge Daten in die Struktur packen.
Good luck
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

habe für solche Fälle bis jetzt immer den direkten Prozessabbildzugriff über ADS (ADS Port 800), mit Hilfe der Indexgruppen (Eingänge sind Indexgruppe 0xF020, Ausgänge 0xF030 und Merker 0x4020) genutzt zwar etwas unkomfortabel, aber funktioniert ganz gut. Musst nur drauf Achten, dass wenn du Ausgänge auf dem entfernten BC schreiben willst, dass diese nicht von diesem entfernten BC selbst geschrieben werden da diese sonst überschrieben werden.
 
Hallo,

ersteinmal Danke für die Tips. Ich habe das mit dem ADS auf Port 800 auch schon einmal hinbekommen. Aktuell nutze ich noch den Merkerbereich (0x4020 bzw. 0x4021) und schicke bei einer Änderung ein Bit von einer BC9000 zur anderen.
Mit VBScript versuchte ich zu Testzwecken analog über ADS auf die Eingänge mit 0x0F020 zuzugreifen, bekam jedoch immer den Fehler 0x98110745. Mit dem gleichen Skript klappt ein Zugriff auf die Merker mit 0x4020.
Daher stellt sich die Frage, ob ich überhaupt auf Eingänge, welche sonst von der BC9000 gelesen und ausgewertet werden auch fremd mittels ADS zugreifen kann? Für die Skriptzugriffe benötige ich eine Konfiguration im System-Manager, wo die betreffende BC9000 auch korrekt als PLC-Klemme eingetragen ist. Damit werden dort jedoch keine weiteren Informationen zu den Eingängen der Klemme angezeigt oder verwaltet. Daher vermute ich, daß ein Zugriff auf solche Klemmen via ADS auch nicht möglich ist. Wenn ich mir jedoch die Antwort von dbentz durchlesen, sollte es klappen, oder?
Dann noch eine allgemeine Frage zu dem ADS und seine Anwendung auf einer BC9000. Es macht vermutlich keinen Sinn, in jedem Zyklus eine ADS-Kommunikation von einer BC9000 zu anderen stattfinden zu lassen. Wie lange dauert eine solche Datenübertragung überhaupt?
Wie ich oben schon schrieb, geht es mir im Prinzip darum, daß ich die Eingänge der einen BC9000 in der anderen zur Verfügung habe. Daher wäre mein Ansatz, die Eingänge einer BC9000 zu überwachen und bei Änderung der anderen BC9000 in einem Merkerbereich zu übertragen. Gibt es Bedenken gegen dieses Verfahren oder evtl. einen besseren Ansatz?
In der Beckhoff-Library bin ich auf die ereignisgesteuerten Übertragungsbausteine FB_Write<Type>OnDelta gestoßen. Das klingt fast nach meinem Vorhaben, jedoch hätte ich das gerne für einen größeren Datenblock. Gibt es da etwas fertig?
Und noch eine Frage, macht es Sinn, die Datenübertragung zu "optimieren", also nicht geänderte Eingänge auch nicht zu übertragen? Sollte man in einer solchen Situation sogar aus einem großen Block, wo nur am Anfang und am Ende eine Änderung erfolgt, zwei Blöcke alleinig nur mit den geänderten Werten erzeugen?
Wie sind Eure Erfahrungen im Bereich der ADS-Programmierungen?

Gruß Martin
 
Zurück
Oben