python3计算运行时间_西门子SCL编程实例-计算设备运行时间(2)

​上一篇文章(西门子SCL编程实例-计算设备运行时间)我们使用Time数据类型的数据来存放设备的运行时间。由于Time类型的最大值为:24天20小时31分钟23秒647毫秒,细心的小伙伴提出一个问题:如果设备运行时间超过这个最大值怎么办呢?的确,设备实际使用中运行时间很可能会超过这个限值。今天这篇文章,我给出我的解决思路。

6cf659f9e680eb1bc843b99f43990782.png

解决方案分两种情况:

1、项目使用的PLC类型为S7-1500系列

这种情况很好解决,因为S7-1500支持LTime类型,该类型的最大时间为11350天_20小时_25分钟_14秒_830毫秒_652微秒_315纳秒,这个时间足够长了。因此,只需要把数据类型MyEquipment中的running_time的类型改LTime,并且把FC_Runtime_Caculate做相应更改就可以了;

2、项目使用的PLC类型为S7-1200系列

这种情况下,如果仍然按照获取两个日期时间差值的思路,编程会很复杂。所以,需要换一下思路:通过时间中断组织块OB10,将某个值按照指定的频率周期性加一,达到计时的目的。

具体步骤如下:

2.1、更新MyEquipment数据类型

在原来的基础上,做如下更改:

1)增加totalRunningTime,类型为:UDInt,表示设备运行的总时间,以分钟为单位;

2)以分钟为单位的总时间不太直观,所以将其转换成*天*小时*分钟的形式,相关数值存放在:totalRunningDays/totalRunningHours/totalRunningMinutes中;

如下图所示:

1dd56335fb8604d1efbcd88d20e770df.png

2.2、重新编译数据块myEquipmentData

如下图所示:

863205153011eb8c5315489b75b6d710.png

2.3、添加时间中断组织块OB10

在OB10中编写代码将设备的运行时间加1,并设定最大运行时间为10年(5256000分钟),如果超过该值则运行时间清零,如下图所示:

ce3c59c8f0c6ea0fa4815cace8f8166a.png

2.4、将OB10的中断执行频率设置为每分钟

如下图所示:

4cedd3d1de84f06b6758238e7e1167e2.png

2.5、添加FC_Handle_Time2

FC_Handle_Time2用来将总时间的分钟数转换成直观的*天*小时*分钟的形式,变量声明部分如下图所示:

8c837bade8d13bad56212773d037acdd.png

代码如下图所示:

4c986373a010f127c1c2902cdca573f0.png

2.6、在主程序中调用FC_Handle_Time2

OB1代码如下图所示:

aed69248013d00169f3d6a09e41b6a59.png

好了,关于设备运行时间统计的第二个版本就先介绍到这里。如果你觉得有任何问题欢迎在本文底下留言。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值