需要读出CPU315-2DP的系统时钟,与设定的时间作比较,然后出各班的报表数据.docxVIP

需要读出CPU315-2DP的系统时钟,与设定的时间作比较,然后出各班的报表数据.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
需要读出CPU315-2DP的系统时钟,与设定的时间作比较,然后出各班的报表数据

今天遇一用户,需要读出CPU315-2DP的系统时钟,与设定的时间作比较,然后出各班的报表数据。可用户就是不理解Date_And_Time的数据类型,在程序里怎么写,都是红色的,郁闷死了,客户自己说都弄一天了,说了很多和技术不相关的内容,用户最后的要求就是一步一步教他怎么做。没办法,谁让咱们的数据类型如此“复杂”呢?不过虽然读取和设置系统时钟很简单,总会有人问,如何用SFC0和SFC1来设置和读取时钟,今天就和大家说一说。首先Date_And_Time是一复杂数据类型,包含8个字节,Byte0-Byte7对应年、月、日、时、分、秒、毫秒、星期,对应关系如下表所示:Byte6和Byte7的高4位组合成毫秒,格式是BCD码,Byte6是高位,Byte7是低位我们可以在DB块里定义time1和time2变量,数据类型是DATE_AND_TIME,如下图:在符号表中定义DB1的符号名为system-time,如下图:然后调用SFC0和SFC1就可以了,大家可以参考下面的程序(可以将程序拷贝到Step7中,然后可以转成梯形图程序),具体使用时间时可以直接寻址DB1.DBB0? –? 年? ? ……DB1.DBB7(低4位)? –? 星期,DB1.DBB8? –? 年? ……DB1.DBB15(低4位)? –? 星期。(这段程序和用户解释了很长时间,用户就是理解不了,难啊。。。)OB1:Main? Program? Sweep? (Cycle)Network1:? ? ? ? ? ? A? ? ? ? ? M? ? ? ? ? 10.0? ? ? ? ? ? ? ? ? ? ? ? JNB? ? ? _001? ? ? ? ? ? ? ? ? ? ? ? ? ? ? CALL? ? SFC? ? ? ? 0? ? ? ? ? ? ? ? ? ? ? ? ? ? ? PDT? ? ? ? :=system-time.time1? ? ? ? ? ? ? ? ? ? ? ? ? ? ? RET_VAL:=MW100? ? ? ? ? ? ? ? ? ? ? ? ? ? ? _001:? NOP? ? ? 0Network2:? ? ? ? ? ? CALL? ? READ_CLK? ? ? ? ? ? ? ? ? ? ? ? ? ? ? RET_VAL:=MW102? ? ? ? ? ? ? ? ? ? ? ? ? ? ? CDT? ? ? ? :=system-time.time2? ? ? ? ? ? ? ? ? ? ? ? ? ? ? NOP? ? ? 0因为客户用SFC1读取时钟不是很清楚,还有就是他对时间误差的要求到分就可以,所以推荐一种简单的方法,不知大家之前用过没有,就是使用OB1的临时变量OB1_DATE_TIME(在OB1的Interface? –? TEMP中可以找到),此变量也是DATE_AND_TIME的数据类型,对应的临时变量地址是LB12? –? LB19,同样对应年? –? 星期,符合上面表格中的结构,我们只需要使用Move指令就可以得到PLC的系统时间了。例如我们可以将LD12? Move? 到MD0、LD16? Move? 到MD4中,然后在程序中寻址MB0? –MB7就可以了。您可以参考下面的程序(可以将程序拷贝到Step7中,然后可以转成梯形图程序)。需要注意,OB1临时变量读出的时间会受OB1扫描周期的影响,例如OB1扫描周期是15ms左右,那么从OB1中读出的时间精度应该就是15ms左右。OB1:Main? Program? Sweep? (Cycle)Network1:? ? ? ? ? ? ? ? ? A(? ? ? ? ? ? ? ? ? ? L? ? ? ? ? LD? ? ? ? 12? ? ? ? ? ? T? ? ? ? ? MD? ? ? ? ? 0? ? ? ? ? ? SET? ? ? ? ? ? ? ? ? SAVE? ? ? ? ? ? ? ? CLR? ? ? ? ? ? ? ? ? A? ? ? ? ? BR? ? ? ? ? ? )? ? ? ? ? ? ? ? ? ? ? JNB? ? ? _002? ? ? ? ? ? L? ? ? ? ? LD? ? ? ? 16? ? ? ? ? ? T? ? ? ? ? MD? ? ? ? ? 4? ? ? ? ? ? ? ? ? _002:? NOP? ? ? 0如果需要设置系统时钟,还需要使用SFC0来实现。客户使用此种方法很快就解决了问题,当然有简单的方式就是用简单的方式了。我也郁闷,难道真是Step7程序太复杂了,可能吧,哈哈,多学习就会越来越简单,而且会越来越灵活。用户朋友们,让咱们一起努力,让我们的技术越来越好,经验

文档评论(0)

shenlan118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档