# Phänomen bei versenden von Daten über OPC



## Outrider (9 Februar 2022)

Habe eine 1512 F CPU mit OPC-UA
auf der anderen Seite befindet sich ein PC der sich von einem DB die Daten abholt
OPC-UA Server ist in den Eigenschaften aktiviert.
Der Partner auf der PC Seite beklagt dass er meine Signale die Dauernd auf True gesetzt sind "Prellend" sieht 
Das Dumme ist , dass er von seinem Programm auf Flanken reagiert und ihn das deshalb stört.
Was können die Gründe dafür sein ?


----------



## blackpeat (9 Februar 2022)

Der OPC-UA hat keinen Zyklus Kontrollpunkt. 
Das heißt wenn du im Programm dein Signal bearbeitest und nur am Ende des Programms TRUE ist kann es sein das er das Signal auch mal auf FALSE sieht. Weil der OPC-UA während des Zyklus synchronisiert hat.


----------



## Outrider (10 Februar 2022)

Du meinst mit 'Am Ende des Programms' Die zyklische Abarbeitung der Befehle und dann am Ende wird der Wert auf Tue gesetzt! Nur warum Prellt das Signal?


----------



## volker (10 Februar 2022)

z.b.
set
r opcausgang
u bedingung1 //annahme bedingung 1 ist nicht erfüllt
spbn m001
= opcausgang
m001: nop
...
...wenn der opc server hier aktualisiert ist der ausgang 0
... später im programm
u bedingung2 //annahme bedingung 2 ist erfüllt
spbn m002
= opcausgang
m002: nop
...
...wenn der opc server hier aktualisiert ist der ausgang 1

am zyklusende ist der ausgang 1


----------



## Outrider (10 Februar 2022)

Sorry, verstehe jetzt nicht mehr. 
Wie muss ich ein Signal z.B "Taster Ein"  sauber programmieren, so dass am Ende über den OPC was vernünftiges kommt ?!
Danke für die Mühe !


----------



## blackpeat (10 Februar 2022)

Am einfachsten nur noch an einer Stelle auf das Signal schreiben was der OPC ließt.


----------



## PN/DP (10 Februar 2022)

Am besten einen eigenen DB (Koppel-DB oder -DB-Bereich) für die OPC-Variablen erstellen und genau einmal im Zyklus die Werte in die OPC-Variablen schreiben/kopieren. Dann flackert der Wert nicht und es ist gleichzeitig die OPC-Schnittstelle sauber dokumentiert und es macht auch nichts, falls der Kommunikationspartner (versehentlich) auf die Variablen schreibt. Außerdem läßt sich die OPC-Kommunikation leichter testen, z.B. mit Testwerten unabhängig vom Prozess.

Harald


----------



## Outrider (10 Februar 2022)

Wird der Wert nicht eh nur einmal pro Zyklus in den Ausgang z.B geschrieben über das PAA auch wen der Wert die ganze Zeit auf TRUE ist ?
Einen Schnittstellen DB habe ich schon gemacht, von dort holt sich der Partner die Bits
wie würde so ein Programmstück aussehen?


----------



## volker (10 Februar 2022)

> Wird der Wert nicht eh nur einmal pro Zyklus in den Ausgang z.B geschrieben über das PAA


Das PAA schon aber der OPC-Server wird azyklisch aktualisiert. So wie er gerade Lust hat 
Am Ende vom OB1 schreibst du alle relevanten Daten in einen DB für den OPC-Server
Dann ist es egal ob Variablen im Programm ihren Status wechseln weil nur das 'ENDE' in den Schnittstellen-DB geschrieben wird


----------



## Blockmove (10 Februar 2022)

blackpeat schrieb:


> Am einfachsten nur noch an einer Stelle auf das Signal schreiben was der OPC ließt.


Und nicht als InOut-Parameter.
Bei der 1500er gibt's nämlich auch das Thema Call-by-Value - Call-by-Reference


----------



## Outrider (10 Februar 2022)

D.h. den FC wo die Schnittstellendaten stehen am ende des OB1 aufrufen !?
Danke allen hier !


----------



## Outrider (10 Februar 2022)

eine Frage hätte ich noch, habe bischen auf der Seite von Siemens geschaut
Datenaustausch zwischen S7-Station und PC-Station mit dem SIMATIC NET OPC-Server​




__





						SIOS
					






					support.industry.siemens.com
				




was mir auffiel ist, dass in den Projekten eine PC-Station eingebunde ist, auch bei den 1500ern.
Ich habe bei mir lediglich in der HW-config der CPU den OPC-UA Server aktiviert mehr nicht !
mache ich da was fealsch ? Der PC sieht die Daten ja.
Danke


----------



## Thomas_v2.1 (10 Februar 2022)

Da läuft der OPC-Server auf dem PC und der OPC-Client kommuniziert mit dem OPC-Server auf dem PC, der dann die Daten mit der SPS austauscht.
Bei dir läuft der OPC-Server in der SPS, d.h. der OPC-Client kommuniziert direkt mit der SPS bzw. dem OPC-Server der darauf läuft.


----------



## Outrider (11 Februar 2022)

OK ! Danke !


----------

