发表于:2003-09-28 21:01:00
2楼
有sin函数吗?如有就可以解决问题,并且需要1块模出模块。首先根据需要的正弦波频率计算出周期,然后通过1个时间中断来调用1个子程序。在子程序中求sin(x*π)的值(x是1个浮点数,取值范围为0~2。精度越高越好,一开始为0,然后每次将y加一点点,具体增加多少应该根据你需要的正弦波的精度和正弦波的频率来决定),然后将sin的输出*14000再加14000后赋给模拟量输出即可。
----------------------------------------------
例如你需要50Hz的正弦波,那么其周期为20ms。假设我们用1ms的时间中断来调用那个sin函数,则生成的每个正弦波将由20个点组成。每次执行完sin函数,则将x加0.1,当x=2时,则将x赋值为0.1(不能赋值为0,因为sin(0)=sin(2π),这样将出现2个0值,这是不允许的)。现假设sin函数的执行结果=y,那么模拟量的输出就等于:(y*14000)+14000。(因为s7-300的模拟量状态字变化范围=0~28000)
-----------------------------------------------
这种方法的缺点就是频率和精度都不能做的很高,如果要求不高,倒是可以不用买特殊功能模块。