昨天晚上,看到一个网友的提问:“说需要将一个变化了的数据,按规定的定时时间有规律存放到一个连续的数据寄存器地址中、、、、、、”。类似处理这样的程序虽然有很多种编程方法,但我想了想,认为这样的方法可以测试一下。
编程思路:
1) 既然是定时存放数据,那做一个定时中断正好符合要求。新建一个定时中断,SMB34该定时中断时间以1mS为最小单位(最大255mS),按网友要求设置为1000mS = 1秒需要10次中断后再采集一次数据。
2) 因为需要将这个变化了的数据,按每秒钟时间逐个存放,使用启用指针编程方法又比较合适。假设,将采集的数据依次逐个存放到指针的起始首地址VD100中,并存放为30个数据。
3) 当数据存放个数到达第31个时,第一个存放的数据将被覆盖新数据值,如此循环。
编程:
1) 在子程序中调用定时中断,SMB34 = 100(mS),中断事件号10,开中断
2) 在主程序初始该子程序
3) 在中断程序中比较数据采集
定义定时中断子程序:
在主程序中调用定义定时中断子程序:
在中断子程序编辑数据采集:VB0存放定时中断次数;VB1存放采集数据个数
将上述程序编译、保存后下载到cpu,新建“状态图表”,启用监控,为方面VD6的数据输入一些随机数据编辑一个小程序在主程序中,这样VD6的数据以每秒1.2递增,当数据大于25.0时,重新返回到1.2开始重复过程。图示:
从状态图表中可以看到VD100的数据已经被第2次数据采集所覆盖了新值,本程序仅仅是我理解网友提问后自己的思路,若有出入,望那位网友看到后指出,并加以修改。