Page 1 sur 1

Scrpit WinCC

Posté : 13 janv. 2017, 14:12
par Damall
Bonjour,

j'avais trois des vieux PC en windows 2000 et WinCC V6.0, que j'ai migré sur des machines virtuelles en windows XP.
Sur les anciennes machines, j'avais une seule carte réseau CP1613 sur laquelle était déclarée 2 adresses, une pour le réseau API et une pour le réseau IHM.
Sur les nouveaux PC, j'ai mis deux cartes réseaux pour séparer physiquement les deux réseaux.

L'application fonctionne correctement, sauf que j'ai un script au démarrage qui ne fonctionne plus. Apparemment ce script me créer des disques réseaux pour permettre de mettre a jour un fichier en fonction de la date et l'heure de celui ci sur les autres PC.

Voici le script (en allemand désolé) :

#include "apdefap.h"
void OnOpenPicture(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
// WINCC:TAGNAME_SECTION_START
// syntax: #define TagNameInAction "DMTagName"
// next TagID : 1
#define TagErststart "Erststart" // Der Wert der Variablen wird bei den internen Variablen, als Startwert auf 1 gesetzt. Wird auch in der Aktion Profildaten aktualisieren, als Trigger für Erstaktualisierung benutzt.
#define TagProfil_Dateiname "Profil_Dateiname" // Der Name der Datei ist im Startwert der Variablen eingetragen
#define TagPress_Dateiname "Press_Dateiname" // Der Name der Datei ist im Startwert der Variablen eingetragen
#define TagComputername_Nr "Computername_Nr" // Die Nummer entspricht dem Rechner 1->OS1 ,2->OS2 ,3->OS3
#define TagComputer_Hexindex "Computer_Hexindex" // Hexwerte für die Rechner 1-3, zum Abgleich der Profildatenbanken
#define TagAdresse_OS1 "Adresse_OS1" // IP-Adresse von Rechner OS1, wird im Varaiblenhaushalt als Startwert gesetzt
#define TagAdresse_OS2 "Adresse_OS2" // IP-Adresse von Rechner OS1, wird im Varaiblenhaushalt als Startwert gesetzt
#define TagAdresse_OS3 "Adresse_OS3" // IP-Adresse von Rechner OS1, wird im Varaiblenhaushalt als Startwert gesetzt
#define Freigabenamen "Freigabenamen" // Freigabenamen,wird im Varaiblenhaushalt als Startwert gesetzt (z.B.: WinCC60_Project_Spundval2)

// WINCC:TAGNAME_SECTION_END

// WINCC:PICNAME_SECTION_START
// syntax: #define PicNameInAction "PictureName"
// next PicID : 1
#define PIC_0 "Startbild.PDL"
// WINCC:PICNAME_SECTION_END


#pragma code ("kernel32.dll")
BOOL GetComputerNameA(LPSTR Computername, LPDWORD size);
#pragma code ();

#define Computername1 "OS1"
#define Computername2 "OS2"
#define Computername3 "OS3"

int Fehler;
int size=16;

BYTE Wert;

char Computer[16+1];

char Zeichenkette[100+1];

// Erststart abfragen

if(GetTagBit(TagErststart ))
{
strncpy(Zeichenkette,"\0",sizeof(Zeichenkette));
SetTagByte(TagComputername_Nr,0);
strncpy(Computer," \0",sizeof(Computer));
GetComputerNameA(&Computer[0],(LPDWORD)&size);

//-------------------- Rechner1------------------------

if(strcmp(Computer,Computername1)==0)
{
SetTagByte(TagComputername_Nr,1);
SetTagByte(TagComputer_Hexindex ,0xC);

// Netwerkverbindsaufbau zu Rechner OS2
sprintf(Zeichenkette,"\\\\%s\\%s",GetTagChar(TagAdresse_OS2),GetTagChar(Freigabenamen));
Fehler=Verbindungsaufbau("L:",Zeichenkette);

// Netwerkverbindungstest zu Rechner OS3
sprintf(Zeichenkette,"\\\\%s\\%s",GetTagChar(TagAdresse_OS3),GetTagChar(Freigabenamen));
Fehler=Verbindungsaufbau("M:",Zeichenkette);
}

//--------------- Rechner2---------------------------

if(strcmp(Computer,Computername2)==0)
{
SetTagByte(TagComputername_Nr,2);
SetTagByte(TagComputer_Hexindex ,0xA);

// Netwerkverbindungstest zu Rechner OS1

sprintf(Zeichenkette,"\\\\%s\\%s",GetTagChar(TagAdresse_OS1),GetTagChar(Freigabenamen));
Fehler=Verbindungsaufbau("L:",Zeichenkette);

// Netwerkverbindungstest zu Rechner OS3
sprintf(Zeichenkette,"\\\\%s\\%s",GetTagChar(TagAdresse_OS3),GetTagChar(Freigabenamen));
Fehler=Verbindungsaufbau("M:",Zeichenkette);

}


// ------------------- Rechner3 -------------------------
if(strcmp(Computer,Computername3)==0)
{
SetTagByte(TagComputername_Nr,3);
SetTagByte(TagComputer_Hexindex ,0x6);

// Netwerkverbindungstest zu Rechner OS1
sprintf(Zeichenkette,"\\\\%s\\%s",GetTagChar(TagAdresse_OS1),GetTagChar(Freigabenamen));
Fehler=Verbindungsaufbau("L:",Zeichenkette);

// Netwerkverbindungstest zu Rechner OS2
sprintf(Zeichenkette,"\\\\%s\\%s",GetTagChar(TagAdresse_OS2),GetTagChar(Freigabenamen));
Fehler=Verbindungsaufbau("M:",Zeichenkette);


}

SetTagBit(TagErststart ,0);
Batch_Dateien_vorhanden ();
File_Time_Compare_First(GetTagChar(TagProfil_Dateiname),GetTagByte(TagComputername_Nr));
File_Time_Compare_First_1(GetTagChar(TagPress_Dateiname),GetTagByte(TagComputername_Nr));

Ping_Erststart ();
printf("Erststart Computername=%i\n",GetTagByte(TagComputername_Nr));
}

OpenPicture(PIC_0);

}


Sur un vue, j'ai affiché la variable "Computer_Nr" elle vaut 3 car je suis sur le PC "OS3".
Je ne vois pas ce qui ne va pas .