OPCServer:Optimierung

Aus IBHsoftec Wiki
Version vom 25. Juni 2012, 07:33 Uhr von Joscha (Diskussion | Beiträge)

(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

Optimierung der Zugriffe mit dem IBH OPC Server V4.x

Der IBH OPC Server versucht standardmäßig die Zugriffe auf die Steuerung zu optimieren. Dies bedeutet, dass zu lesende Variablen automatisch vom Server in Bereiche zusammengefasst werden, um diese blockweise von der Steuerung zu lesen. Dies geschieht automatisch und hat auf den Client keinen Einfluss.


Meldet der Client beispielsweise den Merker 2.0 und den Merker 23.5 beim OPC Server an, so beginnt der Server die Merkerbytes 2 bis 23 in einem Block von der Steuerung zu lesen, da dies bedingt durch die Kommunikationsprotokolle mit der Steuerung schneller geht, als beide Bits einzeln zu lesen.


Das Zusammenfassen in Datenblöcke ist nach Operandenbereichen organisiert, die in separaten Anforderungen von der Steuerung gelesen werden. Dies bedeutet, dass die Zugriffe innerhalb des PAE (Eingänge), des PAA (Ausgänge), der Merker und jeder Datenbaustein separat zu blockweisen Anforderungen zusammengefasst werden.


Beispiel: Es sollen die folgenden Variablen E2.0, E23.5, A2.0, A23.5, M2.0, M23.5, DB10.DBX2.0, DB10.DBX23.5, DB20.DBX2.0, DB20.DBX23.5 gelesen werden.


Der IBH OPC Server erzeugt daraus 5 Anforderungen an die Steuerung, die jeweils blockweise gelesen werden. Im Beispiel sind dies die Bereiche EB2 - EB23, AB2 - AB23, MB2 - MB23, DB10.DBB2 - DB10.DBB23, DB20.DBB2 - DB20.DBB23, da dies schneller geht, als die einzelnen Bits zu lesen.


Die Optimierung kann auch ad absurdum geführt werden!


Beispiel: Es sollen nur die folgenden Variablen E2.0, E1023.5, A2.0, A1023.5, M2.0, M1023.5, DB10.DBX2.0, DB10.DBX1023.5, DB20.DBX2.0, DB20.DBX1023.5 gelesen werden.


Der IBH OPC Server erzeugt daraus ebenfalls 5 Anforderungen an die Steuerung, die jeweils wieder blockweise gelesen werden. Im Beispiel wären dies die Bereiche EB2 - EB1023, AB2 - AB1023, MB2 - MB1023, DB10.DBB2 - DB10.DBB1023, DB20.DBB2 - DB20.DBB1023. Nun werden allerdings pro Bereich etwa 1 kByte Daten unnötig gelesen. Dies hat zwar auf die Funktion selbst und für den Client keinen Einfluss, belastet aber die Kommunikationsverbindung stark und reduziert die Performance, da wesentlich mehr Daten als benötigt gelesen werden.


In einem solchen Fall ist es viel sinnvoller, die benötigten Variablen per SPS Programm in einen, auf das Wesentliche reduzierten, Datenbaustein "einzusammeln". Der IBH OPC Server liest und beschreibt dann nur die Variablen dieses "Datenfach" DBs. Wird das Verteilen der geschriebenen Werte ebenfalls per SPS Programm erledigt, kann die interne Optimierung wieder voll greifen und eine optimale Performance wird erreicht.


Der Datendurchsatz beträgt bei einem S7-IBHLink etwa 100 ms bei einem Block von 150 Bytes. Bei Baugruppen wie dem Ethernet CPx43 ist der Datendurchsatz höher. Bei seriellen Baugruppen wie einem PC Adapter oder einer S5, die nur mit 9600 Baud arbeitet ist der Datendurchsatz niedriger. Die verwendete Kommunikationsbaugruppe hat also ebenfalls wesentlichen Einfluss auf die Performance. Dies sollte bei der Auswahl und der Anordnung der Variablen berücksichtigt werden.