Wincc 时间转换脚本LocalTimeToUTC
在WinCC中如何使用VBS读取变量归档数据到EXCEL
文档类型常问问题, 条目ID:77940055, 文档发布日期2013年7月23日4)(评估在WinCC中如何使用VBS读取变量归档数据到EXCEL推荐文档: 西门子工程师推荐本文档!1概述介绍如何在WinCC项目中使用VBS脚本读取变量归档值,并把获取的数据保存成新的Excel文件。
文中示例代码仅适用于以绝对时间间隔方式访问。
2软件环境Windows XP SP3中文版、WinCC7.0 SP2 ASIA、Microsoft office Excel 20073访问原理WinCC变量归档数据是以压缩的形式存储在数据库中,需要通过WinCC连通性软件包提供的OLE-DB接口才能够解压并读取这些数据。
关于WinCC连通性软件包的详细信息请参考连接:37436159当使用OLE-DB方式访问数据库时关键需要注意连接字符串的写法和查询语句的格式。
连接字符串格式为“Provider=WinCCOLEDBProvider.1; Catalog= ***; Data Source= ***;”,其中Catalog为WinCC运行数据库的名称,当修改项目名称或在其它计算机上打开原项目时, Catalog会发生变化。
建议使用WinCC内部变量“@DatasourceNameRT”获得当前项目的Catalog。
Data Source 为服务器名称,格式为“<计算机名称>\WinCC”。
3.1 查询语句格式数据的查询语句的格式要求如下:8 字节长ValueID 的请求:TAG_LLVID:R,<ValueID或ValueName>,<TimeBegin>,<TimeEnd>[,<SQL_clause>][,<TimeStep>]4 字节长ValueID 的请求:TAG:R,<ValueID 或ValueName>,<TimeBegin>,<TimeEnd>[,<SQL_clause>][,<TimeStep>]其中:ValueID:过程值归档变量的唯一标识符。
wincc系统日期时间获取
wincc系统日期时间获取系统时间的获得,有两种办法,一是建立TAG,二是使用函数获取系统时间方法一:在[Tag Management]添加新的驱动"System Info.chn",然后在新添加的[SYSTEM INFO]新建连接,这样就可以创建实际TAG了;下面新建几个TAG: 名字:date, 数据类型:text tag 8-bit character set,地址设定为Function:date,format:"MM-DD-YYYY"名字:time, 数据类型:text tag 8-bit character set,地址设定为Function:Time,format:"HH:MM:SS"根据上面的方法依次建立year,mon,day,week等TAG,请分别设置对应的format内容TAG建立完成了,就可以读到系统时间了。
新建一个图形文件,分别放置几个静态文本框[static text],把TEXT属性连接到上面新建的TAG,就可以显示系统日期时间,利用WEEK还能显示今天是星期几了.方法二: 使用C脚本获得系统时间#include "apdefap.h"char* _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName){time_t timer;struct tm *ptm;char *p;time(&timer);ptm=localtime(&timer);p=SysMalloc(9);sprintf(p,"%04d:%02d:%02d",ptm->tm_year+1900,ptm->tm_mon+1,p tm->tm_mday);return(p);}其中//系统时间已经获得//年: ptm -> tm_year+1900//月: ptm-> tm_mon+1//日: ptm -> tm_mday//星期: ptm -> tm_wday *注意这个,tm_wday返回的是整数,必须经过转换才能用来表示星期几。
如何使用 WinCC 全局脚本访问系统时钟
如何使用WinCC 全局脚本访问系统时钟?
说明:
使用下列函数设置或读取系统时间:
∙SetSystemTime
∙SetLocalTime
∙GetSystemTime
∙GetLocalTime
系统中本地计算机时间和格林威治时间是有区别的。
函数“SetSystemTime / GetSystemTime”用于设置或读取格林威治时间。
函数“SetLocalTime / GetLocalTime”用于设置或读取本地计算机时间。
两种时间会因地理的时区不同而改变,也会受到冬令时和夏令时的影响。
两个函数使用方法相同。
操作本地计算机时间的函数是Windows 系统函数,因此它独立于WinCC 函数“GetLocalTimeString”或WinCC 早期版本的“GetLocalTime”函数。
Time_Functions.zip
图. 01
创建环境
在该FAQ 中的画面和下载,创建在WinCC Professional V11 SP2 中。
条目号:59558655 日期:2012-05-04。
如何在C语言中转换时间
如何在C语言中转换时间如何在C语言中转换时间本文是店铺搜索整理的关于介绍了在C语言中转换时间的基本方法,分别是mktime()函数和localtime()函数的使用,供参考阅读,希望对大家有所帮助!想了解更多相关信息请持续关注我们店铺!C语言mktime()函数:将时间转换成经过的秒数头文件:#include <time.h>定义函数:time_t mktime(strcut tm * timeptr);函数说明:mktime()用来将参数timeptr 所指的tm 结构数据转换成从公元1970 年1 月1 日0 时0 分0 秒算起至今的UTC 时间所经过的秒数。
返回值:返回经过的秒数。
范例:用time()取得时间(秒数), 利用localtime() 转换成struct tm 再利用mktine()将structtm 转换成原来的秒数。
#include <time.h>main(){time_t timep;strcut tm *p;time(&timep);printf("time() : %d \n", timep);p = localtime(&timep);timep = mktime(p);printf("time()->localtime()->mktime():%d\n", timep);}执行结果:time():974943297 time()->localtime()->mktime():974943297 C语言localtime()函数:获取当前时间和日期并转换为本地时间头文件:#include <time.h>定义函数:struct tm *localtime(const time_t * timep);函数说明:localtime()将参数timep 所指的time_t 结构中的`信息转换成真实世界所使用的时间日期表示方法,然后将结果由结构tm 返回。
wincc常用C脚本
1.用户注销:#pragma code ("useadmin.dll")#include "PWRT_api.h"#pragma code()PWRTLogout();2.用户登录:#pragma code ("useadmin.dll")#include "PWRT_api.h"#pragma code()PWRTLogin('c');3.关闭项目并退出wincc:ExitWinCC ();4.退出运行到wincc资源管理器:DeactivateRTProject ();按钮变三种颜色#include "apdefap.h"long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) {#pragma option(mbcs)if(GetTagWord("TX/ZSH001")==1)return 0x0000ff00;elseif(GetTagWord("TX/ZSL001")==1)return 0x000000ff;elsereturn 0x00c0c0c0;}一个调用按钮变色#include "apdefap.h"long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) {#pragma option(mbcs)if(GetTagWord("NewTag")==0)return 0x0000ff00;elsereturn 0x00ffffff;}5.结束监控并关闭计算机(会弹出确认对话框)HWND hWnd = NULL;//Author:Smartsysint iRet;hWnd = FindWindow(NULL,"WinCC-运行系统 - ");iRet=MessageBox(hWnd,"结束监控并关闭计算机","关闭操作站",MB_YESNO|MB_ICONWARNING|MB_APPLMODAL);if(iRet==IDYES)DMExitWinCCEx (DM_SDMODE_POWEROFF);6.点击事件弹出对话框,通过点击弹出对话框的确定和取消按钮实现对变量的置位或取消: int r;r=MessageBox(NULL, "YES为开,NO为关", "确定开命令:", MB_YESNO |MB_SYSTEMMODAL); if (r==IDYES)SetTagBit("TAGNAME",TRUE);elseSetTagBit("TAGNAME",FALSE);7.开显示关显示:(要在内部变量中建立三个二进制变量COLSE_DISPLAY、DISPLAY_NO和DISPLAY_COMMENT)// Funktion: Bit in Doppelwort setzen;if (GetTagBitWait("COLSE_DISPLAY")==1 ){SetTagBit("COLSE_DISPLAY",0);SetTagBit("DISPLAY_NO",0); //Return-Type: BOOLSetTagBit("DISPLAY_COMMENT",0);}else{SetTagBit("COLSE_DISPLAY",1);SetTagBit("DISPLAY_NO",1); //Return-Type: BOOLSetTagBit("DISPLAY_COMMENT",0);}8.开阀确认:BOOL a;a=GetTagBit("30T制水启动"); //Return-Type :short intif (a==0){if(MessageBox(NULL,"真的要启动制水吗?","操作提示",MB_YESNO|MB_ICONQUESTION|MB_SETFOREGROUND|MB_SYSTEMMODAL) == 6){ SetTagBit("30T制水启动",1);//Return-Type :BOOL}}else{if(MessageBox(NULL,"真的要停止制水吗?","操作提示",MB_YESNO|MB_ICONQUESTION|MB_SETFOREGROUND|MB_SYSTEMMODAL) == 6){ SetTagBit("30T制水停止",1);}}9.将WinCC运行画面最小化HWND WinCCHwnd;WinCCHwnd=FindWindow(NULL,"WinCC-Runtime - "); //如果运行语言为英文if (WinCCHwnd==0) WinCCHwnd=FindWindow(NULL,"WinCC-运行系统 - "); //如果运行语言为中文CloseWindow(WinCCHwnd);10.显示或不显示(其中hiddVtext为内部的二进制变量)if(GetTagBit("hiddVtext")==0) //Return-Type: BOOL{SetTagBit("hiddVtext",TRUE); //Return-Type: BOOL//Return-Type: BOOL}else{SetTagBit("hiddVtext",FALSE);}10.打开编辑画面的脚本#pragma option(mbcs)#ifdef RUN_ON_WEBNAVIGATOR#elseHWND hExplorerWindow= NULL;HWND hRuntimeWindow= NULL;hExplorerWindow= FindWindow("WinCCExplorerFrameWndClass",NULL);hRuntimeWindow= FindWindow("PDLRTisAliveAndWaitsForYou",NULL);if(hExplorerWindow){ShowWindow(hExplorerWindow, SW_MINIMIZE); // This entry is only necessary for Windows 2000ShowWindow(hExplorerWindow, SW_SHOWNORMAL);SetForegroundWindow(hExplorerWindow);}elseprintf("rn SetForeground failed");#endif11.如何在WINCC中制作一个保持型按钮方法1:if( GetTagBit("M10") )SetTagBit("M10",0);elseSetTagBit("M10",1);方法2:SetTagBit("M1.0",(SHORT)!GetTagBit("M1.0"));求反指令,如果为1点击变为0,如果为0点击变为1方法3:或者做两个按钮,按钮一:显示,直接连接m1.0,是--不显示,否--显示。
Wincc常用C脚本
Wincc常用C脚本WINCC动画脚本电机风扇旋转(几何---起始角度):#include "apdefap.h"long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) {static DWORD f=20;if (GetTagBit("DI电机运行信号")) {f= f+30;if (f==360) (f=0);}return f;}电机风扇旋转(几何---结束角度):#include "apdefap.h"long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) {static DWORD i=80;if (GetTagBit("DI电机运行信号")) {i = i+30;if (i==360) (i=0);}return i;}**物料水平右移动(几何---位置X)(停车后,物料回到原点)**#include "apdefap.h"long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) {static int a=350;if (GetTagBit("DI电机运行信号") && (a<=730)) {a+=20;if (a>=720) (a=350);}if (!GetTagBit("DI电机运行信号")) (a=350);return a;}物料水平右移动(几何---位置X)(停车后,物料停在该点)#include "apdefap.h"long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) {static int a=350;if (GetTagBit("DI电机运行信号") && (a<=730)) {a+=20;if (a>=720) (a=350);}return a;}物料向上移动(几何---位置Y)(停车后,物料停在该点)#include "apdefap.h"long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) {static int b=450;if (GetTagBit("DI电机运行信号") && (b>=290)) {b-=10;if (b<=280) (b=450);}return b;}年月日(静态文本)#include "apdefap.h"char* _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) {time_t timer ;struct tm *ptm;char *p;time(&timer);ptm =localtime(&timer);p =SysMalloc(9);sprintf(p,"%04d/%02d/%02d",ptm->tm_year-100+2000,ptm->tm_mon+1,ptm->tm_mday); return(p);}时分秒(静态文本)#include "apdefap.h"char* _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName){time_t timer ;struct tm *ptm;char *p;time(&timer);ptm =localtime(&timer);p =SysMalloc(9);sprintf(p,"%02d:%02d:%02d",ptm->tm_hour,ptm->tm_min, ptm->tm_sec);return(p);}登陆到指定的用户名无须手动输入(按钮操作)#include "apdefap.h"void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y)#pragma code("useadmin.dll")#include "PWRT_API.H"#pragma code()PWRTSilentLogin("用户名", "口令");}**显示登陆对话框无须热键(按钮操作)**#include "apdefap.h"void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y){#pragma code ("useadmin.dll")#include "PWRT_api.h"#pragma code( )PWRTLogin('c');}退出WINCC运行(按钮操作)#include "apdefap.h"void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y){DeactivateRTProject ();}}单位递增按钮(到上限不提示出错)#include "apdefap.h"void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) {DWORD value;value=GetTagDWord("AI标签");if (value>90) (value=上限);else value=value+10;SetTagDWord("AI标签",value);}单位递减按钮(到下限不提示出错)#include "apdefap.h"void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) {DWORD value;value=GetTagDWord("AI标签");if (value<10) (value=下限);else value=value-10;SetTagDWord("AI标签",value);}**单位递增按钮(到上限提示出错)**#include "apdefap.h"void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName){DWORD value;HWND hWnd=NULL ;hWnd=FindWindow(NULL,"Wincc-运行系统- ");value=GetTagDWord("AI标签");if (value<=90) (value=value+10);else MessageBox(hWnd,"已到达上限值!","错误",MB_OK|MB_ICONWARNING|MB_APPLMODAL);SetTagDWord("AI标签",value);}**单位递减按钮(到下限提示出错)**#include "apdefap.h"void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName){DWORD value;HWND hWnd=NULL ;hWnd=FindWindow(NULL,"Wincc-运行系统- ");value=GetTagDWord("AI标签");if (value>0) (value=value-10);else MessageBox(hWnd," 已到达下限值!"," 错误",MB_OK|MB_ICONWARNING|MB_APPLMODAL);SetTagDWord("AI标签",value);}**自动登陆到指定的用户(画面属性--其它—**)**#include "apdefap.h"long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName){#pragma code("useadmin.dll")#include "PWRT_API.H"#pragma code()PWRTSilentLogin("用户名", "口令");return(0X0);}**询问框(最好用于单机启动,组启也可,2个按钮,NO不操作)**#include "apdefap.h"void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y){HWND hWnd=NULL;int 上位启动信号;hWnd=FindWindow(NULL,"WinCC C-Course");if (GetTagBit("DI备妥")){上位启动信号=MessageBox(hWnd,"电源已备妥,您现在确定要启动吗?","启动!",MB_YESNO|MB_ICONQUESTION|MB_APPLMODAL);printf("\r\nExample 3\r\n");if (上位启动信号==IDNO) (printf("User selected NO button \r\n"));else (SetTagByte("上位启动信号",1));}elseMessageBox(hWnd,"电源未备妥,请查证后重试!","启动!", MB_OK|MB_ICONHAND|MB_APPLMODAL);}**询问框(最好用于单机启动,组启也可,3个按钮,NO复位)**#include "apdefap.h"void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y){HWND hWnd=NULL;int上位启动信号;hWnd=FindWindow(NULL,"WinCC C-Course");if (GetTagBit("DI备妥")){上位启动信号=MessageBox(hWnd," 电源已备妥,您现在确定要启动吗?","启动!",MB_YESNOCANCEL|MB_ICONQUESTION|MB_APPLMODAL);if (上位启动信号==IDCANCEL) (printf("User selected NO button \r\n"));else{if (上位启动信号==IDYES) (SetTagByte("上位启动信号",1));else (SetTagByte("上位启动信号",0));}}elseMessageBox(hWnd," 电源未备妥,请查证后重试!","启动!", MB_OK|MB_ICONHAND|MB_APPLMODAL);}**搅拌器左侧扇页(几何—宽度)**#include "apdefap.h"long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) {static int h=50;static int u=0;if (GetTagBit("DI电机运行信号")) {if ((h>0)&&(h<=50)){(h-=2);return h;}if ((u>=0)&&(u<50)){(u+=2);return u;}u=0;h=50;return h;return u;}if (!GetTagBit("DI电机运行信号")){ h=50;u=0;return h;return u;}}**搅拌器左侧扇页(几何—位置X,右侧扇页没有位置变化)** #include "apdefap.h"long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) {static int h=75;static int u=125;if (GetTagBit("DI电机运行信号")){if ((h>=75)&&(h<125)){(h+=2);return h;}if ((u<=125)&&(u>75)){(u-=2);return u;}u=125;h=75;return h;return u;}if (!GetTagBit("DI电机运行信号")){h=75;u=125;return h;return u;}}**显示层按钮**SubX6309X94AE2X0000X0000_X6309X94AE2X0000X60C5_X630 9X94AE2X0000X653E_OnLB uttonDown(ByV al Item, ByV al Flags, ByV al x, ByV al y)Dim objScreenDim CountLayerSet objScreen = HMIRuntime.Screens("layer")For CountLayer=1 To 32 Step 1/doc/b84310496.html,yers(CountLaye r).Visible = vbFalseNext/doc/b84310496.html,yers(n).Visible = vbTrueEnd Subn=层数+1初始画面程序(画面空地--属性--事件--其它--打开画面--动作)**打印按钮**#include "apdefap.h"void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y){WinExec("PRTSCR.EXE -hardcopy",SW_SHOWNORMAL);}**一个圈代表电机两种状态**#include "apdefap.h"void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName){char* opentag="DI1电机运行信号";char* closetag="DI2电机运行信号";BOOL open,close;open = GetTagBit(opentag);close = GetTagBit(closetag);if (open)return CO_GREEN;if (close)return CO_BLUE; }。
WinCC定时器C脚本-推荐下载
2、脚本中定时器介绍
3、使用脚本实现更多定时器功能 3.1 整点归档 3.2 WinCC 项目激活时避免脚本初次执行及延迟执行脚本
1 定时器功能介绍
WinCC 中定时器的使用可以使 WinCC 按照指定的周期或者时间点去执行任务,比如周 期执行变量归档、在指定的时间点执行全局脚本或条件满足时打印报表。WinCC 已经提供 了一些简单的定时器,可以满足大部分定时功能。但是在有些情况下,WinCC 提供的定时 器不能满足我们需求,这时我们就可以通过 WinCC 提供的脚本接口通过编程的方式实现定 时的功能,因为脚本本身既可以直接 调用 WinCC 其他功能,比如报表打印,也可以通过 中间变量来控制其他功能的执行,比如通过置位/复位归档控制变量来触发变量记录的执行。 WinCC 提供了 C 脚本和 VBS 脚 本,本文主要以全局 C 脚本编程为例介绍定时功能的实 现。
软件环境:Windows 7 Professional Service Pack1 , WinCC V7.0 SP3
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,系电通,力1根保过据护管生高线产中0不工资仅艺料可高试以中卷解资配决料置吊试技顶卷术层要是配求指置,机不对组规电在范气进高设行中备继资进电料行保试空护卷载高问与中题带资2负料2,荷试而下卷且高总可中体保资配障料置各试时类卷,管调需路控要习试在题验最到;大位对限。设度在备内管进来路行确敷调保设整机过使组程其高1在中正资,常料要工试加况卷强下安看与全22过,22度并22工且22作尽22下可护都能1关可地于以缩管正小路常故高工障中作高资;中料对资试于料卷继试连电卷接保破管护坏口进范处行围理整,高核或中对者资定对料值某试,些卷审异弯核常扁与高度校中固对资定图料盒纸试位,卷置编工.写况保复进护杂行层设自防备动腐与处跨装理接置,地高尤线中其弯资要曲料避半试免径卷错标调误高试高等方中,案资要,料求编试技5写、卷术重电保交要气护底设设装。备备置管4高调、动线中试电作敷资高气,设料中课并技3试资件且、术卷料中拒管试试调绝路包验卷试动敷含方技作设线案术,技槽以来术、及避管系免架统不等启必多动要项方高方案中式;资,对料为整试解套卷决启突高动然中过停语程机文中。电高因气中此课资,件料电中试力管卷高壁电中薄气资、设料接备试口进卷不行保严调护等试装问工置题作调,并试合且技理进术利行,用过要管关求线运电敷行力设高保技中护术资装。料置线试做缆卷到敷技准设术确原指灵则导活:。。在对对分于于线调差盒试动处过保,程护当中装不高置同中高电资中压料资回试料路卷试交技卷叉术调时问试,题技应,术采作是用为指金调发属试电隔人机板员一进,变行需压隔要器开在组处事在理前发;掌生同握内一图部线纸故槽资障内料时,、,强设需电备要回制进路造行须厂外同家部时出电切具源断高高习中中题资资电料料源试试,卷卷线试切缆验除敷报从设告而完与采毕相用,关高要技中进术资行资料检料试查,卷和并主检且要测了保处解护理现装。场置设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。
wincc时间格式的更改
时间显示的格式是在WinCC在线趋势控制中通过“控制面板>区域和语言设置>区域选项>自定义>时间”设置的。
在此可指定想使用12还是24小时的显示格式。
如果设置被更改,系统必须重新启动才能使更改生效。
1.利用Wincc本身的时间控件,就是那个不能变24小时制的。
在打开画面中做一C动作。
代码如下:SetPropChar(lpszPictureName,"控件1","LocaleID","2052");问题解决。
对于时间控件显示时间的一点补充在第一种方法里,在打开画面里赋了C动作之后,在画面一打开的时候时间控件就有个框,非得在其他地方点一下才可以,问我怎么解决。
我刚看了一下,出现那个虚线框的原因是因为在对控件N赋值之后,控件自然就成为了画面的焦点。
我看了一下,在控件的属性里,有一项叫“FocusRect”,把这个取消就可以了。
2.在全局脚本中做一动作。
代码如下:#pragma code("kernel32.dll");void GetLocalTime(SYSTEMTIME* lpst);#pragma code();SYSTEMTIME time;GetLocalTime(&time);SetTagWord("Time1",time.wYear );SetTagWord("Time2",time.wMonth );SetTagWord("Time3",time.wDay );SetTagWord("Time4",time.wHour );SetTagWord("Time5",time.wMinute );SetTagWord("Time6",time.wSecond );SetTagWord("Time7",time.wDayOfWeek );其中Time1~Time7为所建立的变量,我建立的是16位有符号数,在画面上做几个输入输出域连上即可。
WinCC定时器C脚本-推荐下载
if(t1==00) { SetTagBit("startarchive",1); } if(t1==05) { SetTagBit("startarchive",0);
} return0; } 归档设置如图 2:
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,系电通,力1根保过据护管生高线产中0不工资仅艺料可高试以中卷解资配决料置吊试技顶卷术层要是配求指置,机不对组规电在范气进高设行中备继资进电料行保试空护卷载高问与中题带资2负料2,荷试而下卷且高总可中体保资配障料置各试时类卷,管调需路控要习试在题验最到;大位对限。设度在备内管进来路行确敷调保设整机过使组程其高1在中正资,常料要工试加况卷强下安看与全22过,22度并22工且22作尽22下可护都能1关可地于以缩管正小路常故高工障中作高资;中料对资试于料卷继试连电卷接保破管护坏口进范处行围理整,高核或中对者资定对料值某试,些卷审异弯核常扁与高度校中固对资定图料盒纸试位,卷置编工.写况保复进护杂行层设自防备动腐与处跨装理接置,地高尤线中其弯资要曲料避半试免径卷错标调误高试高等方中,案资要,料求编试技5写、卷术重电保交要气护底设设装。备备置管4高调、动线中试电作敷资高气,设料中课并技3试资件且、术卷料中拒管试试调绝路包验卷试动敷含方技作设线案术,技槽以来术、及避管系免架统不等启必多动要项方高方案中式;资,对料为整试解套卷决启突高动然中过停语程机文中。电高因气中此课资,件料电中试力管卷高壁电中薄气资、设料接备试口进卷不行保严调护等试装问工置题作调,并试合且技理进术利行,用过要管关求线运电敷行力设高保技中护术资装。料置线试做缆卷到敷技准设术确原指灵则导活:。。在对对分于于线调差盒试动处过保,程护当中装不高置同中高电资中压料资回试料路卷试交技卷叉术调时问试,题技应,术采作是用为指金调发属试电隔人机板员一进,变行需压隔要器开在组处事在理前发;掌生同握内一图部线纸故槽资障内料时,、,强设需电备要回制进路造行须厂外同家部时出电切具源断高高习中中题资资电料料源试试,卷卷线试切缆验除敷报从设告而完与采毕相用,关高要技中进术资行资料检料试查,卷和并主检且要测了保处解护理现装。场置设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。
wincc时间格式的更改
wincc时间格式的更改时间显示的格式是在WinCC在线趋势控制中通过“控制面板>区域和语言设置>区域选项>自定义>时间”设置的。
在此可指定想使用12还是24小时的显示格式。
如果设置被更改,系统必须重新启动才能使更改生效。
1.利用Wincc本身的时间控件,就是那个不能变24小时制的。
在打开画面中做一C动作。
代码如下:SetPropChar(lpszPictureName,"控件1","LocaleID","2052");问题解决。
对于时间控件显示时间的一点补充在第一种方法里,在打开画面里赋了C动作之后,在画面一打开的时候时间控件就有个框,非得在其他地方点一下才可以,问我怎么解决。
我刚看了一下,出现那个虚线框的原因是因为在对控件N赋值之后,控件自然就成为了画面的焦点。
我看了一下,在控件的属性里,有一项叫“FocusRect”,把这个取消就可以了。
2.在全局脚本中做一动作。
代码如下:#pragma code("kernel32.dll");void GetLocalTime(SYSTEMTIME* lpst);#pragma code();SYSTEMTIME time;GetLocalTime(&time);SetTagWord("Time1",time.wYear );SetTagWord("Time2",time.wMonth );SetTagWord("Time3",time.wDay );SetTagWord("Time4",time.wHour );SetTagWord("Time5",time.wMinute );SetTagWord("Time6",time.wSecond );SetTagWord("Time7",time.wDayOfWeek );其中Time1~Time7为所建立的变量,我建立的是16位有符号数,在画面上做几个输入输出域连上即可。
wincc系统日期时间获取
wincc系统日期时间获取wincc系统日期时间获取系统时间的获得,有两种办法,一是建立TAG,二是使用函数获取系统时间方法一:在[Tag Management]添加新的驱动"System Info.chn",然后在新添加的[SYSTEM INFO]新建连接,这样就可以创建实际TAG了;下面新建几个TAG:名字:date,数据类型:text tag 8-bit character set,地址设定为Function:date,format:"MM-DD-YY"名字:time,数据类型:text tag 8-bit character set,地址设定为Function:Time,format:"HH:MM:SS"根据上面的方法依次建立year,mon,day,week等TAG,请分别设置对应的format内容TAG建立完成了,就可以读到系统时间了。
新建一个图形文件,分别放置几个静态文本框[static text],把TEXT属性连接到上面新建的TAG,就可以显示系统日期时间,利用WEEK还能显示今天是星期几了.方法二: 使用C脚本获得系统时间#include "apdefap.h"char*_main(char*lpszPictureName,char*lpszObjectName,char*lpszPropertyNa me){time_ttimer;struct tm*ptm;char *p;time(&timer);ptm=localtime(&timer);p=SysMalloc(9);sprintf(p,"%04d:%02d:%02d",ptm->tm_year+1900,ptm->tm_mon+1,ptm->tm_md ay);return(p);}其中//系统时间已经获得//年:ptm -> tm_year+1900//月:ptm-> tm_mon+1//日:ptm -> tm_mday//星期:ptm -> tm_wday *注意这个,tm_wday返回的是整数,必须经过转换才能用来表示星期几。
时区函数有无时区转换总结
时区函数有无时区转换总结#include <stdio.h>#include <time.h>#include <sys/time.h>/*time_t time(time_t t)返回UTC时间*/time_t GetTimerSecond(void){struct timeval tv;struct timezone tz;gettimeofday( &tv, &tz);return _sec - tz.tz_minuteswest * 60; /// 本地时间:秒单位//return _sec; /// UTC时间:秒单位/// 获得毫秒级,当前系统时间return _sec * 1000 - tz.tz_minuteswest * 60 * 1000 + _usec / 1000;}///struct tm *localtime(const time_t *clock);///localtime_r(&UTCTime, &tm_time); //这里有时区转换, 从UTC时间转为本地时间/*struct tm st{st.tm_year = sysTime.year - 1900;st.tm_mon = sysTime.month- 1;st.tm_mday = sysTime.day;st.tm_hour = sysTime.hour;st.tm_min = sysTime.minute;st.tm_sec = sysTime.second;st.tm_isdst = 0;}*//// ***localtime和localtime_r有时区转换,UTC加时区void LocalTime(time_t *T,struct tm *s_tm1){struct tm s_tm;tzset();///s_tm = localtime(T); /// 将UTC时间,转换成本地时间localtime_r(T,&s_tm); /// 功能与localtime一样,但是可重入,前者不可。
wincc系统日期时间获取
p=SysMalloc
(9);
#34;,ptm->tm_year+1900,ptm->tm_mon+1,ptm->tm_mday);
return(p);}其中
//系统时间已经获得
//年:
ptm -> tm_year+1900
wincc
系统时间的获得,有两种办法,一是建立TAG,二是使用函数获取系统时间
方法一:
在[Tag Management]添加新的驱动"System Info.chn",然后在新添加的[SYSTEM INFO]新建连接,这样就可以创建实际TAG了;
下面新建几个TAG:
名字:
date,数据类型:
text tag 8-bit character set,地址设定为Function:
//月:
ptm-> tm_mon+1
//日:
ptm -> tm_mday
//星期:
ptm -> tm_wday *注意这个,tm_wday返回的是整数,必须经过转换才能用来表示星期几
date,format:
"MM-DD-YY"
名字:
time,数据类型:
text tag 8-bit character set,地址设定为Function:
Time,format:
"HH:
MM:
SS"
根据上面的方法依次建立year,mon,day,week等TAG,请分别设置对应的format内容
TAG建立完成了,就可以读到系统时间了。新建一个图形文件,分别放置几个静态文本框[static text],把TEXT属性连接到上面新建的TAG,就可以显示系统日期时间,利用WEEK还能显示今天是星期几了.方法二:
WinCC定时器C脚本
1、定时器功能介绍2、脚本中定时器介绍3、使用脚本实现更多定时器功能3.1 整点归档3.2 WinCC 项目激活时避免脚本初次执行及延迟执行脚本1 定时器功能介绍WinCC 中定时器的使用可以使WinCC按照指定的周期或者时间点去执行任务,比如周期执行变量归档、在指定的时间点执行全局脚本或条件满足时打印报表。
WinCC 已经提供了一些简单的定时器,可以满足大部分定时功能。
但是在有些情况下,WinCC 提供的定时器不能满足我们需求,这时我们就可以通过WinCC 提供的脚本接口通过编程的方式实现定时的功能,因为脚本本身既可以直接调用WinCC其他功能,比如报表打印,也可以通过中间变量来控制其他功能的执行,比如通过置位/复位归档控制变量来触发变量记录的执行。
WinCC 提供了 C 脚本和VBS 脚本,本文主要以全局 C 脚本编程为例介绍定时功能的实现。
2 脚本中定时器介绍既然在全局脚本中可以编程控制其他功能的执行,那么首先看看全局脚本的触发:图1 脚本触发器分类如图1所示:脚本触发器分为使用定时器和使用变量,定时器又分为周期执行和非周期执行一次,比如每分钟执行一次脚本属于周期执行,指定2012年10月1日执行一次属于非周期执行。
使用变量触发脚本,即在变量发生变化时,脚本就执行一次,而变量的采集可以根据指定周期循环采集,或者根据变化采集,根据变化实际是1秒钟采集变量一次。
3使用脚本实现更多定时器功能利用脚本自身的定时器,可以通过在脚本中编程的方式实现更多其它定时功能。
3.1整点归档WinCC提供了变量归档,变量归档分为周期归档和非周期归档,不管是周期归档或非周期的归档,都又可以通过一些变量或脚本返回值来控制归档,比如:整点归档。
下面的设置结合WinCC脚本,实现了在整点开始归档,归档五分种后停止归档,即每个小时仅归档前五分钟的数据。
软件环境:Windows 7 Professional Service Pack1 , WinCC V7.0 SP3归档名称:ProcessValueArchive归档变量:NewTag归档周期:1 分钟归档控制变量 startarchiveC脚本触发周期:10秒脚本代码:#include"apdefap.h"int gscAction( void ){#pragma option(mbcs)#pragma code ("kernel32.dll");void GetLocalTime (SYSTEMTIME* lpst);#pragma code();SYSTEMTIME time;int t1;GetLocalTime(&time);t1=time.wMinute;if(t1==00){SetTagBit("startarchive",1); }if(t1==05){SetTagBit("startarchive",0); }return0;}归档设置如图2:图2 归档设置同理,在以上脚本的基础上做修改,可以实现在某个指定的时间点打印报表,只要在满足触发条件时调用下列函数:RPTJobPrint("Myprintjob");Myprintjob为事先创建好的打印作业。
wincc查询变量归档写入spreadsheet脚本
If (m > 0) Then
oRs.MoveFirst
Dim s,t
s=5 ''时间行
t=5 ''数据行
i=5 ''循环
k=j+1
Do While Not oRs.EOF '是否到记录末尾,循环填写表格
If j=1 Then
If j=1 Then
sql = "Tag:R,('R\R1'),'" & UTCBeginTime & "','" & UTCEndTime & "','TIMESTEP=3600,1'" '3600秒查询间隔
End If
If j=2 Then
sql = "Tag:R,('R\R2'),'" & UTCBeginTime & "','" & UTCEndTime & "','TIMESTEP=3600,1'"
Set con=CreateObject("ADODB.Connection")
con.ConnectionString = sCon
con.CursorLocation = 3
con.Open
j = 1
Do While j<10 '10=查询归档变量数量+1
End If
CC++标准库之转换UTC时间到local本地时间详解
CC++标准库之转换UTC时间到local本地时间详解前⾔UTC 时间DateTime.UtcNow 和系统本地时间 DateTime.Now 相差8个时区,美国本地时间和北京时间相差15个时区:美国,⽽⼀般使⽤UTC时间⽅便统⼀各地区时间差异。
场景1.如果有⾯向全球⽤户的⽹站, ⼀般在存储时间数据时存储的是UTC格式的时间, 这样时间是统⼀的, 并可以根据当地时区来进⾏准确的转换.2.存储本地时间的问题就在于如果换了时区, 那么显⽰的时间并不正确. 所以我们存储时间时最好还是存储UTC时间,便于正确的转换.说明1.C/C++标准库提供了标准函数可以转换, 不需要借助Win32 API.例⼦// test_datetime_format.cpp : 定义控制台应⽤程序的⼊⼝点。
//#include "stdafx.h"#include <time.h>#include <sstream>#include <iostream>#include <assert.h>//2014-09-13T10:52:36Z//2014-09-13 10:52:36char* ConvertUtcToLocalTime(struct tm* t2,const char* date){struct tm t;memset(&t,0,sizeof(t));t.tm_year = atoi(date)-1900;t.tm_mon = atoi(date+5)-1;t.tm_mday = atoi(date+8);t.tm_hour = atoi(date+11);t.tm_min = atoi(date+14);t.tm_sec = atoi(date+17);time_t tt = _mkgmtime64(&t);if(tt != -1){if(t2 == NULL){t2 = &t;}*t2 = *localtime(&tt);char* ds = (char*) malloc(24);memset(ds, 0, 24);sprintf(ds, "%.4d-%.2d-%.2d %.2d:%.2d:%.2d", t2->tm_year + 1900,t2->tm_mon + 1, t2->tm_mday, t2->tm_hour, t2->tm_min,t2->tm_sec);return ds;}return NULL;}//https:///TR/NOTE-datetime//https:///en-us/library/2093ets1.aspx//2014-09-13T10:52:36Zint _tmain(int argc, _TCHAR* argv[]){const char* kTime = "2014-09-13 18:52:36";std::cout << "Source DateTime: " << "2014-09-13T10:52:36Z" << std::endl;auto t = ConvertUtcToLocalTime(NULL,"2014-09-13T10:52:36Z");std::cout << "Dest DateTime: " << t << std::endl;assert(!strcmp(t,kTime));t = ConvertUtcToLocalTime(NULL,"2014-09-13 10:52:36");std::cout << t << std::endl;assert(!strcmp(t,kTime));struct tm tt;t = ConvertUtcToLocalTime(&tt,"2014-09-13 10:52:36");std::cout << t << std::endl;assert(!strcmp(t,kTime));assert(tt.tm_year == (2014-1900));assert(tt.tm_mon == 9-1);assert(tt.tm_mday == 13);assert(tt.tm_hour == 18);assert(tt.tm_min == 52);assert(tt.tm_sec == 36);return 0;}}输出Source DateTime: 2014-09-13T10:52:36ZDest DateTime: 2014-09-13 18:52:362014-09-13 18:52:362014-09-13 18:52:36C++中获取UTC时间精确到微秒的实现代码在⽇常开发过程中经常会使⽤到时间类函数的统计,其中获取1970年⾄今的UTC时间是⽐较常使⽤的,但是在windows下没有直接能够精确到微妙级的函数可⽤。
支持win7本地时间与UTC时间转换的新功能的微软补丁KB2731771-双语介绍
支持win7本地时间与UTC时间转换的新功能的微软补丁KB2731771-双语介绍微软补丁 KB2731771 - 双语介绍支持Windows 7 或Windows Server 2008 R2 的本地时间与UTC时间转换的新APIs的补丁An update that provides new APIs for conversion between local time and UTC in Windows 7 or in Windows Server 2008 R2 is available简介 - Introduction本文介绍了一个支持 Windows 7 或 Windows Server 2008 R2 的本地时间与UTC时间转换的新APIs的补丁This article introduces an update that provides new APIs for conversion between local time and Coordinated Universal Time (UTC) in Windows 7 or in Windows Server 2008 R2.注意,新APIs并不变更windows.h win7和win 2008系统的头文件,你可使用LoadLibrary()和GetProcAddress()函数访问这些新的APIs。
Note The new APIs are not updated in the Windows.h header file for Windows 7 and for Windows Server 2008 R2. You can use the LoadLibrary function and the GetProcAddress function to access the new APIs.当使用DST时,这些新APIs就改进了本地时间和UTC时间的精度。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Next
Else
Set colTimeZone = objWMIService.ExecQuery("Select * from Win32_TimeZone")
Next
End If
Next
'Dim UTCLocal
'Set UTCLocal = ScreenItems("EAFeld4")
Dim UTCTime
UTCTime = DateAdd("n",UTCLocalDIFF,localTime)
Function LocalTimeToUTC(localTime)
' Dim localTime
Dim strComputer, objWMIService, colTimeZone, objTimeZone, colComputerSystem, objComputerSystem
For Each objTimeZone In colTimeZone
UTCLocalDIFF = -1 * objTimeZone.Bias 'in Minutes
' HMIRuntime.Trace vbCrLf & "Difference between LocalTime and UTC: " & UTCLocalDIFF & vbCrLf
Set colTimeZone = objWMIService.ExecQuery("Select * from Win32_TimeZone")
For Each objTimeZone In colTimeZone
UTCLocalDIFF = objTimeZone.DaylightBias - objTimeZone.Bias ' in Minutes
' HMIRuntime.Trace "Difference between LocalTime and UTC: " & UTCLocalDIFF & vbCrLf
Next
Else
Set colTimeZone = objWMIService.ExecQuery("Select * from Win32_TimeZone")
'Set LocalTimeEA = Nothing
End Function
Next
End If
Next
'Dim UTCLocal
'Set UTCLocal = ScreenItems("EAFeld4")
Dim UTCTime
UTCTime = DateAdd("n",0-UTCLocalDIFF,localTime)
'Set LocalTimeEA = Nothing
End Function
Function UTCToLocalTime(localTime)
' Dim localTime
Dim strComputer, objWMIService, colTimeZone, objTimeZone, colComputerSystem, objComputerSystem
'HMIRuntime.Trace "Locale Zeit: " & Now & vbCrLf
Dim SQLTimeFormat,SQLTimeFormatEA
SQLTimeFormat = Year(UTCTime) & "-" & Right ("00" & Month(UTCTime),2)
SQLTimeFormat = SQLTimeFormat & ":" & Right ("00" & Second(UTCTime),2)
'Set SQLTimeFormatEA = ScreenItems("EAFeld6")
'SQLTimeFormatEA.OutputValue = SQLTimeFormat
'HMIRuntime.Trace "Locale Zeit: " & Now & vbCrLf
Dim SQLTimeFormat,SQLTimeFormatEA
SQLTimeFormat = Year(UTCTime) & "-" & Right ("00" & Month(UTCTime),2)
'HMIRuntime.Trace "UTC Zeit im SQL Format: " & SQLTimeFormat & vbCrLf
'Set UTCLocal = Nothing
Set objWMIService = Nothing
Set colComputerSystem = Nothing
SQLTimeFormat = SQLTimeFormat & "-" & Right ("00" & Day(UTCTime),2)
SQLTimeFormat = SQLTimeFormat & " " & Right ("00" & Hour(UTCTime),2)
SQLTimeFormat = SQLTimeFormat & ":" & Right ("00" & Minute(UTCTime),2)
Set colComputerSystem = objWMIService.ExecQuery("Select * from Win32_ComputerSystem")
For Each objComputerSystem In colComputerSystem
If objComputerSystem.DaylightInEffect Then
'HMIRuntime.Trace "UTC Zeit im SQL Format: " & SQLTimeFormat & vbCrLf
'Set UTCLocal = Nothing
Set objWMIService = Nothing
Set colComputerSystem = Nothing
Set UTCLocalDIFF = Nothing
LocalTimeToUTC=SQLTimeFormat
'HMIRuntime.Trace "UTC out SQL Format: " & LocalTimeToUTC & vbCrLf
'Set SQLTimeFormatEA = Nothing
Set colComputerSystem = objWMIService.ExecQuery("Select * from Win32_ComputerSystem")
For Each objComputerSystem In colComputerSystem
If objComputerSystem.DaylightInEffect Then
SQLTimeFormat = SQLTimeFormat & ":" & Right ("00" & Second(UTCTime),2)
'Set SQLTimeFormatEA = ScreenItems("EAFeld6")
'SQLTimeFormatEA.OutputValue = SQLTimeFormat
'UTCLocal.OutputValue = UTCTime
'HMIRuntime.Trace "UTC Zeit: " & UTCTime & vbCrLf
'Dim LocalTimeEA
'Set LocalTimeEA = ScreenItems("EAFeld5")
'LocalTimeEA.OutputValue = Now
Set colTimeZone = objWMIService.ExecQuery("Select * from Win32_TimeZone")
For Each objTimeZone In colTimeZone
UTCLocalDIFF = objTimeZone.DaylightBias - objTimeZone.Bias ' in Minutes
Dim UTCLocalDIFF
' Set UTCLocalDIFF = ScreenItems("EAFeld1")
strComputer = "."
' localTime = Now
Set objWMIService = GetObjectห้องสมุดไป่ตู้"winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")