使用Excel通过OPC访问WinCC的实时数据

使用Excel通过OPC访问WinCC的实时数据时,数据时间和OPC时间不致,差8小时。但OPC时间与电脑时间一致。WINCC设置为本机时区

图片说明:

使用Excel通过OPC访问WinCC的实时数据   

最佳答案

''此为全局脚本中的时间转换代码
Function GetLocalDate(vtDate) ''得到当地时间,从格林尼治时间转换过来的
Dim DoY
Dim dso
Dim dwi
Dim strComputer, objWMIService, colItems, objItem
Dim TimeZone
Dim vtDateLocalDate
''---------------------------
''get time zone bias
''---------------------------
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_TimeZone")
For Each objItem In colItems
    TimeZone = objItem.Bias / 60    ''offset TimeZone In hours
Next
''---------------------------
''check parameter vtDate
''---------------------------
If IsDate(vtDate) <> True Then
  IS_GetLocalDate = False
  Exit Function
End If
''---------------------------
''get day of the year
''---------------------------
DoY = DatePart("y", vtDate)
dso = DatePart("y", "31.03") - DatePart("w", "31.03") + 1
dwi = DatePart("y", "31.10") - DatePart("w", "31.10") + 1
If DoY >= dso And DoY < dwi Then
  ''sommer
  TimeZone = TimeZone + 1  ''additional offset 1h in summer
End If
''---------------------------
''correction of date
''---------------------------
vtDateLocalDate = DateAdd("h", 1 * TimeZone, vtDate)
''---------------------------
''return UTC date and time
''---------------------------
GetLocalDate = vtDateLocalDate
End Function


直接拿去用吧  好使
如果电脑时间为北京时间,读回OPC变量的时间值后直接加8H即可

提问者对于答案的评价:
搞定

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2021年7月5日 下午12:04
下一篇 2021年7月5日 下午12:04

相关推荐

  • 关于读取第三方数据

    1.DDE读取EXCEL文件中的数据,该EXCEL文件应该放在哪个目录里面?2.如何将从excel文件里面度来的数据放在DB数据快里面?求脚本语句。急谢谢大家 最佳答案 1.Win…

    SIMATIC WinCC 2019年6月11日
  • 阀门赋值

    阀门变量有:名称(文本)、全开状态(二进制变量)、全关状态(二进制变量)、控制开关状态(二进制变量);现有50多个这种阀门,如何wincc中创建控制画面?如何将不同阀门变量赋值给这…

    SIMATIC WinCC 2021年7月5日
  • 用户归档打不开

    我的WINCC中用户归档打不开,提示“Fehler beim Laden der angeforderten Sprache”是怎…

    SIMATIC WinCC 2019年6月11日
  • 旋转角度函数

    WINCC V6.2中需要把某个对象比如矩形在置位某一点时旋转一个角度,应该调用哪个函数、如何使用? 最佳答案 如果是画面简单的旋转,你还可以将画面提前使用图形编辑器:P…

    SIMATIC WinCC 2019年6月11日
  • wincc字符串(变量)如何归档存储

    wincc通过SIMATIC NET与s7-300 315-2dp通讯,Plc里面的DB块类型为STRING,长度为32(实际使用没这么多),WINCC读取这个…

    SIMATIC WinCC 2019年6月11日
  • wincc 全局脚本 更新问题

    这个是关于Wincc软件安装后使用的问题。我在画面上调用已经调试好的模快。运行Wincc;当我再次对这个模块进行修改的时候,比如在模块的第一条执行的地方加一条 Msgbo…

    SIMATIC WinCC 2019年6月11日
  • 博图v15移植工具用不了

    源项目是一个step v5.5 sp4集成的wincc 7.4 sp1项目,安装在虚拟机win 7 32位系统,现在要用…

    2021年7月5日
  • 怎样判断变量状态后延时触发另一变量

    我现在就是有一个开关量..二秒钟左右变化一次…在它造过2分种没动作.即在1或0时都不动超二分钟.....触发另一变量…怎样用C语言写脚本啦 问题补充:谢谢ZHANGLI0&…

    SIMATIC WinCC 2019年6月11日
  • 怎么确定指针变量的对应关系

    触摸屏对应PLC程序的点,用了很多Nr,怎么确定这些Nr代表哪个DB数据块? 问题补充:麻烦说的具体一点,到底在什么地方能找到这个对应关系?谢谢! 图片说明:  &nbs…

    2017年11月6日
  • 如何在wincc脚本里用C语言编写实现延时的程序?谢谢

    如何在wincc脚本里用C语言编写实现延时的程序?谢谢 最佳答案 sleep不好,用了它有假死的现象。你最好是脚本变量触发,用一个内部变量记录脚本触发的次数,触发次数大于设定值(即…

    SIMATIC WinCC 2021年7月5日

发表回复

登录后才能评论