昨天看到有这样一个贴子,要求编辑一个相对速度的计算公式,实际上类似的问题只需要理解了其中的一些基本原理,编辑这样的程序也不算有难度的项目。在回复中大概讲了调用定时中断的方法,因为定时中断相对于间隔时间是一个相对恒定了时间区间,这样计算出来的速度比较合理。
方式:
1) 定义一个循环定时中断,假设200mS。
2) 在这个中断组织块中编辑速度值程序。
程序:
1) 创建一个新项目,plc为S7-1214C ,选择版本V4.2的cpu确认。
2) 插入一个循环定时中断,设置定时中断时间周期为200mS,图示:
该电路(如图)适用于数字万用表等小电流的供电。用1.2伏的五号充电电池代替9伏层叠电池,改后比较经济实用。
笔者改装了一部叮—890型数字万用表和DA—1型电子按摩器,使用两年多来都很正常。电路是运用间歇振荡器的快速关断(截止)的特性而实现升压的。在空载时(稳压管和负载开路),升压可达70多伏。元件I用中8mm的小磁环,初级绕5匝,次级绕奶匝。三极管选用p值大的、饱和压降小的硅管。其他为普通电子元件。如果需要不同的电压,可以改用相应的稳压管。线路元件少,可设计装在原电池盒内
为什么需要设置循环定时中断为200mS?这个主要还是一个所谓的经验方式,如果把这个周期设置时间间隔相对较大,那么,速度计算出来的值,看起来数据“跳变"现象大,尤其是项目速度不恒定的速度计算。如果这个周期时间间隔设置相对小,速度数据变化频繁,同样也针对于速度不恒定的环境下,看起来会不这么舒服(数据的大、小值变化)。所以,这个循环定时中断时间还是需要根据具体的设备,通过实际比较找到一个相对合适的定时循环中断周期计算。
3) 速度程序,在设置的定时中断组织块OB30中编辑速度程序,图示:
速度值的计算原理:
在一个始终循环的定时中断(200mS)中,编辑速度数据的当前值减上一个周期的速度数据,得到通过一个200mS时间间隔的差值,这个差值是设备在移动或者运行后,通过200mS周期后的变化值,相当于理解通过200mS的移动量。为感觉上的一致性,一般把速度值定义到1S或者1MIN的单位,这样看起来的速度单位值相对舒服一点,也统一一点。计算完本周期的速度值,将本次计算的当前值,传送到下一个周期的速度数据存储区,以方便下一个200mS间隔周期再次调用计算。
将程序编译、保存后下载到plc,读取MD0的变化数据,得到一个速度值,图示:
程序运行结果,当在某一个定时中断中检测到MD100 = 12.0,即在上一个定时中断中MD104 = 0的状态下,说明通过200mS周期后移动了12.0mm,那么,相对1S时间的速度值是60.0mm/S。因为是循环定时中断,所以,MD112的值被200mS的周期间隔被不断的刷新,得到这个速度值的实时值。