PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Zum Verständnis: OPC, Datenpunkte ?



Unique24
28.10.05, 07:53
Hallo

Jetzt habe ich schon oft über OPC gelesen, doch was es damit auf sich hat, ist mir noch nicht ganz klar.
Hab ich es Richtig verstanden:

OPC Server:
Verbindungsglied zwischen EIB und OPC. Wandelt die Telegramme des Buses in OPC Sprache (?) um.
Je nach OPC Server muss die passende Hardware zum Bus unterstützt werden.

OPC Client:
Verbindungsglied zwischen Software (Visu) und OPC Server.

Muss nun der Client den Server unterstützen, oder kann man jeden OPC Clienten (Die bei den Visus dabei sind) jeden OPC Server ansprechen?


Datenpunkte ließt man auch immer, wenn man sich die Visu-Programme anschaut. Was ist damit gemeint?
Diese Datenpunkte sind ja begrenzt. Wie kann man errechnen (abschätzen) wieviele man braucht?


Wäre nett wenn jemand die Begriffe kurz erläutern könnte.

Danke

Hannes

GLT
28.10.05, 10:27
Hallo Hannes,

da ich nicht weis, welche Vorkenntnisse Du besitzt, versuche ich mal ganz einfach.

Was ist OPC?
OLE (also Object Link and Embedding) for Process Control

Die Technologie OLE verwendest Du z.B. wenn Du in Word ein Excel-Objekt einfügst. Dabei gibt es die Verknüpfung (die Exceltabelle wird nicht Bestandteil des Worddokuments oder Einbetten, die Tabelle wird eigenes Bestandteil des Dokuments und Veränderungen der ursprünglichen Exceltabelle werden im eingebetteten Objekt nicht mehr nachgeführt.

Bei OPC wurde die Darstellung der Daten nur den Erfordernissen der Prozessautomatisierung entsprechend angepasst.

Vermutlich hast Du die Technologie "COM/DCOM" somit schon des öfteren verwendet :)


...OPC Server:
Verbindungsglied zwischen EIB und OPC. Wandelt die Telegramme des Buses in OPC Sprache (?) um.
Je nach OPC Server muss die passende Hardware zum Bus unterstützt werden.
So ungefähr. Für jedes (Bus-)System muss nicht nur entsprechende Schnittstellenhardware, sondern auch der jeweils geeignete OPC-Server (quasi ein Treiber) installiert werden.

OPC Client:
Verbindungsglied zwischen Software (Visu) und OPC Server.
Die Visualisierungssoftware ist der Client. Aber auch andere Software, wie z.B. EXCEL können OPC-Clients sein.

Muss nun der Client den Server unterstützen, oder kann man jeden OPC Clienten (Die bei den Visus dabei sind) jeden OPC Server ansprechen?
Ist der Client OPC-fähig, dann gilt dies generell. Nur Versionsstände müssen u.U. beachtet werden.
[/QUOTE]Datenpunkte ließt man auch immer, wenn man sich die Visu-Programme anschaut. Was ist damit gemeint?
Diese Datenpunkte sind ja begrenzt. Wie kann man errechnen (abschätzen) wieviele man braucht?...[/QUOTE]
Datenpunkte bilden die softwäreseitige Sicht auf die Hardwareein-/ausgänge ab.
Ein Beispiel:
Du schliesst einen Taster an einen Binäreingang an; dann stellt der Binäreingang einen Datenpunkt dar, der diesen Taster repräsentiert. Würdest Du an einem Schaltaktor die zu schaltende Lampe anschliessen, dann wäre dies ein weiterer Datenpunkt, der dann eben die Lampe repräsentiert.

Wieviele benötigt werden, hängt nun einfach von den erforderlichen Ein-/Ausgängen ab, die Du zum Aufbau Deiner Steuerung/Regelung benötigst. Um die erforderlichen Datenpunktmenge für die Visu zu ermitteln, brauchst Du nur diejenigen Datenpunkte zu addieren, die in der Visu tatsächlich dargestellt werden sollen.

Datenpunkte werden unterschieden in:
Eingang binär
Ausgang binär
Eingang analog
Ausgang analog
Zählwerte

Davon gibt es reale (Hardware) und fiktive. Die fiktiven werden in einer Steuerung "berechnet", wie z.B. eine gemittelte Temperatur, Stellwert usw.

Die OPC-Seite: http://www.opcfoundation.org (http://www.opcfoundation.org/)


mfg
Gerhard

Meudenbach
28.10.05, 10:37
OPC Server:
Verbindungsglied zwischen EIB und OPC. Wandelt die Telegramme des Buses in OPC Sprache (?) um.
Je nach OPC Server muss die passende Hardware zum Bus unterstützt werden.

... das gilt nicht nur für EIB. OPC - Server gibt es für nahezu jede Technologie


OPC Client:
Verbindungsglied zwischen Software (Visu) und OPC Server..

Muss nun der Client den Server unterstützen, oder kann man jeden OPC Clienten (Die bei den Visus dabei sind) jeden OPC Server ansprechen?

Da musst Du lediglich darauf achten, dass die Standards zueinander passen.
Bzw. das der Client entsprechende Standards ( v 1.0 + 2.0 ) unterstützt. Gute Clients unterstützen beide standards.



Datenpunkte ließt man auch immer, wenn man sich die Visu-Programme anschaut. Was ist damit gemeint?
Diese Datenpunkte sind ja begrenzt. Wie kann man errechnen (abschätzen) wieviele man braucht?

Datenpunkt:
Steht eigentlich auch für Prozessvariable. Hinter diesem Begriff steckt eigentlich gar nicht so viel :rolleyes: ... eine Gruppenadresse in der ETS ist zB 1 Datenpunkt.
Nun ist einem Leitsystem aber egal, welches System hinter einem Datenpunkt steckt und durch diesen Begriff erhält man lediglich eine "Vereinheitlichung". In der OPC-Welt spricht man dann auch oft von "Tags" oder "Items".

Das mit dem berechnen ist auch nicht so schwer... In der ETS erhälst Du ja ganz schnell die Anzahl der vergeben Gruppenadressen. Nur werden meisst nicht alle benötigt. Grundsätzlich setze ich OPC-Server ein, die in der Anzahl der Datenpunkte nicht eingeschränkt sind. Je nach Anwendung und deren Lizenzmodel muss ich dann zwischen Mehrkosten und Mehraufwand abwägen.

Gruss

Unique24
28.10.05, 11:29
Hallo Mike und Gerhard

Super Erklärung ... danke

Aber wie ich sehe, braucht ein Privatmensch kein OPC, oder?
Vor allem die Lizenzkosten und jede Visu unterstützt ja den direkten seriellen/USB Zugang.

Datenpunkte:

Hab ich richtig verstanden, das damit nur die aus/eingehenden gemeint sind?
So wie beim Homeserver gibt´s ja auch interne, die zur Berechnungen nur im Programm gespeichert werden. Zählen da diese auch mit?
Also z.B.:
4 berechnete Helligkeitsschwellen intern sind schon 4 Datenpunkte.
Auch kann ein Win-Programm über Tastenkombinationen gesteuert werden:
ALT+STRG+F1 = Licht Küche an
Zählt diese interne auch als Datenpunkt?

Hintergrund zu den ganzen Fragen ...

Momentan läuft meine Visu über vb.net. Klappt auch ganz gut, aber wenns erst mal 100 Logikfunktionen und gleichviele Zeitgesteuerte Aufgaben gibt, zu programmieren, ist es nicht so einfach dieses Ressourcen-arm zu programmieren.
Deswegen schaue ich mich so langsam nach einer Visu um ;-)

Danke

Hannes

GLT
28.10.05, 16:03
....
Aber wie ich sehe, braucht ein Privatmensch kein OPC, oder?
Vor allem die Lizenzkosten und jede Visu unterstützt ja den direkten seriellen/USB Zugang.
Dass jede Visu den direkten Zugang bereitstellt wäre mir jetzt neu :confused:

Ob jemand OPC benötigt oder nicht, hängt davon ab, welches Ziel er verfolgt. Braucht jeder Privatmensch unbedingt eine Visualisierung? Wohl kaum! Und so verhält es sich halt auch mit OPC.


Datenpunkte:
Hab ich richtig verstanden, das damit nur die aus/eingehenden gemeint sind?
So wie beim Homeserver gibt´s ja auch interne, die zur Berechnungen nur im Programm gespeichert werden. Zählen da diese auch mit?
Also z.B.:
4 berechnete Helligkeitsschwellen intern sind schon 4 Datenpunkte.
Auch kann ein Win-Programm über Tastenkombinationen gesteuert werden:
ALT+STRG+F1 = Licht Küche an
Zählt diese interne auch als Datenpunkt?
Wenn der Berechnungswert nur auf einen bereits vorhandenen Datenpunkt geschrieben wird, würde man einfach von einer Variablen reden, aber im Prinzip, kann/ist die Variable ein Datenpunkt.

Normalerweise werden nur diejenigen Datenpunkte in der Lizensierung berücksichtigt, die entweder über die Hardware oder bei Kopplungen über Schnittstellen an die Visu herangeführt bzw. dann in der Visu verarbeitet werden sollen. Die internen (also innerhalb der Visu berechneten Werte) bleiben in aller Regel davon unberührt.
Deshalb gilt: Frag den Hersteller/Lieferanten der gewünschten Visu, wie das Lizenzmodell in dem betreffenden Fall lautet.

Momentan läuft meine Visu über vb.net. Klappt auch ganz gut, aber wenns erst mal 100 Logikfunktionen und gleichviele Zeitgesteuerte Aufgaben gibt, zu programmieren, ist es nicht so einfach dieses Ressourcen-arm zu programmieren. ....
Also mehr Freiheit als selbst programmiert, wirst auf dem Markt wohl kaum finden ;)
Überlicherweise scheitern die meisten "Programmierer" schon am Anfang.

Wenns nicht mehr ist, als die von Dir angegebene Grössenordnung würde ich da kein Problem sehen.

Du wirst ja wohl nicht auf die verrückte Idee kommen, 100 Timer einzusetzen:cool:

mfg
Gerhard

Filo
30.10.05, 12:27
Als kleine Ergänzung:

OPC ist nicht unbedingt OPC, weil es hier verschiedene "Arten" gibt, wie zum Beispiel DA1.x DA2.x (Data Acces) oder A&E (Alarm und Events).
Ich denke aber, dass die meisten OPC Server DA können.

Unique24
30.10.05, 18:04
Hallo Gerhard

Also ich dachte schon, das so ziemlich jede Visu einen Buszugang via seriell bietet. Muss mich dann da wohl, wenns soweit ist, genauer hinsehen.

100 Timer ... darum gehts zu einem Teil.

Die Programmierung der Timer und Logikfunktionen.
Wie man eben, einen Resourcen schonenten Ablauf der Überrüfung programmiert.
Ich möchte nicht alle Sekunde testen, ob Übereinstimmungen sind.

Das wird am besten wohl über event´s gemacht. Dazu habe ich aber bis dato noch nicht den nötigen Wegweiser gefunden, um dies zu integrieren.

For allem die Bedingungen für auswertungen von Flanken stellt mir eine kleine Hürde.

Vielleicht geht ja in Zukunft noch der Knoten auf, aber das Basiskonzept ist schwer "gscheit" zu programieren.

Ansonsten habe ich in vb.net nicht soo grosse Probleme.
Mein Sonnenstand´s Programm ist eigentlich auch schon fertig. Bei Zeit werde ich dann die Grenzen für die Fenster festlegen.

Oder hat Gerhard einen Beispielcode für Abarbeitung der Logikfunktionen für vb.net ? ;-)

Gruß Hannes

GLT
30.10.05, 23:47
... ich dachte schon, das so ziemlich jede Visu einen Buszugang via seriell bietet....
Was hätte das mit OPC zu tun?
Nicht alles was "seriell" zugreift, macht dies per OPC und nicht alles was per OPC zugreift macht dies über die serielle Schnittstelle.

Gehe zurück auf LOS, aber ziehe keine 4000,-- Euro ein;)


100 Timer ... darum gehts zu einem Teil.
und wenn Du 1000 Zeitschaltfunktionen brauchst, brauchst Du nicht 1000 Timer ;)

Mal ein Denkanstoss:
Deine Zeitschaltühren sollen mit einer Auflösung von 1min einstellbar sein, dann bräuchtest Du zum Aufruf der Zeitschaltkatalog-Routine nur einen Timer mit 1 min Startzeit. Dieser könnte wahrscheinlich 99% deiner Zeitschalteinträge verarbeiten. Ein evtl. 2ter Timer mit geringerer Auflösung käme dann für Deine Sonderfälle zum Zuge.


Das wird am besten wohl über event´s gemacht. Dazu habe ich aber bis dato noch nicht den nötigen Wegweiser gefunden, um dies zu integrieren.
Damit Dir die Forumgemeinde mit evtl. Tipps Hilfe geben könnte, müsste man erst mehr über das Projekt erfahren (Schnittstelle, Geräte, Anbindung, Zielsetzung usw.)


For allem die Bedingungen für auswertungen von Flanken stellt mir eine kleine Hürde.
Je nach Projektaufbau könntest Du die Werte in einer Static zwischenspeichern; beim nächsten Durchlauf dann entsprechend vergleichen (Hinweis: bei einer Variablen, die innerhalb der Sub deklariert wird, geht der Wert nach Ende der Sub verloren)
Es wären natürlich noch andere Lösungen möglich: Werte in eine Seq-Dat, Random, Datenbank usw.


Vielleicht geht ja in Zukunft noch der Knoten auf, aber das Basiskonzept ist schwer "gscheit" zu programieren.
Ich drück Dir die Daumen, Kopf hoch :)



Oder hat Gerhard einen Beispielcode für Abarbeitung der Logikfunktionen für vb.net ?
Ich denke, dass Du für eine Logikfunktion nun eigentlich keinen Beispielcode mehr benötigen dürftest, oder wie hast Du sonst Dein Sonnenstand-Programm hinbekommen? Oder hast Du das geklaut?:D

Diesen Tread VB6.0 Visualisierung ( http://www.eib-userclub.de/forum/showthread.php?t=2641&page=1&pp=15&highlight=programm) kennst Du ja, oder?

mfg
Gerhard

Unique24
31.10.05, 07:20
Guten Morgen Gerhard


Was hätte das mit OPC zu tun?
Nicht alles was "seriell" zugreift, macht dies per OPC und nicht alles was per OPC zugreift macht dies über die serielle Schnittstelle.


Ich meinte das nicht im Zusammenhang mit OPC, sondern der "Standartzugang" zum EIB via seriell.



und wenn Du 1000 Zeitschaltfunktionen brauchst, brauchst Du nicht 1000 Timer ;)

Mal ein Denkanstoss:
Deine Zeitschaltühren sollen mit einer Auflösung von 1min einstellbar sein, dann bräuchtest Du zum Aufruf der Zeitschaltkatalog-Routine nur einen Timer mit 1 min Startzeit. Dieser könnte wahrscheinlich 99% deiner Zeitschalteinträge verarbeiten. Ein evtl. 2ter Timer mit geringerer Auflösung käme dann für Deine Sonderfälle zum Zuge.


Genau sowas ähnliches habe ich auch vor. Die Schaltpunkte hinterlege ich entweder in einem Array oder einer DB.



Damit Dir die Forumgemeinde mit evtl. Tipps Hilfe geben könnte, müsste man erst mehr über das Projekt erfahren (Schnittstelle, Geräte, Anbindung, Zielsetzung usw.)


Dachte dies sei das "falsche" Forum für vb.net Hilfe ;-)
Werde dies aber Nachholen. Mein Umbau befindet sich in der Endphase (Endlich) und meine Frau (und auch ich selbst) wollen einen Endspurt hinlegen bis Feber 2006



Je nach Projektaufbau könntest Du die Werte in einer Static zwischenspeichern; beim nächsten Durchlauf dann entsprechend vergleichen (Hinweis: bei einer Variablen, die innerhalb der Sub deklariert wird, geht der Wert nach Ende der Sub verloren)
Es wären natürlich noch andere Lösungen möglich: Werte in eine Seq-Dat, Random, Datenbank usw.


Ja, ich dachte mir auch schon, den "Vorwert" in eine seperate Variable zu stecken. Da gibts ja auch den Stack (?) Befehl. Denke das er so heißt.
Wo der letzte Eintrag sich oben anreiht und immer die "alten" nachrücken.



Ich drück Dir die Daumen, Kopf hoch :)


Merci



Ich denke, dass Du für eine Logikfunktion nun eigentlich keinen Beispielcode mehr benötigen dürftest, oder wie hast Du sonst Dein Sonnenstand-Programm hinbekommen? Oder hast Du das geklaut?:D


Klauen wäre einfach gewesen als die ganzen Formeln einzubauen :d-lol:
Aber ein netter Schweizer hat mir die Formeln zugesteckt und auch Fragen beantwortet.


Aber eine Function zu basteln ist kein Problem. Ich habe das Problem, das ich nicht weiß, wie ich die ganzen Überprüfungen (Logik) am schnellsten auf Ihren Wahrheitswert überprüfen soll.
Wie gesagt, das ganze in einen eigenen Threat laufen lassen und dann immer eine Schleife drüberlaufen, belastet das System wohl ZU sehr.

Vielleicht werde ich hier nochmal ein paar Zeilen darüber schreiben. Momentan leider zu wenig Zeit um weiter in vb.net zu wülen.

Schönes Halloween

Hannes