本发明涉及工控安全,特别是涉及一种带反馈机制的方波生成方法及装置。
背景技术:
1、在工业安全领域的某些场景中,需要测试设备对被测设备(plc、dcs等)输出一个指定频率的方波用于控制设备的业务逻辑。现有技术往往通过fpag的硬件方案实现,但硬件实现成本较高,而且不够灵活。
2、基于此,本发明提出了一种带反馈机制的方波生成方法及装置,可以精准的控制方波的输出频率。
技术实现思路
1、本发明提供一种带反馈机制的方波生成方法,包括:
2、接收用户设置的频率,根据用户设置的频率输出方波;
3、当定时器超时时调用定时器处理函数,依据定时器精度与用户设置的频率关系改变当前电压;
4、通过cpu晶振频率判断方波的频率误差;
5、使用频率误差修正用户设置的频率;
6、将修正后的频率通过反馈机制反馈到定时器处理函数,修正输出的方波。
7、如上所述的一种带反馈机制的方波生成方法,其中,确定定时器精度t,设定一个数值n,令n=1/t,设定用户设置的频率q,且q<=n。
8、如上所述的一种带反馈机制的方波生成方法,其中,依据定时器精度与用户设置的频率关系改变当前电压,具体包括如下子步骤:
9、步骤s1、定义一个变量sum;
10、步骤s2、计算sum=sum+2*q;
11、步骤s3、如果sum>=n,则改变当前的电压;
12、步骤s4、更新变量sum=sum-n,返回执行步骤s2。
13、如上所述的一种带反馈机制的方波生成方法,其中,通过cpu晶振频率判断方波的频率误差,具体包括如下子步骤:
14、对生成的方波做一个累加器,累计方波变换次数;
15、当累计方波变换次数达到预设变换次数时,获取预设变换次数所对应的cpu晶振振动次数m;
16、把cpu晶振振动次数m转换成时间tt;
17、根据转换后的时间tt和当前时间计算这预设变换次数的方波的时间误差,并计算出平均每次方波的时间误差dt;
18、计算时间误差dt对应的频率误差dq。
19、如上所述的一种带反馈机制的方波生成方法,其中,设定一个阈值,当频率误差dq小于阈值的时候,不做修正和反馈处理,当频率误差dq大于预制时,对用户输入的频率q进行修正。
20、如上所述的一种带反馈机制的方波生成方法,其中,q=q-dq。
21、如上所述的一种带反馈机制的方波生成方法,其中,如果需要一个定时器输出多路不同的频率,则定义多组变量来实现。
22、本发明还提供一种带反馈机制的方波生成装置,包括:
23、方波输出模块,用于接收用户设置的频率,根据用户设置的频率输出方波;
24、电压改变模块,用于当定时器超时时调用定时器处理函数,依据定时器精度与用户设置的频率关系改变当前电压;
25、误差修正模块,用于通过cpu晶振频率判断方波的频率误差;使用频率误差修正用户设置的频率;
26、反馈模块,用于将修正后的频率通过反馈机制反馈到定时器处理函数,修正输出的方波。
27、如上所述的一种带反馈机制的方波生成装置,其中,所述装置为包括定时器的单片机。
28、本发明还提供一种计算机可读存储介质,其特征在于,所述计算机存储介质中包含一个或多个程序指令,所述一个或多个程序指令用于被处理器执行上述任一项所述的一种带反馈机制的方波生成方法。
29、本发明的有益效果是:本发明的优点是可以规避掉定时器的误差造成的影响,通过cpu晶振频率精准判断波形的频率误差,并通过反馈机制来修正误差,可以通过迭代后把误差控制到一个很小的范围。
1.一种带反馈机制的方波生成方法,其特征在于,包括:
2.如权利要求1所述的一种带反馈机制的方波生成方法,其特征在于,确定定时器精度t,设定一个数值n,令n=1/t,设定用户设置的频率q,且q<=n。
3.如权利要求2所述的一种带反馈机制的方波生成方法,其特征在于,依据定时器精度与用户设置的频率关系改变当前电压,具体包括如下子步骤:
4.如权利要求1所述的一种带反馈机制的方波生成方法,其特征在于,通过cpu晶振频率判断方波的频率误差,具体包括如下子步骤:
5.如权利要求4所述的一种带反馈机制的方波生成方法,其特征在于,设定一个阈值,当频率误差dq小于阈值的时候,不做修正和反馈处理,当频率误差dq大于预制时,对用户输入的频率q进行修正。
6.如权利要求5所述的一种带反馈机制的方波生成方法,其特征在于,q=q-dq。
7.如权利要求1所述的一种带反馈机制的方波生成方法,其特征在于,如果需要一个定时器输出多路不同的频率,则定义多组变量来实现。
8.一种带反馈机制的方波生成装置,其特征在于,包括:
9.如权利要求8所述的一种带反馈机制的方波生成装置,其特征在于,所述装置为包括定时器的单片机。
10.一种计算机可读存储介质,其特征在于,所述计算机存储介质中包含一个或多个程序指令,所述一个或多个程序指令用于被处理器执行如权利要求1-7任一项所述的一种带反馈机制的方波生成方法。