设为首页
收藏本站
PLC技术网
开启辅助访问
切换到宽版
登录
注册哦
只需一步,快速开始
微信扫码登录
门户
Portal
论坛
BBS
导读
Guide
排行榜
Ranklist
搜索
搜索
本版
文章
帖子
用户
PLC论坛-全力打造可编程控制器专业技术论坛
»
论坛
›
工控技术交流区
›
『国外:三菱/西门子/欧姆龙/松下』
›
西门子SCL编程实例-计算设备运行时间(2) ...
返回列表
发新帖
[西门子]
西门子SCL编程实例-计算设备运行时间(2)
[复制链接]
82777
|
0
|
2024-4-28 20:38:02
|
显示全部楼层
|
阅读模式
上一篇文章(西门子SCL编程实例-计算设备运行时间)我们使用Time数据类型的数据来存放设备的运行时间。由于Time类型的最大值为:24天20小时31分钟23秒647毫秒,细心的小伙伴提出一个问题:如果设备运行时间超过这个最大值怎么办呢?的确,设备实际使用中运行时间很可能会超过这个限值。今天这篇文章,我给出我的解决思路。
解决方案分两种情况:
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中;
如下图所示:
2.2、重新编译数据块myEquipmentData
如下图所示:
2.3、添加时间中断组织块OB10
在OB10中编写代码将设备的运行时间加1,并设定最大运行时间为10年(5256000分钟),如果超过该值则运行时间清零,如下图所示:
2.4、将OB10的中断执行频率设置为每分钟
如下图所示:
2.5、添加FC_Handle_Time2
FC_Handle_Time2用来将总时间的分钟数转换成直观的*天*小时*分钟的形式,变量声明部分如下图所示:
代码如下图所示:
2.6、在主程序中调用FC_Handle_Time2
OB1代码如下图所示:
好了,关于设备运行时间统计的第二个版本就先介绍到这里。
。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
注册哦
x
回复
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册哦
本版积分规则
发表回复
回帖后跳转到最后一页
founderchip
回复楼主
返回列表
『国外:三菱/西门子/欧姆龙/松下』
『国产:台达/汇川/信捷产品交流区』