文末有200SMART项目案例及模板编程
导读:在我们实际工作中,需要实现设备同等时间的运行,这样不会让某个设备长期过度运行造成损坏。比如车间有5台水泵,每次启动时,应该优先选择最短的那台水泵启动。那么我们就必然要知道哪台水泵运行的时间最长和最短,并且知道它的编号,那么对于这种程序如何编写呢?可以借鉴以下2种方法。
1.控制要求:
从5台水泵中,计算出最长和最短运行时间的水泵,并且读取出其编号。
2.编写程序:
方法一:指针间接寻址法
已知5台水泵电机的运行时间(单位:秒)分别存储在VD100至VD116中5个地址中,1#水泵运行时间存储在VD100中;2#水泵运行时间存储在VD104,依次类推。
程序段1是建立指针VD0指向VB100起始的数据
程序段2是5个数据循环5次,循环次数存储在VW18中
程序段3,第1次时,将VD100的数据分别存储在VD32和VD28中,用于计算。同时第1次VW18的值是等于1,将值存储在VW20和VW22中 程序段4取出VD100开始地址的值,第一次时读取的是VD100的值,第二次是VD104的值,依次类推,总共循环5次,最终读取到VD116中的值。
程序段5是第1次执行时判断,VD24(也就是VD100)的值和VD32的值比较,VD32的值是来源于程序段3,也就是VD100,其实就是不比较;
第2次执行时判断,VD24(也就是VD104)的值和VD32的值比较,VD32的值是来源于程序段3,也就是VD100,如果VD104的值大于VD100的值,则将当前值存储在VD32中,认为此值就是最大值
第3次执行时判断,VD24(也就是VD108)的值和VD32的值比较,如果VD108的值大于VD104的值,则将当前值存储在VD32中,认为此值就是最大值。
第4次和第5次执行逻辑也如上所述
程序段6指针加4,可以实现V100,VD104,VD108,VD112,VD116数据读取
最大值VD32,编号存储在VW16中,最小值VD28,编号存储在VW10中
方法二:直接寻址法
已知5台水泵电机的运行时间(单位:秒)分别存储在VD700至VD716中5个地址中,1#水泵运行时间存储在VD700中;2#水泵运行时间存储在VD704,依次类推。
每个扫描周期将最小值编号和最小值赋值,VD602的值赋值为32位数据的最大值,用于数据比较。
判断VD602的值大于VD700将1赋值给VB600,认为其是最小值,并将VD700的值赋值给VD602;然后VD602的值与VD704的值比较,如果大于,则认为其是最小值,依次类推。
每个扫描周期将最大值编号和最大值赋值,VD720的值赋值为32位数据的最小值,用于数据比较。
判断VD720的值小于VD700将1赋值给VB601,认为其是最大值,并将VD700的值赋值给VD720;然后VD720的值与VD704的值比较,如果小于,则认为其是最大值,依次类推。
最近有很多小伙伴说要案例书籍,说是手机上看文章不是很方便,我抽时间把200SMART项目案例及模板整理出来,案例都是比较典型的,其中包括气缸控制程序、报警程序、程序框架、运动控制程序、模拟量控制变频器、通信和报文解读等实战案例。需要的可以加我微信:biao467524527,如果加不上可以私信我