S7300时钟转换问题

需要做一个定时启动和定时停止的程序,时间可以在WINCC(6.2版本)中由用户任意修改。我想把小时和分钟按两个变量来控制,变量的类型是REAL,这样设置的话可否直接转换成与系统时钟匹配的小时和分钟,系统的小时和分钟读出来是BCD码形式的,这个之间的转换如何来做呢?

问题补充:
系统时钟读出来的数据是BCD码的,转换成INT类型的数据后只能看到月份、小时和秒的数值,年、日和分钟的数值看不到,怎么转换才能看到年、月、日、时、分、秒这些数据呢?

最佳答案

1、从上位机写整型数INT或实数REAL到PLC,首先该数值需包含以毫秒为单位的时间值,在写入PLC的数据存储区后,利用ITD(Integer to Double Integer)或RND(Real to Double Integer with Rounding Off)将该值转换为双整形,然后将该值写到类型为TIME的变量里,在程序中调用FC40,将TIME转换成S5TIME即可。
2、从上位机写WORD到PLC,首先该数值需包含以某时基为单位的时间值,在写入PLC的数据存储区后,用Word Logic下的WOR_W指令将该值与其时基相或,再利用MOVE指令将得到的数值写入S5TIME类型的变量中。
3、如果使用WinCC作为上位软件,或上位软件支持32位带符号浮点数,可以从上位写32位带符号浮点数到PLC中定义为TIME的变量,然后在程序中调用FC40,将TIME转换成S5TIME即可。
相关资料:
《step7中有关时间和定时器的使用和例程(2007.09.03)》   下载: 
 http://www.ad.siemens.com.cn/download/searchResult.aspx?searchText=A0087
《 Step7中的时间、日期和定时器(2004.06.01)     》下载:
http://www.ad.siemens.com.cn/download/searchResult.aspx?searchText=A0019
参见《TIME, DATE and TIMER in STEP 7》下载:
http://d101.d.iask.com/fs/800/1/3afb689f14c1def3889e0e7413fba89e10236930/pdf/Time%2C+Date+and+Timer+in+STEP+7.pdf

问题补充:
当使用数据类型DATE_AND_TIME (DT) 时,将占用数据存储区的8个连续字节,以BCD码格式保存。该数据类型范围如下: 
DT#1990-1-1-0:0:0.0 to DT#2089-12-31-23:59:59.999 
下列IEC标准功能块进行与DATE_AND_TIME相关的操作: 
•FC3: D_TOD_DT: 将DATE和TIME_OF_DAY (TOD) 结合起来,转换成DATE_AND_TIME (DT)。该功能块的管脚IN1必须在DATE#1990-01-01 到DATE#2089-12-31范围内。
 •FC6: DT_DATE: 从DATE_AND_TIME 中取出DATE。
•FC7: DT_DAY : 从DATE_AND_TIME 中取出the day of the week,即星期几。
•FC8: DT_TOD: 从DATE_AND_TIME 中取出时间。 
 

提问者对于答案的评价:
非常感谢楼主的奉献,如果将INT类型的变量通过一系列转换变为S5TIME类型,我将CPU的时钟和上位机(WINCC)同步后,直接读取CPU时钟,然后再和S5TIME的值比较。但是比较的函数里面没有WORD类型的,只有INT、DINT和REAL类型的。那么系统时钟的小时和分钟这两个值怎么读取出来呢?手册中系统的小时和分钟都是BCD码的,而且还是BYTE类型,我通过BCD_I转换时只能读到一个值,例如将年和月的转换出来时只得到月的数值,没有年的。将天和小时的读出来时只有小时的没有天的。将分钟和秒的读出来时只有秒的,没有分钟的。实际上我只要读到星期几、小时和分钟就能完成任务。怎么将BCD码的小时转换为INT或者DINT或者REAL类型的呢,就是这两个值的类型要相同,值也相同时才能做判断的。我要做的程序有好多个计划,每个计划可以设置不同的时间段,在不同的时间段内完成风机的启停和消毒控制。

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年11月1日 下午2:09
下一篇 2020年11月1日 下午2:09

相关推荐

  • wincc7.2 打开之后,马上就关闭了

    为什么我的wincc打开之后,闪一下,马上就关闭了,已经授权(网上下的授权),而另一台电脑同样是这样授权的,没有这种问题,有点不能明白 最佳答案 请购买正版授权,闪一下应该不是授权…

    自动化系统综合 2017年8月18日
  • 博途V13对314C-2DP/PN变成

    博途对314C编程的时候,为什么不能寻址一个字节中的某一个位,而且用网上的方法,使用at变量时候,根本就找不到retain这一栏,这是怎么回事,是不是300不支持博途编程 图片说明…

    2017年6月9日
  • pc控制技术

    请问pc如何与profibus总线上的I/O模块接收和发送信号,控制变频器之类的设备,听说可以通过VB语言来编写,想了解一下怎么来实现。 最佳答案 参见通过VB语言来编写profi…

    自动化系统综合 2020年10月31日
  • WIN7下如何安装WINCCflexible2008

    WIN7下无法安装WINCCflexible2008 最佳答案 1、wincc flexible 2008 SP2 支持WIN7版本的操作系…

    自动化系统综合 2020年10月31日
  • 能否从PLC的上载SCL程序中转化为SCL格式程序?

    从PLC上载的SCL程序打开时不是SCL格式的程序,而是STL语句表格式,是否有办法转化为SCL格式或者直接用SCL编程器打开? 最佳答案 不能,只能是STL。 提问者对于答案的评…

    自动化系统综合 2020年11月1日
  • step7版本

    “STEP7__V53+SP2_HF7”中的“HF”代表啥? 最佳答案 HF是Hotfix简称 Hotfix是针对某一个具体的系统漏洞或安全问题而发布的专门解决该漏洞或安…

    自动化系统综合 2020年11月1日
  • em253接线

    em253驱动三菱MR-J2S伺服。 伺服用位置方式(脉冲加方向位),用伺服驱动器的内部15v电源,请问em253的输出该如何接线啊? 5vdc—-&nbs…

    自动化系统综合 2020年11月1日
  • step7 模拟量输入输出的操作

    梯形图中,数字量输入可用常开触电(I0.0),输出可用线圈(Q0.0),模拟量输入输出怎么处理。比如我用一个打开一个开关,输出0~24mA中的值,该怎么处理?求资料啊 问题补充:那…

    自动化系统综合 2020年10月31日
  • CIP管道设计原理

    CIP管道设计原理,求该人指点。愿拜师QQ1183*7019Mail:ividcheng@163.comTEL:13285180823 最佳答案 可以这里看看http://www.…

    自动化系统综合 2020年10月31日
  • 怎么用星形接法判断可控硅有没有损坏

    我有一个加热炉上面用到可控硅,但我要做出厂调试,听说可以接个灯泡来判断它有没有损坏,但不知道具体的做法?请高人指点??谢了。 问题补充:给个不要钱OR积分的资料,参考《项目5家用调…

    自动化系统综合 2020年10月31日