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日
下一篇 2019年6月11日

相关推荐

  • 博图V13_SP1仿真问题

    电脑安装了博图V13_SP1,在仿真的时候有些图片不能显示(png格式的)在其他电脑上都能显示,安装的博图版本都是一样的,怎么解决哦? 问题补充:图片没有设置隐藏,在其他电脑上完全…

    2017年6月24日
  • wincc7.4连接PLC数量的问题

    项目是用wincc 7.4开发的上位机,上位机用PROFINET网络连接了12个S7-1500,现在发现一个问题,只能同时连接10个PLC,每次重新运行wincc的时候,…

    2021年7月5日
  • 关闭打开的excel文件

    怎样用全局脚本在特定时间关闭当前打开的excel文件,在打开之前自动保存 问题补充:错了,在关闭之前自动保存 最佳答案 如果你用DataSet将Excel.Application变…

    SIMATIC WinCC 2019年6月11日
  • 在WINCC6.2中安装AS-OS Engineering插件

    为什么安装不上呢??? 最佳答案 1.语言环境2。版本环境是否同一版本。3。再有就是安装是否正确了! 提问者对于答案的评价:虽然这个回答对没有帮助,但是积分还是送给你吧!

    SIMATIC WinCC 2019年6月11日
  • wincc中组态报警窗口提示没有到数据服务器的连接

    wincc中组态报警窗口提示没有到数据服务器的连接 最佳答案 1、 打开WinCC项目后,在“Computer Properties”中“Startup”标签项…

    SIMATIC WinCC 2019年6月11日
  • WINCC弹出窗口的制作

    想做这样一个画面:主画面上有一些按钮,每按一个按钮就可以弹出它的一个画面,关闭这个按钮回到这个主画面。前提是,弹出的这个画面就在这个按钮所在的位置,不能覆盖主画面其他信息。之前我已…

    SIMATIC WinCC 2019年6月11日
  • wincc 画面掉线问题

    wincc 画面掉线(灰屏)原因有哪些?是什么原因造成?如何来避免此现象发生? 问题补充:除了病毒,软件能引起什么原因? 最佳答案 1.先从硬件下手,检查网线和各通讯口接…

    SIMATIC WinCC 2019年6月11日
  • wincc图形编辑器里有很多带@的是什么东东?

    如图 图片说明:    最佳答案 PCS7系统自动生成的东西,不要删除。你需要学习PCS7系统才能更好的编辑@的系统画面。 提问者对于答案的评价:

    2017年6月11日
  • Wincc7.4安装完成后没有SQL Management Studio

    Wincc7.4安装完成后没有SQL Management Studio 钻石用户推荐最佳答案 开始菜单–》MicroSoft SQL S…

    SIMATIC WinCC 2021年7月5日
  • TP1900触摸屏,使用U盘更新程序

    TP1900触摸屏上已经下载了程序,需要修改该程序,但是没有笔记本电脑,能不能将修改好的触摸屏程序考到U盘了,通过触摸屏断电上电的方式来更改程序?触摸屏编程用的博途V13,具体需要…

    SIMATIC WinCC 2017年5月31日