WinCC TIA V15.1 WinCC RT Professional Präfixübergabe an Bildfenster mit C-Skript oder VBS

Beiträge
7
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
TIA V15.1 WinCC RT Professional Präfixübergabe an Bildfenster mit C-Skript oder VBS

Verwendete Software:
TIA Portal V15.1 Update2

STEP 7 Professional V15.1 Update2
WinCC Professional V15.1 Update2

Folgendes Problem. Da ich keinen HMI Anwenderdatentyp mit PLC Datentypen bestücken kann, bin ich gezwungen anstatt einer Datentypstruktur drei zu verwenden. Dies hat zur Folge, dass ich nun drei Bilder in drei Bildfenstern aufrufe, bzw. ich weise sie unter Eigenschaften-> Eigenschaften-> Allgemein-> Angezeigtes Bild direkt zu, welche wiederum in einem Bild sind. Dieses rufe ich dann erneut in einem Bildfenster auf. Zur Veranschaulichung füge ich nachfolgendes Bild ein.



Bildbaustein3in1V2.jpg


Ich habe es mal soweit geschafft, dass wenn ich auf das Ventil klicke sich das richtige Bildfenster öffnet und es werden auch alle Bildfenster anzeigt, nur das mit dem Präfix klappt noch nicht wie gewünscht. Wie kann ich die Übergabe des Präfixes via C-Skript oder VB machen?

Beispielcode für die versuchte Präfixübergabe an ein Bildfenster (ich fange mal klein an):


#include "GlobalDefinitions.h"
void OnClick(char* screenName, char* objectName, char* propertyName)
{
char* lpszPictureName = screenName;char* lpszObjectName = objectName;char* lpszPropertyName = propertyName;
// WINCC:TAGNAME_SECTION_START
// syntax: #define TagNameInAction "DMTagName"
#define ApcPic1 "Screen_Start"
#define ApcPic2 "ScreenDO_Vlv "
#define BfPic1 " BfDO_Vlv "
#define BfPic2 " BfDO_Vlv_Desc "
#define BfPic3 " BfDO_Vlv_StUp"
#define BfPic4 " BfDO_Vlv_Sta"

SetVisible(ApcPic1,BfPic1,0);
SetPictureName(ApcPic1,BfPic1,ApcPic2);

SetTagPrefix(lpszPictureName,"Bf_Vlv_DO_Dscr", "V005_Dscr.");

SetVisible(ApcPic1,BfPic1 ,1);
}

Weitere Versuche mit SetTagPrefix:
SetTagPrefix(lpszPictureName,"Screen_Start.Bildfenster1:Screen_FrcSim.BfDO_Tag:DO_Vlv_Tag", "V001Test");
SetTagPrefix(lpszPictureName,"DO_Vlv_Desc", "V001Test.");
SetTagPrefix(lpszPictureName,"Screen_Start"."Bildfenster1":"Screen_FrcSim"."BfDO_Tag":"DO_Vlv_Desc", "V001Test.");

SetTagPrefix hackt noch. Wie muss man hier vorgehen?
Wie ist der Bildpfad korrekt bzw. ist die richtige Syntax? Gänsefüsschen? Habe mehrere Arten ausprobiert, Gänsefüsschen nur am Anfang und am Ende oder bei jedem Bild/Bildfenster. Das Präfix (er ist identisch mit dem Namen der Strukturvariable, daran sollte es nicht liegen) habe ich mal mit und mal ohne Punkt am Ende probiert, hatte keinen Einfluss. Habe es auch beim Objektnamen (Name des Ventils) mit und ohne Punkt probiert.

Wie kriege ich das hin, in C-Skript oder VBS? Bin offen für beide Möglichkeiten.

Besten Dank im Voraus.

Güsse
 
Die weiteren Versuche haben teils andere Namen, weil zwei Personen geübt haben und Bildfenster nicht immer gleich benannt haben. Entschuldigung für die Verwirrung. Der lächelnde Kollege war unbeabsichtigt. Beim reinkopieren gabs noch einen Abstand bei "DO_Vl v_Desc" war im Code so nicht drin.
[FONT=&quot][/FONT]

Weitere Versuche mit SetTagPrefix:
SetTagPrefix(lpszPictureName,"Screen_Start.Bildfenster1:Screen_FrcSim.BfDO_Tag:DO_Vlv_Tag", "V001Test");
SetTagPrefix(lpszPictureName,"DO_Vlv_Desc", "V001Test.");
SetTagPrefix(lpszPictureName,"Screen_Start"."Bildfenster1":"Screen_FrcSim"."BfDO_Tag":"DO_Vlv_Desc", "V001Test.");
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Die weiteren Versuche haben teils andere Namen, weil zwei Personen geübt haben und Bildfenster nicht immer gleich benannt haben. Entschuldigung für die Verwirrung. Der lächelnde Kollege war unbeabsichtigt. Beim reinkopieren gabs noch einen Abstand bei "DO_Vl v_Desc" war im Code so nicht drin.


Weitere Versuche mit SetTagPrefix:
SetTagPrefix(lpszPictureName,"Screen_Start.Bildfenster1:Screen_FrcSim.BfDO_Tag:DO_Vlv_Tag", "V001Test");
SetTagPrefix(lpszPictureName,"DO_Vlv_Desc", "V001Test.");
SetTagPrefix(lpszPictureName,"Screen_Start"."Bildfenster1":"Screen_FrcSim"."BfDO_Tag":"DO_Vlv_Desc", "V001Test.");

Sorry, wollte den Beitrag wegen dem Smiley und Abstand kontrollieren, obwohl korrigiert hat es mir in wieder falsch reingemacht und anstatt ihn zu löschen habe ich ihn nochmals reingetan.:sad::sad::sad:
 
Zuletzt bearbeitet:
Die weiteren Versuche haben teils andere Namen, weil zwei Personen geübt haben und Bildfenster nicht immer gleich benannt haben. Entschuldigung für die Verwirrung. Der lächelnde Kollege war unbeabsichtigt. Beim reinkopieren gabs noch einen Abstand bei "DO_Vl v_Desc" war im Code so nicht drin.


Weitere Versuche mit SetTagPrefix:
SetTagPrefix(lpszPictureName,"Screen_Start.Bildfenster1:Screen_FrcSim.BfDO_Tag:DO_Vlv_Tag", "V001Test");
SetTagPrefix(lpszPictureName,"DO_Vlv_Desc", "V001Test.");
SetTagPrefix(lpszPictureName,"Screen_Start"."Bildfenster1":"Screen_FrcSim"."BfDO_Tag":"DO_Vlv_Desc", "V001Test.");

Sorry, wollte den Beitrag wegen dem Smiley und Abstand kontrollieren, obwohl korrigiert hat es mir in wieder falsch reingemacht und anstatt ihn zu löschen habe ich ihn nochmals reingetan.:sad::sad::sad:

Hey,

bei uns basteln wir den Präfix mit dem Objektnamen zusammen, da die IDBs alle gleich aufgebaut sind.
Die Übergabe des Präfixes schaut dann so aus:

SetPropertyByConstant(ScreenName, FrameName, "TagPrefix", "V001Test");

wobei ScreenName der Bildname ist, wo dein Frame liegt und FrameName eben der Name des Frames.

Anschließend den Frame sichtbar schalten

SetPropertyByConstant(ScreenName, FrameName, "Visible", "1");

zur Diagnose kann es Hilfreich sein, bei Bildaufbau ein Skript auszuführen welches irgendeine Variable ausließt, welche ebenfalls vom TagPrefix betroffen ist. So siehst du in APDIAG dann, wenn es irgendwo hakt.

Grüße
 
Zurück
Oben