WinCC c script Objekt variablenanbindung auslesen

zernix

Level-1
Beiträge
29
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi Leute habe eine frage
folgendes habe ich per cscript Dynamisiert

Klicke ich auf die analogwertanzeigen in den wincc Bildern übergibt mir der klick per c script Funktion

Bezeichnung kks und trendarchivanbindung als Char*

klicke ich nun auf den Trend übernimmt er die Daten der vorher angeklickten Messungen und zeigt nur diese an als kurven

Funktioniert einwandfrei ist aber etwas viel Fleißarbeit wenn ich alle 600 analogmessungen mit der Funktion verschaltet muss und händisch alle 3 Dinge bez kks Anbindung eintippen muss

Da ja im top Tool bei uns immer Bezeichnung kks stehen und Anbindung gleich kks Name ist wollte ich wissen ob ich aus einem Objekt tiptool oder variablennamen von zb eben analogwertanzeigen auslesen kann
Zb ich nehme eine EA Anzeige und verschalte die variable ANA kann ich per c script auslesen das bei dieser
EA Anzeige die variable ANA heisst bzw vllt auch ihren Wert auslesen

Vielen Dank im voraus
 
Wenn du ein Ereignis z.B. beim Anklicken eines Objekts auslöst, dann bekommst du in den Parametern den Namen des Objekts mit übermittelt.
Den kannst du dir dann z.B. um weitere Namen daraus abzuleiten verwenden, oder damit kommst du auch an diverse andere Eigenschaften des Objekts. Die einzige Schwierigkeit die dann noch besteht, ist die Property-Bezeichnung der Eigenschaft herauszufinden. Selbst wenn man die WinCC-Oberfläche auf englisch umstellt, gibt es immer noch kleine Unterschiede.

Über die GetLink-Funktion gelangst du auch an den Variablennamen der an einer Eigenschaft verschaltet wurde.

So kommst du an den Objektnamen, den Tooltiptext und die verlinkte Variable an der Eigenschaft "Ausgabwert" eines EA-Feldes:
Code:
void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
  char *tooltip;
  LINKINFO info;

  printf("Objektname: %s\r\n", lpszObjectName);

  tooltip = GetPropChar(lpszPictureName, lpszObjectName,"TooltipText");
  printf("TooltipText: %s\r\n", tooltip);

  if (GetLink(lpszPictureName, lpszObjectName,"OutputValue", &info)) {
    printf("OutputValue linked variable: %s\r\n", info.szLinkName);
  } else {
    printf("GetLink failed!\r\n");
  }
}}
 
Zuviel Werbung?
-> Hier kostenlos registrieren
vielen dank schoneinmal klappt bestens



nur noch eine kurze frage bezüglich Standard C

der sinn ist wie folgt: im tiptooltext stehen quasi alle Daten die ich benötige für die verschiedenen Textfelder

zb

J_73_NAC20_CT001 Dampfeinspeisungs Temperatur vor Kessel Anlage 73

die ersten 16 Zeichen sind IMMER die KKS das heisst ab zeichen 18 beginnt der KLARTEXT
ist es möglich erst ab Zeichen 18 bis zb 32 den String von dem TipToolText in eine Variable Char* zu schreiben
und umgekehrt die ersten 16 Zeichen in eine andere Variable?

von strnstrok über strncat zum trennen als auch zusammenketten von strings fällt mir da nichts ein leider
 
Prinzipiell könntest du das so in der Art machen:
Code:
char kks[17];
char klartext[255];

if (strlen(tooltip) > 18) {
  strcpy(klartext, &tooltip[17]);
  strncpy(kks, tooltip, 16);
  kks[16] = '\0';

...

}

strncpy() hat den Fallstrick, dass es den Ergebnisstring nicht Null-terminiert, das musst du selber machen.
Wenn du die Strings als Rückgabewert o.Ä. verwenden willst, dann darfst du diese nicht auf dem Stack ablegen sondern musst den Speicher dafür mit SysMalloc bei WinCC anfordern, und WinCC gibt ihn automatisch für dich wieder frei.
 
hier vielen dank das hat alles super geklappt

das verknüfpen von der servernamen-nbindung und variable habe ich mit

strcat(char1,char2)super loesen koennen ich danke dir vielmals
 
Zurück
Oben