- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PAGE
PAGE 1
用WinCC读取的PC时间设置PLC控制器的时间 - 西门子plc
由于最近手头一个项目用NTP和SMITIC模式去做时间同步都不成功,咨询西门子热线怀疑是plc硬件版本的问题,由于项目已经运行,程序太多不能停机,所以就想着用wincc读取服务器的时间,然后把读取的时间写入PLC来做时钟同步,服务器是外置gps时钟的客户端,时间同步没问题,具体步骤如下: 下面的方法是使用WinCC的脚本把本地或者系统时间写到数据块(DB350)的变量中。 这些变量作为Date_And_Time数据类型变量被调用,传送到系统块SET_CLK (SFC0)中。 说明 步骤1 1、创建一个共享数据块DB350,在里面建立如下变量,如图所示: 2、创建1个功能FC30,在里面调用SFC0,如图所示: 3、写设置校对周期的循环时间程序,示例中设置为60S,如图所示: 4、在OB1中调用FC30,Step7的程序到此结束。 步骤2 1、打开wincc变量管理器,新建如下变量,变量类型为无符号8位值,格式调整为ByteToBCDByte,如图所示: 2、打开全局脚本,在全局动作中写如下脚本,编译保存, 注意 函数使用“设置系统时间”将格林威治时间写入控制器。如果希望将系统时间写入控制器,可以在C脚本中,将“Get Local Time”注释掉,用“Get System Time”(在C脚本中被注释掉的部分)替代。如图所示: 脚本附件: #include apdefap.h void SetCpuTime() { #pragma code(kernel32.dll); void GetLocalTime(SYSTEMTIME *lpst); #pragma code(); SYSTEMTIME time; BOOL ret; //printf(Start function SetCpuTime\r\n); //GetSystemTime(time); //Use if system time is needed GetLocalTime(time); // Use if local time is needed ret = SetTagMultiWait(%d%d%d%d%d%d%d, Year,time.wYear-2000, Month,time.wMonth, Day,time.wDay, Hour,time.wHour, Minute,time.wMinute, Second,time.wSecond, Flag,1 ); //end SetTagMultiWait } // end function 3、至此wincc这边设置完成,然后下载PLC程序,运行wincc就可以啦!
原创力文档


文档评论(0)