B&R und Siemens via OPC UA verbinden

KarlMeier

Well-known member
Beiträge
48
Punkte Reaktionen
3
Zuviel Werbung?
->Hier kostenlos registrieren
Hallo miteinander,
wie bereits in einem anderen Thema erklärt muss ich aufgrund der schlechten Verfügbarkeit von Steuerungen und Komponenten meinen Siemens-Horizont erweitern und muss mich daher auch mit anderen Herstellern auseinandersetzen. Ich habe eine X20CP0482 welche anderweitig nicht benötigt wird zur Verfügung und möchte diese als dezentrale Peripherie-CPU für eine bestehende Siemens-Anlage verwenden.

Die CP0482 hat nur die Aufgabe die physischen Eingänge zu erfassen und den Signalzustand via OPC UA an meine S7 zu senden. Die Programmbearbeitung findet komplett in der S7 statt. Die Ausgänge der CP0482 werden geschalten, wenn die S7 das via OPC UA auslöst.

In der CP0482 hab ich also nur ein kleines ST-Programm geschrieben, welches die Aus- und Eingänge entsprechend zuweist. Das funktioniert auch alle einwandfrei.

Nun zur OPC UA Konfiguration… Die S7 macht den Server, die CP0482 soll als Client fungieren. Ich habe es bereits geschafft die CP0482 als OPC UA-Server zum Laufen zu bringen. Auf die einzelnen Daten/Variablen kann ich via UA-Expert zugreifen und diese auch schreiben.

Ich schaff es aber nicht die CP0482 als Client zum Laufen zu bringen. Ich hab keine Ahnung wo ich was einstellen muss um dann die entsprechenden Punkte zuordnen zu können. Ich kann nirgends eine opc-IP eintragen und ich finde auch bei den Variablen keine Möglichkeit irgendwas zu verknüpfen. Ich habe bereits stundenlang das Netz durchwühlt, Videos geschaut und Beschreibungen gelesen. Aber ich werde daraus nicht schlau….

Kann mir vielleicht bitte jemand erklären was ich einstellen muss, damit ich mit der CP0482 als Client auf die OPC UA-Daten der S7 zugreifen kann???
 

GeWer

Active member
Beiträge
32
Punkte Reaktionen
3
Ich würde auf der B&R ein OPCUA Any Device einfügen:

1656950994231.png

Die gewünschten Variablen definieren:

1656951118882.png

OPCUA Variablen auf B&R PVs mappen:

1656951211305.png

Auf der S7, hier 1512SP sieht es über UAExpert so aus:

1656951349192.png

Hier noch die Ansicht im TIA Protal:

1656951494982.png

Alternativ sollte der Zugriff auch über das DeviceSet gehen, siehe Kommentar S7-1500:

1656951621356.png
 

Anhänge

  • 1656951597032.png
    1656951597032.png
    65,7 KB · Aufrufe: 6
OP
K

KarlMeier

Well-known member
Beiträge
48
Punkte Reaktionen
3
Wow!
Da sag ich erstmal danke für diese ausführliche Anleitung!
Ich werde es morgen gleich mal ausprobieren.
Den AnyDevice hatte ich heute auch schonmal im Auge, hab dann aber nicht mehr weiterprobiert, da ich mich auf dem Holzweg sah…
 

GeWer

Active member
Beiträge
32
Punkte Reaktionen
3
Zuviel Werbung?
->Hier kostenlos registrieren
Alternativ, kannst Du das auch zu Fuß machen.

Für die AsOpcUaC Library gibt es quasi fertige Beispiele.

1656953693852.png


in der Hilfe STRG-G und bei der GUID fdace623-536c-4178-9a21-8505a24eb662 reinkopieren ;-)
 
OP
K

KarlMeier

Well-known member
Beiträge
48
Punkte Reaktionen
3
Alternativ, kannst Du das auch zu Fuß machen.

Für die AsOpcUaC Library gibt es quasi fertige Beispiele.



Anhang anzeigen 62124


in der Hilfe STRG-G und bei der GUID fdace623-536c-4178-9a21-8505a24eb662 reinkopieren ;-)
Das hab ich gestern auch schon entdeckt, hab das aber nicht so richtig kapiert. Muss ich da den Code aus jedem „Step“ kopieren und in ein Programm einfügen? Einfach fortlaufend oder brauch ich für jeden „Step“ ein eigenes Programm? Und was mach ich mit dem Code für die Variablendeklaration? Muss ich das auch jedesmal mit einfügen?
 

GeWer

Active member
Beiträge
32
Punkte Reaktionen
3
Das hab ich gestern auch schon entdeckt, hab das aber nicht so richtig kapiert. Muss ich da den Code aus jedem „Step“ kopieren und in ein Programm einfügen? Einfach fortlaufend oder brauch ich für jeden „Step“ ein eigenes Programm? Und was mach ich mit dem Code für die Variablendeklaration? Muss ich das auch jedesmal mit einfügen?

Den Code der einzelnen Schritte in den Cyclic Teil des ST Programms.

Für die Variablendeklarationen die .var Datei als Text öffnen und reinkopieren.
 
OP
K

KarlMeier

Well-known member
Beiträge
48
Punkte Reaktionen
3
Hallo zusammen,
nach ein paar Wochen Testbetrieb halte ich die OPC UA-Lösung nicht für optimal. Die Übertragung ist oft etwas träge, immer wieder mal gibt es Verbindungsabbrüche und bei Siemens startet nach jeder Änderung an einem Datenbaustein der OPC-Server neu. Was dann in der Zwischenzeit wieder zu einem Verbindungsausfall führt. Wenn das Netzwerkkabel kurz aus- und dann wieder eingesteckt wird, wird nur noch Schrott übertragen und es funktioniert gar nichts mehr. Es bleibt dann nur noch die Option die CPU neu zu starten.
Daher suche ich nach einer besseren Lösung mit den zur Verfügung stehenden „OnBoard“-Mitteln.

Hat jemand Erfahrung mit OUC (OpenUserCommunication)? Innerhalb von Siemens-Steuerungen hab ich das schon sehr oft gemacht. Das funktioniert einwandfrei und absolut problemlos und zuverlässig. Wie sieht es da auf der B&R-Seite aus? Put/Get wäre zur Not auch akzeptabel.
 
OP
K

KarlMeier

Well-known member
Beiträge
48
Punkte Reaktionen
3
Wenn ich mich im B&R-Dschungel richtig durchgesehen habe, dann benötigt man für ModbusTCP ein extra Busmodul.
Ich würde auch die CPU gegen ein Profinet-Feldbusmodul tauschen, aber das ist derzeit auch nirgends verfügbar. Ich hab nur zwei Powerlink-Feldbusmodule, die helfen mir aber nicht weiter.

Die Anlage ist intern schon in Betrieb. Ich habe die Hoffnung, dass die OPC UA-Verbindung stabil ist, solange man an den CPUs und an den Programmen nichts verändert. Vielleicht hat auch jemand nen Tipp wie man die OPC UA-Verbindung stabilisieren kann. Für die ganzen Parameter im AnyOPC hab ich nirgends ne Beschreibung gefunden.
 

GeWer

Active member
Beiträge
32
Punkte Reaktionen
3
Für Modbus TCP gibt es Libraries für die Kommunikation mit Modbus TCP Mastern AsMbTCPS und Modbus TCP Slaves AsMbTCP.

Für die Anwendung beider Bibliotheken gibt es Beispiele, die über die Toolbox zum eigenen Projekt hinzugefügt werden können:

1659199248791.png

Darüber hinaus besteht auch die Möglichkeit ähnlich zu OPC UA ein Any Device zu Konfigurieren:

1659199512520.png


Falls Du mit Busmodul einen X20BC0087 Buskoppler meinst, dann dient dieser dazu B&R X20 I/0 Module über Modbus anzusprechen. Dazu ist aber dann keine CPU notwendig.

Nur so nebenbei die Buskoppler gibt es für die verschiedensten Bussystem. Unter anderem auch Profinet und OPC UA.

Beides ist aber quasi derzeit nicht zu bekommen :-(
 

GeWer

Active member
Beiträge
32
Punkte Reaktionen
3
Zuviel Werbung?
->Hier kostenlos registrieren
Hat jemand Erfahrung mit OUC (OpenUserCommunication)? Innerhalb von Siemens-Steuerungen hab ich das schon sehr oft gemacht. Das funktioniert einwandfrei und absolut problemlos und zuverlässig. Wie sieht es da auf der B&R-Seite aus? Put/Get wäre zur Not auch akzeptabel.

Falls Du die OUC ans Laufen bekommst, wäre ich an einem Beispiel interessiert. Das wollte ich mir irgendwann mal ansehen.

Bibliotheken für TCP und UDP mit Beispielen gibt es, jedoch nicht für die Kommunikation mit einer S/:

1659200139566.png
 
OP
K

KarlMeier

Well-known member
Beiträge
48
Punkte Reaktionen
3
Falls Du mit Busmodul einen X20BC0087 Buskoppler meinst, dann dient dieser dazu B&R X20 I/0 Module über Modbus anzusprechen. Dazu ist aber dann keine CPU notwendig.

Nur so nebenbei die Buskoppler gibt es für die verschiedensten Bussystem. Unter anderem auch Profinet und OPC UA.

Beides ist aber quasi derzeit nicht zu bekommen :-(

Nicht ganz, ich habe 2 Stk. X20BC0083 und ein Busmodul für CanBus, aber beides ist für die Kommunikation mit Siemens nicht hilfreich. Genau, ich würde die CPU gegen ein Busmodul tauschen und dann die Ein- und Ausgänge direkt ansteuern, aber wie Du schon sagst, ein passendes Busmodul ist derzeit nicht zu bekommen.
Ich hab jetzt nochmal bisschen feinjustiert und ein „Notprogramm“ in der B&R-CPU programmiert, das im Notfall anspringt, wenn die OPC-Verbindung weg oder fehlerhaft ist. Somit habe ich zumindest eine kleine Sicherheit, dass es keine Schäden oder größere Probleme gibt. Da geht es um verschiedene Wasserpumpen und Wassertanks, die im Notfall leer gepumpt werden, bevor sie überlaufen. Grundsätzlich soll das aber die übergeordnete Siemens-CPU machen und die ganzen einzelnen Prozesse koordinieren und aufeinander abstimmen.
Die Modbus-Variante werde ich mir mal anschauen, vielen Dank für den Tipp.
 
OP
K

KarlMeier

Well-known member
Beiträge
48
Punkte Reaktionen
3
Falls Du die OUC ans Laufen bekommst, wäre ich an einem Beispiel interessiert. Das wollte ich mir irgendwann mal ansehen.

Bibliotheken für TCP und UDP mit Beispielen gibt es, jedoch nicht für die Kommunikation mit einer S/:

Anhang anzeigen 62588
Das sehe ich jetzt mal als Herausforderung 🙂
Hab noch ne B&R CP1484 und ne Siemens 1513 im Lager, da werde ich mich mal an OUC via TCP versuchen.
Und sollte das funktionieren lasse ich Dir alles zukommen. Fast alles…..die CPUs behalte ich 😉
 

maxder2te

Well-known member
Beiträge
763
Punkte Reaktionen
227
Zuviel Werbung?
->Hier kostenlos registrieren
Das sehe ich jetzt mal als Herausforderung 🙂
Hab noch ne B&R CP1484 und ne Siemens 1513 im Lager, da werde ich mich mal an OUC via TCP versuchen.
Und sollte das funktionieren lasse ich Dir alles zukommen. Fast alles…..die CPUs behalte ich 😉
Ich habe vor vielen Jahren mal ein Beispiel von B&R bekommen, wo die Verbindung per UDP gelöst (noch mit classic und CP343 auf S7-Seite) war.

Ich würde dir ebenfalls zu UDP raten, da TCP nur Stream-orientiert arbeitet und keine in sich geschlossenen Nachrichten kennt, d.h. du müsstest dir ein Protokoll basteln, das die Nutzdaten kapseln und quasi Beginn und Ende der Nachricht markiert. Bei UDP fiele das weg.
 

da_kine

Well-known member
Beiträge
259
Punkte Reaktionen
36
Ich würde dir ebenfalls zu UDP raten, da TCP nur Stream-orientiert arbeitet und keine in sich geschlossenen Nachrichten kennt, d.h. du müsstest dir ein Protokoll basteln, das die Nutzdaten kapseln und quasi Beginn und Ende der Nachricht markiert. Bei UDP fiele das weg.
Ich denke es ist genau anders herum. UDP bietet keinerlei Sicherungsmöglichkeiten die dir sagen ob deine Daten angekommen sind, in welcher Reihenfolge usw. UDP ist Fire and Forget...

vgl.: https://de.wikipedia.org/wiki/User_Datagram_Protocol?wprov=sfla1
 

Windoze

Well-known member
Beiträge
209
Punkte Reaktionen
111
Stimmt beides:
TCP: Streamorientiert aber gesichert das die Daten ankommen
UDP: Daten werden ohne Rückmeldung einfach rausgeschickt dafür aber Paketorientiert

Ich würde hierfür trotzdem UDP nehmen. Du schickst die Ein-/Ausgänge zyklisch zur anderen SPS. Wenn ein Paket nicht ankommt ist das nicht so schlimm, da das nächste kurz danach kommt. Auf beiden Seiten sollte mit einem Timer überwacht und entsprechend reagiert werden, wenn keine Daten mehr ankommen.
 
Oben