11/18/2019 8:18 AM | |
Posts: 47 Rating: (0) |
Adding, manually, the TagPrefix in the picture window will work only for one object that has that TagPrefix e.g. FT110. How can I see which is the number of the picture? (1,2,3,4?) I forgot to mention that this "function" as a whole, should be usable with multiple identical objects that differ only by the TagPrefix. I've reached here so far, see code below. #include "apdefap.h" void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) { #pragma code("ssmrt.dll") #include "ssmrt.h" #pragma code() char* pszProp= NULL; char szProp[14]; char szPictureReturnPath[256]; char Faceplate_Name[14]; char* window = "Faceplate_Window"; char szFaceplateDesign; OPENTOPFIELDSTYLE scStyle; CMN_ERROR scError; char *pch, szPictureReturnPath[256], szTop[256]; //Reading TagName and saving it into szProp //----------------------------------------------------------------------------------------------------------- pszProp = GetPropChar (lpszPictureName, lpszObjectName, "TagName"); if (pszProp != NULL) { strncpy(szProp,pszProp,13); } strncpy(Faceplate_Name,szProp,13); //----------------------------------------------------------------------------------------------------------- //Opening faceplate picture (Faceplate Design.pdl) //----------------------------------------------------------------------------------------------------------- SSMRTOpenTopFieldEx('?',"Faceplate Design.pdl",szPictureReturnPath,sizeof (szPictureReturnPath),&scStyle,&scError); //----------------------------------------------------------------------------------------------------------- //Putting Tagname as Faceplate window name //----------------------------------------------------------------------------------------------------------- pch = strrchr(szPictureReturnPath, ':'); *pch = '\0'; pch = strrchr(szPictureReturnPath, '.'); strcpy (szTop, pch+1); *pch = '\0'; SetPropChar (szPictureReturnPath, szTop, "CaptionText", Faceplate_Name); //----------------------------------------------------------------------------------------------------------- printf("szPictureReturnPath=%s\r\nszTop=%s\r\n", szPictureReturnPath, szTop); printf("%s\r\n",Faceplate_Name); } I am trying to make pieces work from the script found in the link below: https://support.industry.siemens.com/cs/us/en/view/24193022 Also attaching a photo of the current situation. The new thing is that now, I can put the correct name of the window that pops up when clicked on the custom object. P.S. When I apply this script to the second object FT120, and start the RT the script is not working for it, but it works fine for FT110. |
Last edited by: S.Filipov at: 11/18/2019 08:39:54Last edited by: Jen_Moderator at: 11/18/2019 13:22:49Optimized link. |
|
11/22/2019 3:21 PM | |
Posts: 47 Rating: (0) |
Attaching the last revision of the "code". It opens a faceplate, adopts the TagPrefix, faceplate name in the bar. The only issue is that you need to click on the object to open it, then close and reopen so it refreshes its data. I am unable for now to solve this issue. For the script to work you need the following. 1. An object to put the function on Mouse->Click (for example) 1.1. The object must have a property TagName with an attribute TagName with some value there. 2. A prepared faceplate design on a separate picture (.pdl) 2.1. There you create the objects you need and put the I/O fields you want to use to show the data. 2.2. The object created, must have a property where you need to enter the last part of the prefix with ".". I will give an example in the end. 3. Drag a Picture Window object and put it on the main screen or where you want your faceplate to appear. Clarifications: 1. A TagName must be in the format Prefix.Tag e.g. (FT110.Tcycle, where FT110 is the TagPrefix and .Tcycle has to be entered in the IO field that you created in the faceplate design picture) 2. szTop contains the path to the window(faceplate) that opens. Attachment2019.11.22_WinCC Script.zip (77 Downloads) |
This contribution was helpful to1 thankful Users |
Follow us on