s7-300实现正弦波?求助 点击:2323 | 回复:5



gongkongedit

    
  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2003-10-02 11:37:00
楼主
各位高手,怎么用西门子S7-300命令实现正弦波啊? 我是非自动化专业的在从事PLC设计,各位可不能见死不救了。 因为我要写论文了。



freeambest

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 10回
  • 年度积分:0
  • 历史总积分:19
  • 注册:2003年9月28日
发表于:2003-09-28 16:12:00
1楼
高手哪去了?我急死了啊???

microtomato

  • 精华:1帖
  • 求助:0帖
  • 帖子:84帖 | 1476回
  • 年度积分:0
  • 历史总积分:2078
  • 注册:2001年11月02日
发表于: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) ----------------------------------------------- 这种方法的缺点就是频率和精度都不能做的很高,如果要求不高,倒是可以不用买特殊功能模块。

freeambest

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 10回
  • 年度积分:0
  • 历史总积分:19
  • 注册:2003年9月28日
发表于:2003-09-30 19:34:00
3楼
非常感谢楼上的帮助 如果我有什么不懂的地方 也许还会来打扰你 谢谢!

看客甲

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 23回
  • 年度积分:0
  • 历史总积分:39
  • 注册:2003年8月19日
发表于:2003-10-01 10:46:00
4楼
在STEP7里配置好硬件,写如下程序: network1 L DB1.DBD 0 SIN T DB1.DBD 4 NOP 0 network2 AN M 0.0 L S5T#10MS SP T 0 NOP 0 NOP 0 NOP 0 A T 0 = M 0.1 network3 A M 0.1 = M 0.0 network4 A M 0.1 JNB _001 L DB1.DBD 0 L 1.000000e+000 +R T DB1.DBD 0 _001: NOP 0 network5 A( L DB1.DBD 0 L 3.600000e+000 >=R ) JNB _002 L 0.000000e+000 T DB1.DBD 0 _002: NOP 0 DB1.DBD0的增长步长可随意设定,定时器T0的定时长度也可任意设定,这样就可以无限多的点来量化正弦曲线的一个周期, 在WINCC里用实时趋势曲线控件连接变量DB1.DBD4,即可得到正弦曲线。

freeambest

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 10回
  • 年度积分:0
  • 历史总积分:19
  • 注册:2003年9月28日
发表于:2003-10-02 11:37:00
5楼
非常感谢!

热门招聘
相关主题

官方公众号

智造工程师