WINCC报警记录输出到EXCEL

wincc报警记录如何输出到EXCEL格式文件?除了已有文档或帖子说的使用WINCC选件做,能通过脚本编程直接实现吗?有做过的请给个例程。

最佳答案

可以用C脚本,我已经照此例子实验,可以自动生成EXCEL文件
给你转个论坛的帖子做参考
取之于“民”用之于“民”,几段代码,希望对后来者有帮助,不要见笑。
1、记录脚本:同一卡片号的每一根钢的数据记录,有多少根,记多少行
#include "apdefap.h"
int gscAction( void )
{
#pragma code ()
char FileName[20] = " ";
double genshu,row,col;
__object* pExcel = NULL; 
genshu=GetTagDouble("记数根数"); 
SetTagDouble("根数记录",genshu);
row=genshu+4;
if((GetTagBit("钢温记录信号")==1))

{

pExcel = __object_create("Excel.Application.9"); //9表示用的是office 
2000
pExcel->Visible =0;

pExcel->Workbooks ->Open ("e:\\LZEQ_HMI\\JILU.xls");//Cells(row,col)

pExcel->Worksheets("sheet1")->Cells(row,1)->Value=GetTagWord("记数根数


"); 

pExcel->Worksheets("sheet1")->Cells(row,2)->Value=GetTagChar("开始时间


");

pExcel->Worksheets("sheet1")->Cells(row,3)->Value=GetTagWord("1#高温计


温度记录");

pExcel->Worksheets("sheet1")->Cells(row,4)->Value=GetTagFloat("1#水箱流


量记录");

pExcel->Worksheets("sheet1")->Cells(row,5)->Value=GetTagWord("2#高温计


温度记录");

pExcel->Worksheets("sheet1")->Cells(row,6)->Value=GetTagFloat("2#水箱流


量记录");

pExcel->Worksheets("sheet1")->Cells(row,7)->Value=GetTagWord("3#高温计


温度记录");

pExcel->Worksheets("sheet1")->Cells(row,8)->Value=GetTagFloat("3#水箱流


量记录");

pExcel->Worksheets("sheet1")->Cells(row,9)->Value=GetTagWord("4#高温计


温度记录");

pExcel->Worksheets("sheet1")->Cells(row,10)->Value=GetTagWord("5#高温计


温度记录");

pExcel->Worksheets("sheet1")->Cells(row,11)->Value=GetTagFloat("4#水箱


流量记录");

pExcel->Worksheets("sheet1")->Cells(row,12)->Value=GetTagWord("6#高温计


温度记录");

pExcel->Worksheets("sheet1")->Cells(row,13)->Value=GetTagWord("7#高温计


温度记录");

pExcel->Worksheets("sheet1")->Cells(row,14)->Value=GetTagFloat("5#水箱


流量记录");

pExcel->Worksheets("sheet1")->Cells(row,15)->Value=GetTagWord("8#高温计


温度记录");

pExcel->Worksheets("sheet1")->Cells(row,16)->Value=GetTagChar("系统时间


");

SetTagBit("钢温记录信号",0);

}

pExcel->ActiveWorkbook->Save;

pExcel->Workbooks->Close();

pExcel->Quit();

__object_delete(pExcel);

return 0;


2、存储脚本。每一卡片号的钢记录为一张以卡片号为名的Excel表

#include "apdefap.h"


int gscAction( void )

{

#pragma code ("kernel32.dll")

VOID GetLocalTime(LPSYSTEMTIME lpSystemTime);

#pragma code ()

char FileName[20] = " ";

char* Name;

float  guige,hao;

#pragma code("kernel32.dll")

BOOL DeleteFileA(LPCTSTR lpFileName);//声明API函数。

#pragma code()

SYSTEMTIME sysTime;

__object* pExcel = NULL; 

GetLocalTime(&sysTime);

hao=GetTagFloat("卡片号_22");


//Name=GetTagChar("卡片号_22");

if (hao==0)

{

Name=GetTagChar("系统时间");


}

else

{

Name=GetTagChar("卡片号_22");


}


guige=GetTagFloat("轧制规格_22");

if (guige>1000)

{

guige=guige/100;

SetTagFloat("成品规格记录",guige);

}

else

{

SetTagFloat("成品规格记录",guige);

}

if ((guige>100)&(guige<1000))

{

guige=guige/10;

SetTagFloat("成品规格记录",guige);

}

else

{

SetTagFloat("成品规格记录",guige);

}


if((GetTagBit("转存")==1))

{

sprintf(FileName,"e:\\LZEQ_HMI\\记录\\%s.xls"  ,Name);

pExcel = __object_create("Excel.Application.9"); //9表示用的是office 


2000

pExcel->Visible = 0;

pExcel->Workbooks ->Open ("e:\\LZEQ_HMI\\JILU.xls");

pExcel->Worksheets("sheet1")->Range("A2")->Value=GetTagChar("形状");

pExcel->Worksheets("sheet1")->Range("A1")->Value=GetTagChar("控冷");

pExcel->Worksheets("sheet1")->Range("C2")->Value=GetTagFloat("成品规格


记录");

pExcel->Worksheets("sheet1")->Range("F2")->Value=GetTagChar("开始日期


1");

pExcel->Worksheets("sheet1")->Range("J2")->Value=GetTagChar("系统日期


");

pExcel->Worksheets("sheet1")->Range("C3")->Value=GetTagDouble("卡片号


_22");

pExcel->Worksheets("sheet1")->Range("F3")->Value=GetTagChar("钢种_22");

pExcel->Worksheets("sheet1")->Range("I3")->Value=GetTagChar("炉号_22");

pExcel->Worksheets("sheet1")->Range("L3")->Value=GetTagChar("来料规格


_22");

pExcel->Worksheets("sheet1")->Range("O3")->Value=GetTagChar("本卡片号根


数_22");

pExcel->ActiveWorkbook->SaveAs(FileName);

pExcel->Workbooks->Close();

pExcel->Quit();

__object_delete(pExcel);

DeleteFileA("e:\\LZEQ_HMI\\JILU.xls");//调用API函数。

pExcel = __object_create("Excel.Application.9"); //9表示用的是office 


2000

pExcel->Visible =0;

pExcel->Workbooks ->Open ("e:\\LZEQ_HMI\\运行数据库初始\\JILU.xls");

pExcel->ActiveWorkbook->SaveAs("e:\\LZEQ_HMI\\JILU.xls");

pExcel->Workbooks->Close();

pExcel->Quit();

__object_delete(pExcel);

SetTagBit("转存",0);

}

return 0;

 

3、记录卡片号查询代码

char FileName[256];


sprintf(FileName,"C:\\Program Files\\Microsoft 


Office\\Office\\Excel.exe e:\\LZEQ_HMI\\记录\\%s.xls",GetTagChar("查询


卡片号"));


ProgramExecute(FileName);

提问者对于答案的评价:
根据你的思路试试,但愿成功!谢谢

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc268758.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2019年6月11日 上午6:16
下一篇 2019年6月11日 上午6:16

相关推荐

  • WINCC项目打不开

    我用的是WINCC6.0.2,打开一个项目时过程条走完了,但提示我找不到启动画面,可我在电脑从新定义启动画面后还是提示我没有找到启动画面。 问题补充:提示我:启动画面没有找到,请在…

    SIMATIC WinCC 2019年6月11日
  • 变量解析

    结构变量类型:LPCMN_ERROR  和CMN_ERROR  有什么区别? 最佳答案 CMN_ERROR是一种结构体,楼上已经给出。&nb…

    SIMATIC WinCC 2019年6月11日
  • 如何使用WebNavigator,发布WINCC画面。高手指点,给些相关资料

    如何使用WebNavigator,发布WINCC画面。高手指点 问题补充:如何使用WebNavigator,发布WINCC画面。高手指点,给些相关资料.我邮件midakui@163…

    SIMATIC WinCC 2019年6月11日
  • MP377与S7-300时间同步方法

    我想做个MP377与315-2DP的时钟同步  是用PLC的时间同步HMI的,在使用SFC1读取系统时间的时候  没读取出来,郁闷,大侠们给…

    SIMATIC WinCC 2018年12月5日
  • wincc能否授权多台工控机

    我公司买了一套wincc6.2授权的,但是这套工程要用2台上位机,请问能否授权2台,是否有多机授权?还是需要买2套。谢谢! 最佳答案 如果两台工控机同时使用Wincc,可以购买两套…

    SIMATIC WinCC 2019年6月11日
  • WINCC动画的背景颜色在不同电脑显示的颜色不同

    我做一个WINCC项目,同一个项目文件,从A电脑拷贝到B电脑,其中水泵叶轮动画的背景颜色就有不同了,一台电脑是黑色,一台电脑是泛白。已尝试调整显示器亮度,并没有变化,哪位大神遇到过…

    2020年11月1日
  • wincc i/o域添加变量时找不到变量

    wincc  7.0在组态画面I/O域添加变量时没有变量显示,右上角也没有wincc tags的选项,但是直接在I/O域output里面敲变量名,运行…

    SIMATIC WinCC 2019年6月11日
  • WINCC32位内存变量

    各位大师好,怎样使32位内存变量在0到3循环变化,而且能在实际工程中应用的 最佳答案 内部变量的话,那就使用全局脚本,根据你的需要设置周期循环执行(最快250ms执行一次)如果内部…

    SIMATIC WinCC 2021年7月5日
  • 如何在WINCC中做控件或自制图片的动态动画?

    求文档或视频步骤 谢谢?? 问题补充:求管道内气体流动及管道内物料流动的动画 WINCC7.4的例程工程及视频说明 谢谢高人!求管道内气体流动及管道内…

    2021年7月5日
  • wincc归档变量的数据放在哪里的?

    wincc归档变量的数据放在哪里的?怎么从wincc外调出來?电脑上能放多大的数据,怎么设置数据大小和期限?求助. 最佳答案 1、wincc归档变量的数据放在哪里的?—放在wi…

    SIMATIC WinCC 2019年6月11日