[西门子] 5台水泵自动轮换启停案例(故障自动切换)

[复制链接]
查看629 | 回复1 | 2024-6-26 09:21:07 | 显示全部楼层 |阅读模式
>导读:在工业现场中通常需要设备正常、稳定、高效运行,这样才能保证工厂经济效益。那么本文就针对甲方提出的设备运行时间均衡而编写的程序。
一、控制要求
现场有5台水泵,5台水泵具体的运行过程如下:
1.每次只有一台水泵运行,运行时需要记录电机的运行时间
2.为了确保每台水泵的运行时间均衡,每次启动时,启动运行时间最少的水泵
3.每台水泵都有故障信号,当水泵出现故障时能自动切换到下一台运行时间最少的水泵运行。
4.故障出现后,水泵的运行时间需要保持不变,不能丢失。
I/O分配表

二、程序设计
1.新建FB3012程序块,定义接口变量

2.程序段1
1).初始化数据
2).读取以"#Motor_Runtime[1]"为起始的第1个元素,因为“#FieldRead_Index”的值是1,并且把该值当作最小值且记录元素的下标值到“#Min_Index”中
3).当找最少水泵运行条件不满足时,则跳出该FB块的执行

3.改变数组的下标值指向下一个元素,并使用FieldRead指令读取对应元素值,对读取的值用于与最小值做比较,如果读取的值比最小值的值还小则交换,把读取的元素值放回到最小值的寄存器中


4.新建FB3013程序块,并且定义接口变量

5.由于本案例中用于存储电机运行时间的存储器使用的是INT数据类型的变量,当水泵出现故障时,为了把故障排除,重新从剩下的电机中找到一台运行时间最少的水泵运行,可在出现故障时,把一个最大值32767赋值到故障电机运行时间记录的存储器中。而在故障消失后,记录的正常运行时间又需要保持,所以在出现故障时把电机正常运行时间转存到另外的存储器,在故障消失后把该值放回到记录水泵的运行时间中。






6.当按下启动按钮或是出现故障,而停止条件不满足时需要调用FB3012程序块,找出运行时间最少的水泵。

7.当运行条件满足时,根据计算出来的运算时间最少的电机是哪一台而启动运行,电机运行时需要对电机的运行时间进行累计。





8.电机运行时间与运行信号进行映射


9.调用FB3013程序块,并且赋参数。

写在最后:如果文章对您有所帮助,帮忙点个“赞”和“在看”呗!!!


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
hanjiantree | 2024-9-8 18:23:42 | 显示全部楼层
思路很好!感谢分享!能否把程序分享学习下?
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则