wincc取系统时间用C脚本与设备读写数据

已锁定

大浪淘沙终德成

  • 帖子

    5
  • 精华

    0
  • 被关注

    0

论坛等级:游民

注册时间:2021-04-11

普通 普通 如何晋级?

wincc取系统时间用C脚本与设备读写数据

1454

4

2022-05-13 17:49:08

     最近因为实际需要,wincc连接了部分的设备总共10台,因为每台设备都有相应的产量计数,在当班需要进行清零,这个关系到每个时间段的产量,所以要求同时归零。

     鉴于此种情况,开始从wincc寻求解决问题的办法,第一步开始想办法将系统的时间取出:1、利用C脚本文件将系统时间读取,代码(只是把别人的东西复制了一下)如下:

#pragma option(mbcs)

#pragma code("kernel32.dll");

void GetLocalTime(SYSTEMTIME*lpst);

#pragma code();

SYSTEMTIME time;

GetLocalTime(&time);

SetTagWord("Data_Hour",time.wHour);

SetTagWord("Data_Month",time.wMonth);

SetTagWord("Data_Year",time.wYear);

SetTagWord("Data_Second",time.wSecond);

SetTagWord("Data_Minute",time.wMinute);


if (GetTagSWord("SECOND")== 10&&"Data_Second"== 10)//if语句后面取值必须使用GetTagSWord("tag_name")

SetTagDWord("module",100);

SetTagBit("ZERO",1);

}

else 

{

SetTagDWord("module",200); //Return-Type: BOOL 

SetTagBit("ZERO",0);

 }

因为忽然之间有了其他的想法,所以这个帖子发的其实有点莫名其妙,现在完成后补充后面内容。实际上上面做的准备都是为了做WINCC的日报表、月报表、年报表使用的。因为生产需要进行产量统计,所以对统一性要求较高,使用WINCC同时赋值的方法进行统一(如果通讯中断,这个就很难进行了,如果有好的想法可以帮忙想下)。言归正传,做报表当时查阅百度第一方案为将数据读入SQL数据库,再通过WINCC的控件进行EXCEL导出,但是自己装的软件里面有控件未授权,没有办法完全实现,具体参考如下:

(2条消息) Wincc报表教程(SQL数据库的建立,wincc在数据库中保存和查询数据,调用Excel模板把数据保存到指定的位置和打印功能)_木子*泓泽的博客-CSDN博客_wincc报表

没办法只能再想其他办法,省掉SQL数据库的存储,直接将数据导出到EXCEL中,这样就产生了以日期为名称的日报表。具体代码如下:已经测试运行无误。

Dim objExcelApp,objExcelBook,objExcelSheet,a,b,i

Dim sheetname

sheetname="原数据"    '工作表名称

Set objExcelApp =CreateObject("Excel.Application") '创建表格对象模型

objExcelApp.Visible=False '设置表格对象可见,不可见=False

    Set a=objExcelApp.Workbooks.Open("C:\生产数据表_模板1") '如果存在打开该文件,

    Set b=a.worksheets(sheetname)

        i=10

objExcelApp.Worksheets(sheetname).Activate '激活工作表格

objExcelApp.Worksheets(sheetname).cells(i,8).value = Now()

objExcelApp.Worksheets(sheetname).cells(i,9).value =(HMIRuntime.Tags(变量1").Read

objExcelApp.Worksheets(sheetname).cells(i,10).value= HMIRuntime.Tags("变量2").Read

objExcelApp.Worksheets(sheetname).cells(i,11).value = HMIRuntime.Tags("变量3").Read

                                objExcelApp.Worksheets(sheetname).cells(i,13).value = 0

Dim patch,filename

          filename=CStr(Year(Now))&"_"&CStr(Month(Now))&"_"&CStr(Day(Now))&"_"&CStr(Hour(Now))&"_"&CStr(Minute(Now))&"_"&CStr(Second(Now))

          patch= "C:\报表\"&filename&".xlsx"                  

         objExcelApp.ActiveWorkbook.SaveAs patch

objExcelApp.Workbooks.Close '退出工作簿

objExcelApp.Quit '表格模型退出

Set objExcelApp= Nothing'释放资源

Set fso=Nothing'释放资源

经过此脚本,就完成了日报表的导出。另外还有月报表,还不知道怎么做,不知道谁能给提供下帮助。

这样这个帖子算是有头有尾了

wincc取系统时间用C脚本与设备读写数据 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC WinCC / Panel

共有31058条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。