想了好几天,愣是没想到怎么用程序写出来,发出来请教大家
能描述出来,就是写不出来(笑哭)
1.现场有八个电机,都计时运行时间,
想实现
启动第一台的信号,在八个电机里找运行时间最短的启动
启动第二台的信号,在剩下七个电机里找运行时间最短的启动
。。。
给停止一台的信号时,在已经运行的电机里找运行时间最长的停掉
。。。
钻石用户推荐最佳答案
1、数据定义
定义泵号数据区, VW0-VW14 共8个字,每个字中装的是泵号,依次为 1-8
定义泵运行时间数据区,VW20-VW34 共8个字,对应的是1-8号泵的运行时间,与泵号依依对应;
定义8个定时器,对应8个泵的计时
定义查找泵号的数据区 VW40-VW54 共8个字,每个字中装的是泵号,它没有顺序,只是在排完序后,VW40中 记录的是运行时间最短的泵的编号,VW54中记录的是运行时间最长的泵号
定义查找时长的数据区 VW60-VW74 共8个字,每个字中装的是运行时间,它没有顺序,只是在排序完序后,VW60中 记录的是运行时间最短的泵的运行时间,VW74中记录的是运行时间最长的泵运行时间
2、主要算法
2.1
当有一个启动信号来时,则将 VW0-VW14 共8个字复制到 VW40-VW54,同时将VW20-VW34复制到VW60-VW74;
此时,将VW60-VW74从小到大排序,如顺序不符则交换,同时对VW40-VW54中的泵号进行交换。这样得到的VW40中的泵号就是要启动的泵
2.2
当有一个停止信号来时,则将 VW0-VW14 共8个字复制到 VW40-VW54,同时将VW20-VW34复制到VW60-VW74;
此时,将VW60-VW74从小到大排序,如顺序不符则交换,同时对VW40-VW54中的泵号进行交换。这样得到的VW54中的泵号就是要停止的泵
2.3
当某泵处于运行状态时,其对应的定时器会计时,计时器每计时半小时,根据计时器号与泵号的对应关系,则将对应泵的运行时间值自加1,实面对泵运行时间的计时。
3、本算法得用间接寻址的方式进行,会减少代码,且处理起来方便一些,建议在理解间接寻址的基础上做,效果会好。
S7-200 SMART 间接寻址
http://www.ad.siemens.com.cn/productportal/Prods/s7-200-smart-portal/200SmartTop/programming/indirect_addressing.html
提问者对于答案的评价:
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc344626.html