Esempi WinCC

Configurare la rete per WinCC

Nella configurazione del proprio ambiente Windows è necessario soddisfare diversi requisiti al fine di consentire il funzionamento a stazioni multiple di WinCC. Se le impostazioni necessarie a tale scopo non sono corrette, non è possibile garantire che WinCC funzioni in modalità a stazioni multiple o senza errori.

La FAQ 868014 riporta le linee guida per configurare la rete per WinCC

http://support.automation.siemens.com/WW/view/en/868014

La documentazione è disponibile anche in Italiano

Di |2012-01-22T11:55:39+02:00Gennaio 22nd, 2012|Documentazione, Esempi WinCC|0 Commenti

Le PictureWindow in Wincc Professional 11

Anche le cose semplici a volte si possono complicare un pochino e farci perdere qualche ora del ns prezioso tempo.

Scrivo questo articolo in quanto ho notato che la soluzione non è stata immediata neanche per chi su wincc ci lavora da un pò di tempo.

Aprire una “Finestra di Pagina” in wincc 11 è un’operazione davvero banale.

Esiste un comado apposito per cui anche uno sviluppatore alle prime armi ne sarebbe capace: posizioniamo su una pagina un pulsante che chiameremo “pulsante_1”, creiamo una “finestra di pagina” delle dimensiami che ci servono e dentro come sappiamo possiamo metterci una seconda pagina da visualizzare al suo interno.

Ricordatevi di mettere a False la proprietà “visibile” della “Finesra della pagina”.

Nell’evento “Premere tasto sisnistro del mouse” di “pulsante_1” inseriremo la funzione di sistema “attiva pagina nella finestra” inserendo i parametri che ci vengono chiesti. Mandando in run time la ns applicazione e cliccando su “pulsante_1” vedremo apparire la ns “finestra della pagina”.

I problemi iniziano adesso. Se proviamo a chiudere la finestra della pagina, pur cliccando su “pulsante_1” la ns Finestra della pagina non riapparirà piu’.

La soluzione del problema è scegliere un’altra funzione di sistema all’evento “Premere tasto sinistro del mouse” di “pulsante_1” sicuramente meno intuitivo rispetto alla prima soluzione, ma sicuramente piu’ funzionale: “Definisci proprietà tramite costante”.

Nel nome della pagine inseriamo la pagina su cui stiamo lavorando, oggetto della pagina inseriamo la ns “finestra della pagina”, in Nome della proprietà inseriamo la proprietà “Visibile” della finestra della pagina ed ovviamente nel “Nuovo valore della variabile” inseriamo la costante “true”.

Succede che quando facciamo clic sul pulsante la proprietà “visibile” della ns “finestra della pagina” verrà settata a “true” per cui si aprirà. Se proviamo a chiuderla, tale proprietà verrà settata a False dal sistema per cui rischiacciando “pulsante_1” questa volta il tutto funzionerà perfettamente.

 

Tale operazione può essere effettuata anche con VB script del quale allego il piccolo listato:

 

Funzione_1

Dim Fin_Menu

Set Fin_Menu = HMIRuntime.Screens(“Home”).ScreenItems(“Finestra del menù”)

If Fin_Menu.Visible = 0 Then

Fin_Menu.Visible = 1

Else

Fin_Menu.Visible = 0

End If

 

Basterà mettere negli eventi di “pulsante_1” la Funzione_1 per avere lo stesso effetto della funzione di sistema “Nuovo valore della variabile”

 

Fabio Stranieri

(Fabio Stranieri è un lettore di questo blog che ha deciso di ricambiare le informazioni ricevute inviandomi un articolo che pubblico molto volentieri)

Di |2011-10-08T11:35:30+02:00Ottobre 8th, 2011|Esempi WinCC, Graphics Designer|0 Commenti

Utilizzare “INSERT INTO” con cScript

L’esempio mostra come inserire un nuovo record in una tabella di SQL Server utilizzando il comando SQL “INSERT INTO” in linguaggio cScript

#include “apdefap.h”

int dbInsertInto(char *szTable,char *szCampi,char *szValori)
{
#define GetObject GetObject
__object *objConnection=NULL;
__object *objRst=NULL;

char strConnectionString[NC];
char strSQL[NC];
int NewID;

printf(“dbInsertInto(%s,%s,%s)\r\n”,szTable,szCampi,szValori);

//connessione a database e query
sprintf(strConnectionString,”DRIVER=SQL Server;”
“UID=SYSTEM;”
“Trusted_Connection=Yes;”
“DATABASE=%sR;”
“WSID=%s;”
“SERVER=%s\\WINCC;”,
GetTagChar(“@ProjectDSN”),
GetTagChar(“@ServerName”),
GetTagChar(“@ServerName”));

if(!GetTagBit(“@IsServerPc”))
strcat(strConnectionString,”LINKS=TCPIP;”);

objConnection = __object_create(“ADODB.Connection”);
objConnection->ConnectionString = strConnectionString ;
objConnection->Open;

objRst = __object_create(“ADODB.Recordset”);
objRst->CursorType = 0;
objRst ->LockType = 1;

// trovo l’id da utilizzare
sprintf(strSQL,””);
sprintf(strSQL,”SELECT TOP 1 ID FROM UA#%s ORDER BY ID DESC”,szTable);

objRst ->Open(strSQL, objConnection,0,1,1);     //adCmdText

if((objRst ->eof && objRst ->bof))
NewID = 1;
else
NewID = objRst ->Fields->Item(“ID”)+1;

//eseguo l’inserimeto del record
objRst ->Close;
__object_delete(objRst );

sprintf(strSQL,”INSERT INTO UA#%s (ID,%s) VALUES (%d,%s);”,szTable,szCampi,NewID,szValori);

objConnection->Execute(strSQL);

objConnection->Close;
__object_delete(objConnection);

return NewID;

}

La funzione viene chiamata con i parametri nome tabella, nome campi e valori, ritorna l’id del record
(NT)

Di |2011-08-11T04:42:00+02:00Agosto 11th, 2011|cScript, DataBase, Esempi WinCC|0 Commenti
Torna in cima