Libreria VBScript WinCC

Estoy creando una Libreria externa en C# para extender las opciones de WinCC y poderlas utilizar en VBScript, otras simplemente para facilitar la labor de código fuente. Actualmente todas las que estan se pueden utilizar tanto en WinCC / WinCC RT Professional (TIA Portal)

Si estas interesado puedes descargar la libreria en el Foro de Siemens, donde ire actualizando las diferentes versiones.

https://support.industry.siemens.com/tf/ww/en/posts/library-vb-net-c-com-vbscript-wincc/187312/?page=0&pageSize=10

 

string :GetUserGroup (string DataSourceRT, string CurrentUser)

Dim CurrentUser , DatasourceNameRT , Obj , return
Set CurrentUser = HMIRuntime.Tags("@CurrentUser")
Set DatasourceNameRT = HMIRuntime.Tags("@DatasourceNameRT")
Set Obj = CreateObject("VBScriptLibraryWinCC.dll")
return = Obj.GetUserGroup(DatasourceNameRT.Read , CurrentUser.Read)
HMIRuntime.Trace "Grupo Usuario: " & return & vbNewline

 

string :GetUserGroupLogon(string DataSourceRT, string CurrentUser)

Dim CurrentUser , DatasourceNameRT , Obj , return
Set CurrentUser = HMIRuntime.Tags("@CurrentUser")
Set DatasourceNameRT = HMIRuntime.Tags("@DatasourceNameRT")
Set Obj = CreateObject("VBScriptLibraryWinCC.dll")
return = Obj.GetUserGroupLogon(DatasourceNameRT.Read , CurrentUser.Read)
HMIRuntime.Trace "Grupo Usuario: " & return & vbNewline

 

string :GetMaxLimitTag (string DataSourceRT, string TagName)

Dim Obj , return , DatasourceNameRT
Set Obj = CreateObject("VBScriptLibraryWinCC.dll")
Set DatasourceNameRT = HMIRuntime.Tags("@DatasourceNameRT")
return = Obj.GetMaxLimitTag(DatasourceNameRT.Read , "TagName")
HMIRuntime.Trace "Max Limit : " & return & vbNewline

 

string :GetMinLimitTag (string DataSourceRT, string TagName)

Dim Obj , return , DatasourceNameRT
Set Obj = CreateObject("VBScriptLibraryWinCC.dll")
Set DatasourceNameRT = HMIRuntime.Tags("@DatasourceNameRT")
return = Obj.GetMinLimitTag(DatasourceNameRT.Read , "TagName")
HMIRuntime.Trace "Min Limit : " & return & vbNewline

 

string :GetDateTime() 'With Miliseconds

Dim Obj , return
Set Obj = CreateObject("VBScriptLibraryWinCC.dll")
return = Obj.GetDateTime()
HMIRuntime.Trace "System Date: " & return & vbNewline

 

string :GetDateTimeFormat(string format) '(HH:mm:ss.fff) ; (MMMM dd, yyyy) ; (yyyyMMddHHmmss)

Dim Obj , return
Set Obj = CreateObject("VBScriptLibraryWinCC.dll")
return = Obj.GetDateTimeFormat("HH:mm:ss.fff")
HMIRuntime.Trace "System Date: " & return & vbNewline

 

int :Sleep(int Miliseconds) 'Return 1 when the time is finished

Dim Obj , return
Set Obj = CreateObject("VBScriptLibraryWinCC.dll")
HMIRuntime.Trace "System Date: " & Obj.GetDateTime() & vbNewline
Obj.Sleep(500)
HMIRuntime.Trace "System Date: " & Obj.GetDateTime() & vbNewline

 

int :GetRandon()' By defaul 0-100

Dim Obj , return
Set Obj = CreateObject("VBScriptLibraryWinCC.dll")
return = Obj.GetRandon()
HMIRuntime.Trace "Randon Number: " & return & vbNewline

 

int :GetRandonNumber(int MinNumber, int MaxNumber)

Dim Obj , return
Set Obj = CreateObject("VBScriptLibraryWinCC.dll")
return = Obj.GetRandon(10,1000)
HMIRuntime.Trace "Randon Number: " & return & vbNewline

 

float :GetRandonFloat(int MinNumber, int MaxNumber)

Dim Obj , return
Set Obj = CreateObject("VBScriptLibraryWinCC.dll")
return = Obj.GetRandon(10,1000)
HMIRuntime.Trace "Randon Number: " & return & vbNewline

 

int :StartProgram(string PathProgram, out string Message)

Dim Obj , msg
Set Obj = CreateObject("VBScriptLibraryWinCC.dll")
return = Obj.StartProgram("C:\\xxx\\MyExportFile.csv",msg)
If return = -1 Then
HMIRuntime.Trace msg & vbNewline
End If

 

int :CloseProgram(string Program, out string Message) 'Program = Name of the process

Dim Obj , msg
Set Obj = CreateObject("VBScriptLibraryWinCC.dll")
return = Obj.CloseProgram("firefox",msg)
If return = -1 Then
HMIRuntime.Trace msg & vbNewline
End If

 

void :Login()

Dim Obj
Set Obj = CreateObject("VBScriptLibraryWinCC.dll")
Obj.Login()

 

void :Logout()

Dim Obj
Set Obj = CreateObject("VBScriptLibraryWinCC.dll")
Obj.Logout()

 

void :SilentLogin(string login, string password)

Dim Obj
Set Obj = CreateObject("VBScriptLibraryWinCC.dll")
Obj.SilentLogin("User" , "Passwords")

 

bool :LoggedInByCard()

Dim Obj , ret
Set Obj = CreateObject("VBScriptLibraryWinCC.dll")
ret = Obj.LoggedInByCard()

 

void :GetCursorPosition(out int x , out int y)

Dim Obj , x , y
Set Obj = CreateObject("VBScriptLibraryWinCC.dll")
Obj.GetCursorPosition x , y
HMIRuntime.Trace "X : " & x & vbNewline
HMIRuntime.Trace "Y : " & y & vbNewline

 

void : NormalWinCC()

Dim Obj
Set Obj = CreateObject("VBScriptLibraryWinCC.dll")
Obj.NormalWinCC()

 

void : MinimizeWinCC()

Dim Obj
Set Obj = CreateObject("VBScriptLibraryWinCC.dll")
Obj.MinimizeWinCC() 

 

void : MaximizeWinCC()

Dim Obj
Set Obj = CreateObject("VBScriptLibraryWinCC.dll")
Obj.MaximizeWinCC()

 

Gracias a WkHtmlToPdf he creado esta función que sirve para convertir una pagina web online en pdf o bien un archivo html en pdf, si quieres probarlo, necesitas instalar WkHtmlToPdf. Puedes descargarlo de https://wkhtmltopdf.org/downloads.html

int PrintHtmlToPdf(String Source, String Path , String msg)

Dim Obj , msg , ret
item.Enabled = False
Set Obj = CreateObject("VBScriptLibraryWinCC.dll")
HMIRuntime.Trace "Start: " & Obj.GetDateTime() & vbNewline
ret = Obj.PrintHtmlToPdf ("https://wkhtmltopdf.org","C:\\PDF\\wkhtmltopdf.pdf",msg)
If ret = -1 Then
HMIRuntime.Trace "Error: " & msg & vbNewline
End If
HMIRuntime.Trace "Finished: " & Obj.GetDateTime() & vbNewline
item.Enabled = True

 

Dim Obj , msg , ret
item.Enabled = False
Set Obj = CreateObject("VBScriptLibraryWinCC.dll")
HMIRuntime.Trace "Start: " & Obj.GetDateTime() & vbNewline
ret = Obj.PrintHtmlToPdf ("file:///C:/PDF/wkhtmltopdf.htm","C:\\PDF\\wkhtmltopdf2.pdf",msg)
If ret = -1 Then
HMIRuntime.Trace "Error: " & msg & vbNewline
End If
HMIRuntime.Trace "Finished: " & Obj.GetDateTime() & vbNewline
item.Enabled = True

 

Gracias a HtmlRenderer.PdfSharp he creado esta función, que sirve para crear un archivo pdf a partir de código html, aqui no necesitas instalar nada, en el compilado ya esta adjunta la libreria con sus dependencias

int GeneratePdf(String Source, String Path , String msg)

Dim Obj, pdf , msg , ret
item.Enabled = False
Set Obj = CreateObject("VBScriptLibraryWinCC.dll")
HMIRuntime.Trace "Start: " & Obj.GetDateTime() & vbNewline

pdf = " <html> " _
& "<body>" _
& "<h1>My First Heading</h1>" _
& "<p>My first paragraph.</p>" _
& "<p><h1>Hello World</h1>This is html rendered text</p>" _
& " <tablewidth:100%"">" _
& "  <tr>" _
& "   <th>Firstname</th>" _
& "    <th>Lastname</th>" _
& "    <th>Age</th>" _
& "  </tr>" _
& "  <tr>" _
& "    <td>Jill</td>" _
& "    <td>Smith</td>" _
& "    <td>50</td>" _
& "  </tr>" _
& "  <tr>" _
& "    <td>Eve</td>" _
& "    <td>Jackson</td>" _
& "    <td>94</td>" _
& "  </tr>" _
& "</table> " _
& "</body>" _
& "</html> "

ret = Obj.GeneratePdf(pdf , "C:\\PDF\\CodeHTML2PDF.pdf",msg)
If ret = -1 Then
     HMIRuntime.Trace "Error: " & msg & vbNewline
End If
HMIRuntime.Trace "Finished: " & Obj.GetDateTime() & vbNewline
item.Enabled = True

 

 

Dim Obj, pdf , msg , ret
item.Enabled = False
Set Obj = CreateObject("VBScriptLibraryWinCC.dll")
HMIRuntime.Trace "Start: " & Obj.GetDateTime() & vbNewline

pdf = "<head><style>.test { background-color: linen;color: maroon;}</style></head>" _
& " <body Class=""test""><p><h1>Hello PLC HMI SCADAS</h1>This is html generated with HtmlRenderer.PdfSharp  and rendered text with css and image.</p>" _
& " <p><img src=""https://plc-hmi-scadas.com/images/header1280.gif"" height=""100%"" width=""100%""></p>" _
& " </body>"

ret = Obj.GeneratePdf(pdf , "C:\\PDF\\CodeHTML2PDF_2.pdf",msg)
If ret = -1 Then
HMIRuntime.Trace "Error: " & msg & vbNewline
End If
HMIRuntime.Trace "Finished: " & Obj.GetDateTime() & vbNewline
item.Enabled = True

 

Actualización, si te descargas la última versión 26-07-2018 , se han actualizado las siguientes funciones, donde no hay que pasarle ningún argumento a las siguientes funciones.

string :GetUserGroup ()
string :GetUserGroupLogon()
string :GetMaxLimitTag (string TagName)
string :GetMinLimitTag (string TagName)


string : GetRuntimeProject()

Dim Obj , ret
Set Obj = CreateObject("VBScriptLibraryWinCC.dll")
ret = Obj.GetRuntimeProject()

 

void : ShowTaskbar()

Dim Obj
Set Obj = CreateObject("VBScriptLibraryWinCC.dll")
Obj.ShowTaskbar()

 

void : HideTaskbar()

Dim Obj
Set Obj = CreateObject("VBScriptLibraryWinCC.dll")
Obj.HideTaskbar()

 

string :GetUserGroup ()

Dim Obj , return
Set Obj = CreateObject("VBScriptLibraryWinCC.dll")
return = Obj.GetUserGroup()
HMIRuntime.Trace "Grupo Usuario: " & return & vbNewline

 

string :GetUserGroupLogon()

Dim Obj , return
Set Obj = CreateObject("VBScriptLibraryWinCC.dll")
return = Obj.GetUserGroupLogon()
HMIRuntime.Trace "Grupo Usuario: " & return & vbNewline

 

string :GetMaxLimitTag (string TagName)

Dim Obj , return
Set Obj = CreateObject("VBScriptLibraryWinCC.dll")
return = Obj.GetMaxLimitTag( "TagName")
HMIRuntime.Trace "Max Limit : " & return & vbNewline

 

string :GetMinLimitTag (string TagName)

Dim Obj , return
Set Obj = CreateObject("VBScriptLibraryWinCC.dll")
return = Obj.GetMinLimitTag("TagName")
HMIRuntime.Trace "Min Limit : " & return & vbNewline

 

int :PrintReport (string JobName)

Dim Obj , return
Set Obj = CreateObject("VBScriptLibraryWinCC.dll")
return = Obj.PrintReport(JobName)

 

int :PreviewReport (string JobName)

Dim Obj , return
Set Obj = CreateObject("VBScriptLibraryWinCC.dll")
return = Obj.PreviewReport(JobName)

 

08 de Marzo del 2017

"La gratitud en silencio no sirve a nadie". Gladys Bronwyn Stern