Wie Du das in C gestalten kannst weis ich nicht. Mit VB bist du in manchen Dingen besser bedient. Beides hat seine Vor- und Nachteile. Bei der Performance sieht es genauso aus. Das Eine kannst Du besser mit C das Andere besser mit VBS realisieren.
Zu den Zeitstempeln:
Nachdem ich mich nun einige Zeit mit dem Thema beschäftigt habe kann ich dazu folgendes konstatieren:
In der WinCC Runtime bekommst Du keinen direkten Zugriff auf die verschiedenen Properties der Variablen auf dem OPC Server(habe bisher nur mit OPC getestet). Als gutes Beispiel nehmen wir das Alarm Contral. Wenn du es im Graphicsdesigner projektierst dauert es einen Kleinen Moment bis es sich vollständig initialisert hat (jawohl es initialisiert sich) und greift auf die SQL WinCC Instanz zu um alle bisher aufgelaufen Alarme anzuzeigen. Genau so wird es auch in der Runtime funktionieren. Es entsteht allerdings dadurch der Eindruck, dass das Control selbst mit dem OPC kommuniziert. Das ganze wird natürlich dadurch gestärkt, dass dir Millisekunden Werte angezeigt werden. Tatsächlich bekommt das Control vermutlich nur eine Aktualislierungsmeldung von dem Prozess, der einen aufgelaufenen Alarm loggt und in die Datenbank schreibt. Dadurch wird das Control veranlasst einen Refresh durchzuführen. Dasselbe dürfte auch für das Table Control mit den TagLoggingFast Werten gelten.
Wenn Dir die Zeitangeben Sekundengenau reichen kannst du also sehr gut mittels VB dein Ziel erreichen, musst du es genauer haben hilft nach meinem derzeitigen Kenntnisstand nur der externe Zugriff auf OPC gebunden an ein DataChange Ereignis. Ich bin derzeit dabei ein Script zu schreiben, dass die opcdaauto.dll instanziert und den timestamp direkt vom OPC für die gewünschte variable abholt, wird aber noch ein wenig dauern.
regards