签到有奖
消息提醒
运维工程师专区
官方商城
扫码分享好友 任选多种周边
如题,想用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
参考,http://w.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1356026&b_id=64&s_id=83&num=11#anch
如果使用正玄波的指令不能实现吗
引用1楼详细内容:
实验一下就清楚了,50Hz的正玄波,一周期是20ms,那么你数据输出的刷新周期恐怕最大也要要小于2ms才能保证输出的信号是正玄波形状,周期大了会失真。而200PLC的扫描周期最小也有1ms吧,所以还是用定时中断比较靠谱,直接使用指令可能失真
例子我看了,是不是相当于一个周期的正弦波我取了360次,每次取点的时间间隔是10ms,问题又来了,是不是相当于一个周期是360*10ms=3.6s,那和50Hz是不是相差甚远,不知道我这样理解对不对,请高手指点。
其实还是个PWM 只是SPWM输出而已,和纯的SIn还是有很大区别的
兄弟跟你说的还不是一回事,我需要PLC的模拟量输出端口产生大概50hz的正弦信号去控制液压控制上面的比例阀,不是是说的高压高频,其实弄一个外部电路我知道是可以的,高频信号由外部电路实现
产生的不是真正的正弦波吧。
然后这个有什么用呢。
我的理解:就PLC的扫描机制去处理50HZ级别的信号是不太现实的,因为扫描周期就已经是毫秒级的了,但在一个扫描周期内程序可以多次刷新模拟量输出一定程度上实现高速,但这个没啥实际意义因为PLC不可能就只干刷新模拟输出这一个任务。建议楼主采用脉冲输出后经过外围的电路进行滤波来获得想要频率的正弦波,PLC控制频率就好了。有点好奇楼主的比例阀要的控制信号究竟是个什么信号,是10到50HZ的正弦波,幅度有要求吗?波形有要求吗?如果仅仅是频率要求的话按我说的也许就足够用了。
引用5楼详细内容:
别想单纯用PLC来实现0~50Hz正弦波了…先跟你算一下50Hz周期就是20ms,如果用定时中断那么一个正弦波周期只有16分段,假如是380V正弦波0~538V实际值就剩下8个分段,也就是每一个定时中断输出电压就有67V电压跳变,这对负载来说绝对是不允许的!!!所以单纯用PLC来实现别想。只能用PLC作为信号源输出调制信号给可调电源。比如给变频器0~10V控制变频器输出0~50Hz。
是不是类似于下面的情况?
例如: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)
当然,实际数值先写好存在寄存器中,需要的时候直接调用
如果写好在寄存器的话就直接使用间接寻址把数据块逐一输出是了。
在数据块里写入若干个值,每一毫秒间接寻址输出一个值,指针向下一个。一个周期后从头开始。事先把一个周期时间按1毫秒分辨率解释算出三角函数值填写在数据块中。
但是周期的增量就只能是自然数增量。要11赫兹的就难搞了。
是这样的,现在做了一套S7-200的控制系统,主要想控制一台液压测试的平台,液压测试平台里有两个比例阀,其中一个阀门主要控制液压管道的压力,一个是控制液压泵的排量。都是用S7-200的模拟量输出,当然模拟量的输出还不能直接控制比例阀,因为比例阀的控制开度控制信号需要大概是-600ma到+600ma,所以在PLC模拟量输出和比例阀之间又加了一个控制器,目的实现信号的转换。这里只要求PLC的模拟量的输出范围为0.5V到4.5V,系统调试之前,甲方没有提出比例阀门控制需要高频的正弦波或者余弦波的信号,调试的过程中甲方才提出这个要求,后来也是查阅了很多相关的材料,感觉200实现此功能可能费劲,所以才问问各位大侠这个功能200实现是不是可能,1楼兄弟的那个帖子我看了,程序我也试了,比我之前做的程序好很多,但也是达不到要求的信号频率,所以我现在也建议甲方,买能输出高频信号的外围电路,或者自己搭建外围电路。
纯直流电正弦波要放大成交流正弦波,该用什么放大器啊?这个阀又是个什么阀,我也很期待学习一下。
硬要用S7 200模拟量输出50Hz正弦波的话,用最高效定时中断查表法,得到的最理想的曲线入图中的蓝色填充结果,而非红色平滑结果。
但是模拟量中,波形失真度超过5%就是不合格的了,所以还是要用模拟量输出50Hz正弦波的想法的话还是洗洗睡吧。
从图中可以看出,定时中断是1ms一次,中断20次刚好一个正弦波50Hz。如果把定时中断改为2ms,那么直接坎半就掉到25Hz了。
如果想用高速脉冲输出根高速计数器中断,这时候模拟量输出转换速度又跟不上的了。
说点其它的,如果要实现像工频电压的0.05Hz调节,就需要20us了,S7 200的浮点数指令都不止这个时间咯。所以啊,还是用高速单片机搭建吧,20us查表那是妥妥的,硬件成本不会超过20块的。
200PLC纯碎编程恐怕难以实现。首先,正弦波的数值变化是规律性的,也就是每个数据变化的间隔时间一致,那我们程序上要做到这个特性,只能使用定时中断,也许也可以直接依靠监控主程序的扫描时间来换算。三菱PLC具有恒定周期扫描的功能,但是西门子似乎没有,所以每个扫描周期会有波动。假如使用中断,那么因为定时中断时基是MS级,所以20MS内能改变的数据数量有限,这样的数据用在正弦波上,想想都知道,波形失真是一定的。不使用中断的话,可以先把正弦波需要的数据集中在一个区域,比如,200个数据,VD0-VD199。然后,在主程序利用for循环调用,但是这里有个问题,for的每次循环所用时间,我们也不确定,得通过实际测试,根据for每运行一个次数,需要的时间,来确定我们得取多少个数值,才刚好能在20MS内取完。这看起来似乎还能尝试,但实际上我觉得可能也是不可行的,因为我们的输出是用模拟量,据我所知,模拟量的读取与写入,花费的时间并不是us级别,而是ms级别的,所以我觉得实际上也是难以真正实现。
观点不对之处,欢迎各位指出。
时间长了以后误差越来越大,还得加修正程序,估计模拟一下还行,实际使用可能会很头疼。
受扫描周期制约,50HZ正弦波这种事儿还是别浪费功夫了,不能让狗耕地让牛看家啊
分享
扫码分享好友 任选多种好礼
收藏
有帮助
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!
密码至少8位,包含大、小写字母,数字和符号至少三种。
允许邮箱和手机接收来自支持中心网站的信息
我已同意《支持中心网站注册协议和隐私政策》
微信登录扫码一键登录
验证码登录
密码登录
二维码失效点击重试
打开微信扫一扫,快速登录/注册
未注册手机验证后自动登录,注册即代表同意《支持中心网站注册协议和隐私政策》
三日内免验证登录
短信登录
登录