我要把WINCC上的数据生成一个.txt格式或word的文件,怎么实现啊,各位大侠请帮帮忙吧,急用啊,小妹这里先谢过啦!
问题补充:
我要实现文本里的数据可根据wincc里的数据实时变化,wincc的数据是PLC发给的,新的数据可以覆盖旧的数据
最佳答案
1、首先,在Windows系统资源管理器D盘中根目录下(即D:\)新建一个文本文件,名称为“DATA.txt”;
2、然后打开WinCC项目后找到“Global Script”节点,再进入“Global Script”编辑窗口;
3、选取“C-Script”工具,新建一个“C-Script”编辑窗口,写入以下的C-Script代码:
(1)如果是连续循环向.txt格式文件写入数据,可参照如下:
#pragma option(mbcs)
void Write_Data()
{
#define MaxLineLength 80
FILE *fpFile;
char *strTag[5] = { "TagA", "TagB", "TagC", "TagD", "TagE" };
char *pTmp;
char buffer[MaxLineLength];
double dVal;
int i;
fpFile = fopen(GetTagChar("D:\\DATA.txt"), "w+" ); //open file to write
printf ("C-Script: write file: %s\r\n", GetTagChar("Filename"));
if (fpFile !=NULL)
{
for (i=0; i<=4; i++){
dVal = GetTagDouble(strTag[i]);
sprintf(buffer, "%s;%lf\n", strTag[i],dVal);
// Search for '.' and replace with ','
pTmp = strchr(buffer, (int)'.');
if (pTmp != NULL){
*pTmp = ',';
}
fputs(buffer,fpFile);
printf("%s\r\r\n", buffer);
}
fclose(fpFile); //close file
} else {
printf ("Error: File not found!\r\n");
}
}
(2)其次,可参照如下:
#pragma option(mbcs)
void Write_Data()
{
FILE *datei;
char *a;
char *b;
dadei=fopen("D:\\DATA.txt","w"); //open file to write
if(dadei!=NULL)
{
a=GetTagChar("DO1");
b=GetTagChar("DO2");
fprintf(dadei,"%s\n%s",a,b);
}
fciose(datei); //close file
}
4、C-Script代码编辑完成后,编译存盘,并指定选取一个需要的触发间隔时钟(trigger ),就可周期*执行写文本文件动作了。
5、以上提供代码仅供参考使用,重点是掌握使用方法。
提问者对于答案的评价:
谢谢您,我的问题已经解决了,程序里有点小错误,我自己改了,还想请教一下用变量作为触发器要怎么弄啊?要在全局脚本里自己编译函数吗
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc271560.html