技术论坛

S7-200如何实现10-50Hz的正弦波信号的模拟量输出?

作者 主题
游士

经验值: 238
发帖数: 66
精华帖: 0
主题:S7-200如何实现10-50Hz的正弦波信号的模拟量输出?
推荐帖


只看楼主 楼主 2017-05-25 15:26:59

如题,想用S7-200模拟量端口输出10-50hz的正弦波,周期可调的,怎么实现?听说还得使用定时中断,中断没用过,哪位大侠指点一下!


 
以下网友喜欢您的帖子:

  
重要声明:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1397093&b_id=3&s_id=0&num=20

至圣

经验值: 72010
发帖数: 8043
精华帖: 145
回复:S7-200如何实现10-50Hz的正弦波信号的模拟量输出?
推荐帖


只看楼主 1楼 2017-05-25 15:39:02

参考,http://w.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1356026&b_id=64&s_id=83&num=11#anch


 
以下网友喜欢您的帖子:

  
游士

经验值: 238
发帖数: 66
精华帖: 0
回复:S7-200如何实现10-50Hz的正弦波信号的模拟量输出?
推荐帖


只看楼主 楼主 2楼 2017-05-25 16:32:32
以下是引用WWCWWC在2017-05-25 15:39:02的发言 >1楼

参考,http://w.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1356026&b_id=64&s_id=83&num=11#anch

如果使用正玄波的指令不能实现吗


 
以下网友喜欢您的帖子:

  
侠圣

经验值: 4521
发帖数: 554
精华帖: 4
回复:S7-200如何实现10-50Hz的正弦波信号的模拟量输出?
推荐帖


只看楼主 3楼 2017-05-25 16:53:57
以下是引用lqmabcd在2017-05-25 16:32:32的发言 >2楼

如果使用正玄波的指令不能实现吗

以下是引用WWCWWC在2017-05-25 15:39:02的发言 >1楼:参考,http://w.ad.s...

引用1楼详细内容:

参考,http://w.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1356026&b_id=64&s_id=83&num=11#anch

实验一下就清楚了,50Hz的正玄波,一周期是20ms,那么你数据输出的刷新周期恐怕最大也要要小于2ms才能保证输出的信号是正玄波形状,周期大了会失真。而200PLC的扫描周期最小也有1ms吧,所以还是用定时中断比较靠谱,直接使用指令可能失真


 
以下网友喜欢您的帖子:

  
游士

经验值: 238
发帖数: 66
精华帖: 0
回复:S7-200如何实现10-50Hz的正弦波信号的模拟量输出?
推荐帖


只看楼主 楼主 4楼 2017-05-25 21:32:12
以下是引用WWCWWC在2017-05-25 15:39:02的发言 >1楼

参考,http://w.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1356026&b_id=64&s_id=83&num=11#anch

例子我看了,是不是相当于一个周期的正弦波我取了360次,每次取点的时间间隔是10ms,问题又来了,是不是相当于一个周期是360*10ms=3.6s,那和50Hz是不是相差甚远,不知道我这样理解对不对,请高手指点。


 
以下网友喜欢您的帖子:

  
至圣

经验值: 12573
发帖数: 2503
精华帖: 31
回复:S7-200如何实现10-50Hz的正弦波信号的模拟量输出?
推荐帖


只看楼主 5楼 2017-05-26 00:41:19
别想单纯用PLC来实现0~50Hz正弦波了…
先跟你算一下50Hz周期就是20ms,如果用定时中断那么一个正弦波周期只有16分段,假如是380V正弦波0~538V实际值就剩下8个分段,也就是每一个定时中断输出电压就有67V电压跳变,这对负载来说绝对是不允许的!!!所以单纯用PLC来实现别想。
只能用PLC作为信号源输出调制信号给可调电源。比如给变频器0~10V控制变频器输出0~50Hz。
 
以下网友喜欢您的帖子:

  
奇侠

经验值: 5946
发帖数: 1729
精华帖: 5
回复:S7-200如何实现10-50Hz的正弦波信号的模拟量输出?
推荐帖


只看楼主 7楼 2017-05-26 08:35:32

其实还是个PWM 只是SPWM输出而已,和纯的SIn还是有很大区别的


我是路过西门子打酱油的, 你们继续
以下网友喜欢您的帖子:

  
游士

经验值: 238
发帖数: 66
精华帖: 0
回复:S7-200如何实现10-50Hz的正弦波信号的模拟量输出?
推荐帖


只看楼主 楼主 8楼 2017-05-26 09:49:35
以下是引用Zaxife在2017-05-26 00:41:19的发言 >5楼:别想单纯用PLC来实现0~50Hz正弦波了… 先跟你算一下50Hz周期就是20ms,如果用定时中断那么一个正弦波周期只有16分段,假如是380V正弦波0~538V实际值就剩下8个分段,也就是每一个定时中断输出电压就有67V电压跳变,这对负载来说绝对是不允许的!!!所以单纯用PLC来实现别想。 只能用PLC作为信号源输出调制信号给可调电源。比如给变频器0~10V控制变频器输出0~50Hz。

兄弟跟你说的还不是一回事,我需要PLC的模拟量输出端口产生大概50hz的正弦信号去控制液压控制上面的比例阀,不是是说的高压高频,其实弄一个外部电路我知道是可以的,高频信号由外部电路实现


 
以下网友喜欢您的帖子:

  
奇侠

经验值: 7869
发帖数: 903
精华帖: 0
回复:S7-200如何实现10-50Hz的正弦波信号的模拟量输出?
推荐帖


只看楼主 9楼 2017-05-26 11:09:09

产生的不是真正的正弦波吧。

然后这个有什么用呢。


 
以下网友喜欢您的帖子:

  
至圣

经验值: 10685
发帖数: 1561
精华帖: 33
回复:S7-200如何实现10-50Hz的正弦波信号的模拟量输出?
推荐帖


只看楼主 10楼 2017-05-26 11:20:36

我的理解:就PLC的扫描机制去处理50HZ级别的信号是不太现实的,因为扫描周期就已经是毫秒级的了,但在一个扫描周期内程序可以多次刷新模拟量输出一定程度上实现高速,但这个没啥实际意义因为PLC不可能就只干刷新模拟输出这一个任务。建议楼主采用脉冲输出后经过外围的电路进行滤波来获得想要频率的正弦波,PLC控制频率就好了。有点好奇楼主的比例阀要的控制信号究竟是个什么信号,是10到50HZ的正弦波,幅度有要求吗?波形有要求吗?如果仅仅是频率要求的话按我说的也许就足够用了。


工控爱好者
以下网友喜欢您的帖子:

  
至圣

经验值: 12573
发帖数: 2503
精华帖: 31
回复:S7-200如何实现10-50Hz的正弦波信号的模拟量输出?
推荐帖


只看楼主 11楼 2017-05-26 12:03:36
以下是引用lqmabcd在2017-05-26 09:49:35的发言 >8楼

兄弟跟你说的还不是一回事,我需要PLC的模拟量输出端口产生大概50hz的正弦信号去控制液压控制上面的比例阀,不是是说的高压高频,其实弄一个外部电路我知道是可以的,高频信号由外部电路实现

以下是引用Zaxife在2017-05-26 00:41:19的发言 >5楼:别想单纯用PLC来...

引用5楼详细内容:

别想单纯用PLC来实现0~50Hz正弦波了…
先跟你算一下50Hz周期就是20ms,如果用定时中断那么一个正弦波周期只有16分段,假如是380V正弦波0~538V实际值就剩下8个分段,也就是每一个定时中断输出电压就有67V电压跳变,这对负载来说绝对是不允许的!!!所以单纯用PLC来实现别想。
只能用PLC作为信号源输出调制信号给可调电源。比如给变频器0~10V控制变频器输出0~50Hz。

1、如果你知道S7 200模拟量输出模块DAC转换需要750us才能稳定这些基本的参数,你就不会想用S7 200的模拟量输出0~50Hz正弦波信号了。
2、正弦波的浮点运算指令,根本无法在1ms内计算完成,也就是说想用中断实现50Hz正弦波计算别奢望了。几个Hz还可以考虑。
简单的说,就是模拟量输出达不到转换速度上的要求,并不是高压高频的问题,而是输出平滑过度的问题。
你还是更改比例阀的选型吧,就像楼上说的用PWM更实在。
 
以下网友喜欢您的帖子:

  
游侠

经验值: 500
发帖数: 79
精华帖: 1
回复:S7-200如何实现10-50Hz的正弦波信号的模拟量输出?


只看楼主 12楼 2017-05-26 15:10:46

是不是类似于下面的情况?

例如:T0时刻    0→AQW0

           T1时刻   32000* (SIN9°)→AQW0 (T1=T0+1ms)

           T2时刻   32000* (SIN18°)→AQW0 (T2=T0+2ms)

           .

           .

           .

           T19时刻   32000* (SIN351°)→AQW0 (T19=T0+19ms)

           T20时刻   32000* (SIN360°)→AQW0 (T20=T0+20ms)

当然,实际数值先写好存在寄存器中,需要的时候直接调用

         

 


 
以下网友喜欢您的帖子:

  
至圣

经验值: 67546
发帖数: 14783
精华帖: 100
回复:S7-200如何实现10-50Hz的正弦波信号的模拟量输出?
推荐帖


只看楼主 13楼 2017-05-26 18:07:20

如果写好在寄存器的话就直接使用间接寻址把数据块逐一输出是了。

在数据块里写入若干个值,每一毫秒间接寻址输出一个值,指针向下一个。一个周期后从头开始。事先把一个周期时间按1毫秒分辨率解释算出三角函数值填写在数据块中。

但是周期的增量就只能是自然数增量。要11赫兹的就难搞了。


 
以下网友喜欢您的帖子:

  
游士

经验值: 238
发帖数: 66
精华帖: 0
回复:S7-200如何实现10-50Hz的正弦波信号的模拟量输出?


只看楼主 楼主 14楼 2017-05-27 08:59:13
以下是引用winter938在2017-05-26 11:20:36的发言 >10楼

我的理解:就PLC的扫描机制去处理50HZ级别的信号是不太现实的,因为扫描周期就已经是毫秒级的了,但在一个扫描周期内程序可以多次刷新模拟量输出一定程度上实现高速,但这个没啥实际意义因为PLC不可能就只干刷新模拟输出这一个任务。建议楼主采用脉冲输出后经过外围的电路进行滤波来获得想要频率的正弦波,PLC控制频率就好了。有点好奇楼主的比例阀要的控制信号究竟是个什么信号,是10到50HZ的正弦波,幅度有要求吗?波形有要求吗?如果仅仅是频率要求的话按我说的也许就足够用了。

是这样的,现在做了一套S7-200的控制系统,主要想控制一台液压测试的平台,液压测试平台里有两个比例阀,其中一个阀门主要控制液压管道的压力,一个是控制液压泵的排量。都是用S7-200的模拟量输出,当然模拟量的输出还不能直接控制比例阀,因为比例阀的控制开度控制信号需要大概是-600ma到+600ma,所以在PLC模拟量输出和比例阀之间又加了一个控制器,目的实现信号的转换。这里只要求PLC的模拟量的输出范围为0.5V到4.5V,系统调试之前,甲方没有提出比例阀门控制需要高频的正弦波或者余弦波的信号,调试的过程中甲方才提出这个要求,后来也是查阅了很多相关的材料,感觉200实现此功能可能费劲,所以才问问各位大侠这个功能200实现是不是可能,1楼兄弟的那个帖子我看了,程序我也试了,比我之前做的程序好很多,但也是达不到要求的信号频率,所以我现在也建议甲方,买能输出高频信号的外围电路,或者自己搭建外围电路。


 
以下网友喜欢您的帖子:

  
至圣

经验值: 67546
发帖数: 14783
精华帖: 100
回复:S7-200如何实现10-50Hz的正弦波信号的模拟量输出?


只看楼主 15楼 2017-05-27 09:32:10

纯直流电正弦波要放大成交流正弦波,该用什么放大器啊?这个阀又是个什么阀,我也很期待学习一下。


 
以下网友喜欢您的帖子:

  
至圣

经验值: 12573
发帖数: 2503
精华帖: 31
回复:S7-200如何实现10-50Hz的正弦波信号的模拟量输出?


只看楼主 16楼 2017-05-27 10:32:14
以下是引用芳季在2017-05-27 09:32:10的发言 >15楼

纯直流电正弦波要放大成交流正弦波,该用什么放大器啊?这个阀又是个什么阀,我也很期待学习一下。

学过模拟电子的都知道,一个振荡器+整形器就可以得到方波、三角波、正弦波等波形输出的。基波频率越高得到的波形出越平滑(模拟电子的谐波叠加原理)。
学过数字电子的都知道,一个又电压调制的放大器产生一定范围内的震荡信号,去控制一个BCD同步加减计数器,然后把BCD加减计数器的结果送到一个正弦波数据表的ROM存储器寻址,存储器的数据送到DAC,就可以得到一个完美的正弦波(数字电子的DAC原理)。
 
以下网友喜欢您的帖子:

  
至圣

经验值: 12573
发帖数: 2503
精华帖: 31
回复:S7-200如何实现10-50Hz的正弦波信号的模拟量输出?


只看楼主 17楼 2017-05-27 11:35:42

硬要用S7 200模拟量输出50Hz正弦波的话,用最高效定时中断查表法,得到的最理想的曲线入图中的蓝色填充结果,而非红色平滑结果。

但是模拟量中,波形失真度超过5%就是不合格的了,所以还是要用模拟量输出50Hz正弦波的想法的话还是洗洗睡吧。

从图中可以看出,定时中断是1ms一次,中断20次刚好一个正弦波50Hz。如果把定时中断改为2ms,那么直接坎半就掉到25Hz了。

如果想用高速脉冲输出根高速计数器中断,这时候模拟量输出转换速度又跟不上的了。


说点其它的,如果要实现像工频电压的0.05Hz调节,就需要20us了,S7 200的浮点数指令都不止这个时间咯。所以啊,还是用高速单片机搭建吧,20us查表那是妥妥的,硬件成本不会超过20块的。




 
以下网友喜欢您的帖子:

  
侠士

经验值: 1534
发帖数: 217
精华帖: 0
回复:S7-200如何实现10-50Hz的正弦波信号的模拟量输出?


只看楼主 18楼 2017-05-27 11:41:31

200PLC纯碎编程恐怕难以实现。首先,正弦波的数值变化是规律性的,也就是每个数据变化的间隔时间一致,那我们程序上要做到这个特性,只能使用定时中断,也许也可以直接依靠监控主程序的扫描时间来换算。三菱PLC具有恒定周期扫描的功能,但是西门子似乎没有,所以每个扫描周期会有波动。假如使用中断,那么因为定时中断时基是MS级,所以20MS内能改变的数据数量有限,这样的数据用在正弦波上,想想都知道,波形失真是一定的。不使用中断的话,可以先把正弦波需要的数据集中在一个区域,比如,200个数据,VD0-VD199。然后,在主程序利用for循环调用,但是这里有个问题,for的每次循环所用时间,我们也不确定,得通过实际测试,根据for每运行一个次数,需要的时间,来确定我们得取多少个数值,才刚好能在20MS内取完。这看起来似乎还能尝试,但实际上我觉得可能也是不可行的,因为我们的输出是用模拟量,据我所知,模拟量的读取与写入,花费的时间并不是us级别,而是ms级别的,所以我觉得实际上也是难以真正实现。

观点不对之处,欢迎各位指出。


 
以下网友喜欢您的帖子:

  
侠圣

经验值: 2209
发帖数: 43
精华帖: 0
回复:S7-200如何实现10-50Hz的正弦波信号的模拟量输出?


只看楼主 19楼 2017-05-27 13:44:40
以下是引用一世天蓝在2017-05-27 11:41:31的发言 >18楼

200PLC纯碎编程恐怕难以实现。首先,正弦波的数值变化是规律性的,也就是每个数据变化的间隔时间一致,那我们程序上要做到这个特性,只能使用定时中断,也许也可以直接依靠监控主程序的扫描时间来换算。三菱PLC具有恒定周期扫描的功能,但是西门子似乎没有,所以每个扫描周期会有波动。假如使用中断,那么因为定时中断时基是MS级,所以20MS内能改变的数据数量有限,这样的数据用在正弦波上,想想都知道,波形失真是一定的。不使用中断的话,可以先把正弦波需要的数据集中在一个区域,比如,200个数据,VD0-VD199。然后,在主程序利用for循环调用,但是这里有个问题,for的每次循环所用时间,我们也不确定,得通过实际测试,根据for每运行一个次数,需要的时间,来确定我们得取多少个数值,才刚好能在20MS内取完。这看起来似乎还能尝试,但实际上我觉得可能也是不可行的,因为我们的输出是用模拟量,据我所知,模拟量的读取与写入,花费的时间并不是us级别,而是ms级别的,所以我觉得实际上也是难以真正实现。

观点不对之处,欢迎各位指出。

时间长了以后误差越来越大,还得加修正程序,估计模拟一下还行,实际使用可能会很头疼。


天天学习,被动进步。
以下网友喜欢您的帖子:

  
游侠

经验值: 382
发帖数: 88
精华帖: 0
回复:S7-200如何实现10-50Hz的正弦波信号的模拟量输出?


只看楼主 20楼 2017-07-17 13:15:50

受扫描周期制约,50HZ正弦波这种事儿还是别浪费功夫了,不能让狗耕地让牛看家啊


 
以下网友喜欢您的帖子:

  
收起
S7-200如何实现10-50Hz的正弦波信号的模拟量输出?
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。