1、如何使用 WinCC 全局脚本访问系统时钟如何使用 WinCC 全局脚本访问系统时钟?说明:使用下列函数设置或读取系统时间: SetSystemTime SetLocalTime GetSystemTime GetLocalTime系统中本地计算机时间和格林威治时间是有区别的。函数“SetSystemTime / GetSystemTime”用于设置或读取格林威治时间。函数“SetLocalTime / GetLocalTime”用于设置或读取本地计算机时间。两种时间会因地理的时区不同而改变,也会受到冬令时和夏令时的影响。两个函数使用方法相同。操作本地计算机时间的函数是 Windows 系统函
2、数,因此它独立于 WinCC 函数“GetLocalTimeString”或 WinCC 早期版本的“GetLocalTime”函数。 下面的例子程序说明如何在 WinCC 中操作本地计算机时间: 示例:读取时间并将其存入 Word 类型变量中#pragma code(kernel32.dll)VOID GetLocalTime(SYSTEMTIME *lpst);#pragma code();SYSTEMTIME zeit;GetLocalTime(&zeit);SetTagWord(varname,zeit.wYear);SetTagWord(varname,zeit.wMonth);Se
3、tTagWord(varname,zeit.wDayOfWeek);SetTagWord(varname,zeit.wDay);SetTagWord(varname,zeit.wHour);SetTagWord(varname,zeit.wMinute);SetTagWord(varname,zeit.wSecond);SetTagWord(varname,zeit.wMilliseconds);示例:读取时间并存入原始数据类型变量中#pragma code(kernel32.dll)VOID GetLocalTime(SYSTEMTIME *lpst);#pragma code();SYST
4、EMTIME zeit;GetLocalTime(&zeit);SetTagRaw(varname,(Byte*)&zeit,sizeof (SYSTEMTIME);示例:通过 Word 类型变量设置时间#pragma code(kernel32.dll)BOOL SetLocalTime(SYSTEMTIME *lpst);#pragma code();SYSTEMTIME zeit;zeit.wYear=GetTagWord(varname);zeit.wMonth=GetTagWord(varname);zeit.wDayOfWeek=GetTagWord(varname);zeit.w
5、Day=GetTagWord(varname);zeit.wHour=GetTagWord(varname);zeit.wMinute=GetTagWord(varname);zeit.wSecond=GetTagWord(varname);zeit.wMilliseconds=GetTagWord(varname);SetLocalTime(&zeit);示例:通过原始数据类型变量设置时间#pragma code(kernel32.dll)VOID SetLocalTime(SYSTEMTIME *lpst);#pragma code();SYSTEMTIME zeit;GetTagRaw(
6、varname,(BYTE*)&zeit,sizeof (SYSTEMTIME);SetLocalTime(&zeit);设置时间的参数可以通过 WinCC 的内部变量来指定,例如通过过程画面中的输入/输出域来实现。 注意:年份必须用四位数字表示。 条目号:24019500日期:2012-09-20如何在 WinCC Runtime Professional 中读取、显示或设置本地计算机时间或协调世界时间?描述该 FAQ 描述了在 WinCC RT Prof essional 中访问系统时间(本地计算机时间或协调世界时间)的几种方式。 注释 设置时间的用户权限本文介绍的用于设定时间的方法需要操
7、作系统级别的管理权限。如果 WinCC RT Professional 运行在受限的环境中,本文所述的用于设定时间的示例代码不会正常运行。 避免时间跳跃在操作期间应该避免使用本文所述的方法设置系统时间,原因是由此带来的时间跳跃可能导致与 WinCC Prof essional 的冲突(例如,当显示归档数据时)。因此,推荐在 WinCC RT Professional 终止后使用时间同步或者设置时间。为此可以利用 Runtime Stop 触发器使用 scheduler。No.选项1WinCC 时钟Clock 控件提供了一种简单和快速的方法在过程画面中显示 WinCC RT Profession
8、al 的时间。关于该控件的详细信息,可以参考 TIA Portal 的在线帮助文档,位于 Visualizing processes Creating screens Display and operating objects Objects Clock。 注释该控件不提供在其它应用程序中评估时间(例如 Scheduler),或者设置或修改时间。2Windows API 函数可以使用 Windows API 函数 . GetLocalTime(), SetLocalTime(), GetSystemTime() 和 SetSystemTime(). 可以在 C 脚本中读取或设置本地计算机时间或
9、协调世界时间(UTC),这些函数使用 SYSTEMTIME 数据类型(结构体),该结构体的成员变量为数字类型(年、月、日、时、分、秒、毫秒.)。 注释如果需要周期执行的脚本,可以使用 Scheduler 。关于 Scheduler 的详细信息, 请参见 TIA Portal 的在线帮助文档,位置如下: Visualizing processes Scheduling tasks Basics Working area of the Scheduler editor 或 Visualizing processes Scheduling tasks Basics Task type Integra
10、ting local C scripts (RT Professional条目 ID 24019500 介绍如何使用这些函数的示例。3VBS可以在 WinCC 中使用 VBS 读取或设置日期和时间。 提供以下方法: Time 函数Time 函数返回本地计算机时间(不包括日期)。 Now 函数Now 函数返回本地计算机时间(包括日期和时间)。 Windows Management Instrumentation (WMI)Windows Management Instrumentation (WMI) 提供对所有系统参数的访问。 WMI 能够读取信息和管理系统参数。 因此可以使用 VBS 读取本
11、地计算机时间或协调世界时间(UTC),或者读取、设置计算机时区。关于 Windows Management Instrumentation (WMI) 的详细信息,可以参见微软的文档:在以上链接中,可以找到 VBS 的示例代码、简短描述和与 Windows 不同版本的兼容性。条目 ID 24198647 介绍如何在 WinCC 中使用 WMI 访问日期和时间的示例。4Windows 命令 date 和 time Windows 操作系统提供命令行指令 time 和 date ,用于显示和设置系统时间和日期。在 Windows 命令行中输入 help time 或 help date,可以看到这
12、些命令的简短描述。 可以在脚本中使用上述的命令行指令(C 脚本 或 VBS)。 以下是使用 C 脚本或 VBS 的示例代码。 C 脚本ProgramExecute(cmd /c time 14:16);或system(time 14:16); VBSDim objWshShellSet objWshShell = CreateObject(Wscript.Shell)objWshShell.Run cmd /C time 14:16, 1表 01 下载为了进行简单的测试,可以下载下面的库。使用相应的任务卡打开全局库,将包含在库中的元素托拽到项目中。 Time_Functions.zip ( 489 KB ) 图. 01 创建环境在该 FAQ 中的画面和下载,创建在 WinCC Professional V11 SP2 中。 条目号:59558655日期:2012-05-04