Lập trình C cho WINCC – Tổng hợp code C và VB - Phần 3

=================================================================
#include “apdefap.h”
void OnClick(char* lpszPictureName,
char* lpszObjectName,
char* lpszPropertyName)
{
//Decrements the assigned tag by 1
int value,min;
LINKINFO plink;
PDLRTGetPropEx(0,lpszPictureName,lpszObjectName,“Process”,VT_I4,&value,NULL,NULL,0,NULL,NULL);
PDLRTGetPropEx(0,lpszPictureName,lpszObjectName,“Min”,VT_I4,&min,NULL,NULL,0,NULL,NULL);
if(value>=(min+1)) value-=1;
els
e value = min;
PDLRTGetLink(0,lpszPictureName,lpszObjectName,“Process”,&plink,NULL,NULL,NULL);
//Rückgabe-Typ :BOOL
if
(plink.LinkType >2)
return;
else SetTagDouble (plink.szLinkName, value);
}
==================================================================================================
#include “apdefap.h”
void OnLButtonDown(char* lpszPictureName,
char* lpszObjectName,
char* lpszPropertyName, UINT nFlags,
int x,
int y)
{
extern lok_fct(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName);
// WINCC:TAGNAME_SECTION_START
// syntax: #define TagNameInAction “DMTagName”
#define Tag_1 “stop”
// next TagID : 2
// WINCC:TAGNAME_SECTION_END
// WINCC:PICNAME_SECTION_START
// syntax: #define PicNameInAction “PictureName”
// next PicID : 1
// WINCC:PICNAME_SECTION_END
SetTagBit(Tag_1,1);
//Triggerbit für globale Aktion lok_stop
lok_fct(“PA3_bld02_lok.pdl”,“Zustandsanzeige1”);
//Lokanimationsfunktion
}
===================================================================================
#include “apdefap.h”
int gscAction(
void
)
{
// WINCC:TAGNAME_SECTION_START
// syntax: #define TagNameInAction “DMTagName”
#define Tag_1 “loko_S36”
// next TagID : 2
// WINCC:TAGNAME_SECTION_END
// WINCC:PICNAME_SECTION_START
// syntax: #define PicNameInAction “PictureName”
#define Pic_2 “PA10_bld06.pdl”
// next PicID : 2
// WINCC:PICNAME_SECTION_END
#include “dmclient.h”
extern Delay(ms);
static
long
int a=-1;
while
(GetTagBit(Tag_1))
//Rückgabe – Typ :short int

{
SetIndex(Pic_2,“Zustandsanzeige1”,a);
printf(“loko_s36.pas return value = %d \r\n”,a);
Delay(50);
a++;

if(a==8) a=0;

}
return a;
}
=======================================================================
#include “apdefap.h”
int gscAction(
void
)
{
// WINCC:TAGNAME_SECTION_START
// syntax: #define TagNameInAction “DMTagName”
// next TagID : 1
// WINCC:TAGNAME_SECTION_END
// WINCC:PICNAME_SECTION_START
// syntax: #define PicNameInAction “PictureName”
// next PicID : 1
// WINCC:PICNAME_SECTION_END
PrintHtml ();
//Rückgabe – Typ :void
return
0;
}
========================================================================
Creat trend
#include “apdefap.h”
int gscAction(
void
)
{
// WINCC:TAGNAME_SECTION_START
// syntax: #define TagNameInAction DMTagName
#define Tag_1 “stop”
#define Tag_2 “T01”
#define Tag_3 “T02”
#define Tag_4 “T03”
#define Tag_5 “T04”
#define Tag_6 “T05”
#define Tag_7 “T06”
#define Tag_8 “T07”
#define Tag_9 “Trend_1”
#define Tag_10 “Trend_2”
#define Tag_11 “Trend_3”
#define Tag_12 “Trend_4”
#define Tag_13 “Trend_5”
#define Tag_14 “Trend_6”
#define Tag_15 “Trend_7”
#define ApcMel_Mischer “Mel_Mischer”
#define Apc_X_Trend “X_Trend”
#define Apc_Y_Trend “Y_Trend”
// next TagID : 17
// WINCC:TAGNAME_SECTION_END
// WINCC:PICNAME_SECTION_START
// syntax: #define PicNameInAction PictureName
// next PicID : 1
// WINCC:PICNAME_SECTION_END
// create_trends.pas by Bob Meads modified by Hans-Norbert Schwoerer
// this script creates values of internal variables
// for trending and alarming.
static
long
int alarm=0;
long
int trend_1c=0;
long
int trend_2c=0;
long
int trend_3c=0;
long
int trend_4c=0;
long
int trend_5c=0;
long
int trend_6c=0;
long
int trend_7c=0;
long
int trend_1=0;
long
int trend_2=0;
long
int trend_3=0;
long
int trend_4=0;
long
int trend_5=0;
long
int trend_6=0;
long
int trend_7=0;
static
long
int trend_X=0;
static
long
int trend_Y;
if(!GetTagBit(Tag_1))
{
alarm=((alarm+1)%8);
while((trend_1<4)
||
(trend_1>128)) trend_1=rand ();
trend_1c=trend_1 /
4;
while((trend_2<21)
||
(trend_2>111)) trend_2=rand ();
trend_2c=trend_2 /
3;
while((trend_3<17)
||
(trend_3>130)) trend_3=rand ();
trend_3c=trend_3 /
4;
while((trend_4<15)
||
(trend_4>168)) trend_4=rand ();
trend_4c=trend_4 /
6;
while((trend_5<12)
||
(trend_5>173)) trend_5=rand ();
trend_5c=trend_5 /
5;
trend_6c=trend_5 /
25;
trend_7c=trend_5*7;
while((trend_6<18)
||
(trend_6>183)) trend_6=rand ();
while((trend_7<23)
||
(trend_7>193)) trend_7=rand ();
trend_X=((trend_X+1)%11);
trend_Y=(trend_X*trend_X);
}
SetTagMultiWait
(“%d%d%d%d %d%d%d%d %d%d%d%d %d%d%d%d %d”,
ApcMel_Mischer,alarm,
Tag_2, trend_1,
Tag_3, trend_2,
Tag_4, trend_3,
Tag_5, trend_4,
Tag_6, trend_5,
Tag_7, trend_6,
Tag_8, trend_7,
Tag_9, trend_1c ,
Tag_10, trend_2c,
Tag_11, trend_3c,
Tag_12,trend_4c ,
Tag_13,trend_5c,
Tag_14,trend_6c,
Tag_15,trend_7c,
Apc_X_Trend,trend_X,
Apc_Y_Trend,trend_Y
);
return
1;
}
=======================================================================
poly curve
#include “apdefap.h”
int gscAction(
void
)
{
// WINCC:TAGNAME_SECTION_START
// syntax: #define TagNameInAction “DMTagName”
#define APC_raw1 “raw1”
// next TagID : 2
// WINCC:TAGNAME_SECTION_END
// WINCC:PICNAME_SECTION_START
// syntax: #define PicNameInAction “PictureName”1
#define Pic_1 “PAX.pic_win_5:PA5_bld09_1”
#define object “Polygon_trend”
// next PicID :2
// WINCC:PICNAME_SECTION_END
long i=-1;
BYTE byte[121];
GetTagRaw(APC_raw1,byte,121);

while(++i<121)
SetActualPointTop(Pic_1,object,(byte[i]+170)*SetIndex(Pic_1,object,i+1));
// +170 –> Kurve um 170 Pixel nach unten verschieben

// +170 –> move trend 170 pixel down

return i;
}
========================================================
#include “apdefap.h”
int gscAction(
void
)
{
// WINCC:TAGNAME_SECTION_START
// syntax: #define TagNameInAction DMTagName
#define ApcTest1 “Test1”
#define ApcTest3 “Test3”
#define ApcTest2 “Test2”
#define ApcTest4 “Test4”
#define ApcMSEXCELPath “MSEXCELPath”
#define ApcProjectPath “ProjectPath”
#define ApcRT_Stat”RT_Stat”
// next TagID : 8
// WINCC:TAGNAME_SECTION_END
// WINCC:PICNAME_SECTION_START
// syntax: #define PicNameInAction PictureName
// next PicID : 1
// WINCC:PICNAME_SECTION_END
FILE *datei;
WORD a ;
BYTE b;
char
*c,
*d,
*e;
char t[30];
char tmsexcel[75];
char* file;
char* pp;
BOOL merk;
DWORD dwLaenge;
c=SysMalloc(25);
d=SysMalloc(25);
e=SysMalloc(80);
file = SysMalloc(200);
pp = SysMalloc(120);
pp=GetTagChar(ApcProjectPath);
//Projektpfad einlesen – get Project Path
sprintf(file,“%svariablen.txt”,pp);
printf(“%s\r\n”,file);
/*————————————————————————————————————————————————————————-
SCHREIBEN IN DAS TXT-FILE – Writing Tags to Text-File
————————————————————————————————————————————————————————*/
if(GetTagBitWait(ApcRT_Stat)==1)
//Wenn RT_Anlaufmerker (RT_Stat) gesetzt – if RT_Stat Bit Flag is set
{
printf(“Anlaufmerker gesetzt – Starting-Bit-Flag set\r\n”);
pp=GetTagChar(ApcProjectPath);
//Projektpfad einlesen – get Project Path
datei = fopen( file,
“w”
);
// TXT-File mit Schreibkennung öffnen

if( datei !=
NULL
)

{
a=GetTagWord(ApcTest1);
//Variablen auslesen und in C-Variablen schreiben
b=GetTagByte(ApcTest3);
c=GetTagChar(ApcTest2);
d=GetTagChar(ApcTest4);
e=GetTagChar(ApcMSEXCELPath);
fprintf( datei,“%d\r\n%d\r\n%s\r\n%s\r\n%s\r\n”, a, b, c, d, e);
// Werte in die Datei schreiben
printf(“Variablen in Datei geschrieben – finished writing tags to file \r\n%d\r\n\%d\r\n%s\r\n%s\r\n%s\r\n “, a, b, c, d, e);
//Kontrolle in GSC-Runtimefenster
fclose( datei );
//close file

return
1;
// Returnwert zur Kontrolle im GSC-Runtimefenster

}

else printf(
“file open error\r\n”
);
// Ausgabe Text, bei Fehler beim öffnen der Datei

return
0;
}
else
// wenn Anlaufmerker nicht gesetzt
{
/*————————————————————————————————————————————————————————
Lesen aus dem TXT-File – Read Tags from Text File
————————————————————————————————————————————————————————*/
datei = fopen(file,
“r”
);
// TXT_File mit Lesekennung öffnen

if
(datei !=NULL)

{
printf(“\r\nVariablen aus der Datei gelesen – finished reading tags from the file\r\n”);
fgets(t,30,datei);
//Wert 1 aus der TXT lesen und in C-Variable “t” schreiben
printf(“%s\r\n”,t);
//Kontrolle in GSC-Runtimefenster
SetTagWord(ApcTest1,(WORD)atoi(t));
// Variable beschreiben
fgets(t,30,datei);
//Wert 2 aus der TXT lesen und in C-Variable “t” schreiben
printf(“%s\r\n”,t);
//Kontrolle in GSC-Runtimefenster
SetTagByte(ApcTest3,(BYTE)atoi(t));
// Variable beschreiben
fgets(t,30,datei);
// Wert 3 aus der TXT lesen und in die C-Variable “t” schreiben
dwLaenge=strlen(t);
// Länge des gespeicherten Textes ermitteln
strcpy(&t[dwLaenge2],“”);
//mit wird um 2 Stellen nach links geschoben um den String ohne \r\n zu terminieren
printf(“%s, laenge=%d\r\n”,t,dwLaenge);
//Kontrolle in GSC-Runtimefenster
SetTagChar(ApcTest2,t);
// Variable beschreiben
fgets(t,30,datei);
// Wert 4 aus der TXT lesen und in die C-Variable “t” schreiben
dwLaenge=strlen(t);
// Länge des gespeicherten Textes ermitteln
strcpy(&t[dwLaenge2],“”);
//mit wird um 2 Stellen nach links geschoben um den String ohne \r\n zu terminieren
printf(“%s, laenge=%d\r\n”,t,dwLaenge);
//Kontrolle in GSC-Runtimefenster
SetTagChar(ApcTest4,t);
// Variable beschreiben
fgets(tmsexcel,75,datei);
// Wert 5 aus der TXT lesen und in die C-Variable “tmsexcel” schreiben
dwLaenge=strlen(tmsexcel);
// Länge des gespeicherten Textes ermitteln
strcpy(&tmsexcel[dwLaenge2],“”);
//mit wird um 2 Stellen nach links geschoben um den String ohne \r\n zu terminieren
printf(“%s, laenge=%d\r\n”,tmsexcel,dwLaenge);
//Kontrolle in GSC-Runtimefenster
SetTagChar(ApcMSEXCELPath,tmsexcel);
fclose( datei);
//Datei schließen

return
1;
// Returnwert zur Kontrolle im GSC-Runtimefenster

}

else

{
printf(“\r\nfile open error\r\n”
);
// Ausgabe Text, bei Fehler beim öffnen der Datei

return
0;

}
}
}
===============================================================================
log out
#include “apdefap.h”
void OnClick(char* lpszPictureName,
char* lpszObjectName,
char* lpszPropertyName)
{
#pragma code (“UseAdmin.DLL”)
#include “pwrt_api.h”
#pragma code ()
int i, j, n;
char pic_name[256];
char obj_name[60];
PWRTLogout();
= strlen( lpszPictureName );
for
( i = n; i >
0; i
)

if
( lpszPictureName[i]
==
‘.’
)

{
strncpy( pic_name, lpszPictureName, i );
strcpy( obj_name,
&lpszPictureName[i+1]
);

for
( j =
0; j <
(ni); j++)

if
( obj_name[j]
==
‘:’
)

{
obj_name[j]
=
;

break;

}
SetVisible(pic_name,obj_name,FALSE);

break;

}
}
================
#include “apdefap.h”
void OnClick(char* lpszPictureName,
char* lpszObjectName,
char* lpszPropertyName)
{
SetVisible(lpszPictureName,“@ERROR”,FALSE);
SetOperation(lpszPictureName,“@LoginIn”,TRUE);
SetOperation(lpszPictureName,“@PasswordIn”,TRUE);
SetOperation(lpszPictureName,“@OK”,TRUE);
Set_Focus(lpszPictureName,“@LoginIn”);
SetVisible(lpszPictureName,lpszObjectName,FALSE);
}
===================================================================
#include “apdefap.h”
void OnClick(char* lpszPictureName,
char* lpszObjectName,
char* lpszPropertyName)
{
// WINCC:TAGNAME_SECTION_START
// syntax: #define TagNameInAction DMTagName
// next TagID : 1
#define Apc_CurrentUser “@CurrentUser”
// WINCC:TAGNAME_SECTION_END
// WINCC:PICNAME_SECTION_START
// syntax: #define PicNameInAction PictureName
// next PicID : 1
#define Apcpictu_0_startpicture_00_PDL “pictu_0_startpicture_00.PDL”
// WINCC:PICNAME_SECTION_END
int i, j, n;
char pic_name[256];
char obj_name[60];
= strlen( lpszPictureName );
for
( i = n; i >
0; i
)

if
( lpszPictureName[i]
==
‘.’
)

{
strncpy( pic_name, lpszPictureName, i );
strcpy( obj_name,
&lpszPictureName[i+1]
);

for
( j =
0; j <
(ni); j++)

if
( obj_name[j]
==
‘:’
)

{
obj_name[j]
=
;

break;

}
SetVisible(pic_name,obj_name,FALSE);

break;

}
/*if ((strcmp(GetTagChar(Apc_CurrentUser),””))==0) {
SetVisible(Apcpictu_0_startpicture_00_PDL,”Picture Window6″,1);
}*/
}
=============================================================

No comments

Powered by Blogger.