试着用斜坡函数做点事,预置量发生变化,输出量跟着斜坡坡度逐渐变化到预置量。翻坛子,通过众侠指引,找到了RAMP库指令,写了一段简单的测试程序,用定时器查看输出量变化到预置量的时间,发现有点意思,定时器记录的时间,和按照坡度计算的时间偏差较大。
下载的RAMP库指令中虽然是加密的,但在注释中告知了密码,(在此万分感谢作者!),指令中用的是SMW22,本次扫描时,上周期的扫描时间乘以斜率,得到本周期的递增值(递减值),与上一次的输出量相加(减),得到本周期的输出值。库指令是S7-200的,在此抄作业连注释也一起抄了,子例程名:RAMP_0
因为测试存在较大的偏差,自己用BITIM和CITIM 通过时间间隔的方式,写了一个子程序。第一次调用时,BITIM记录时间,本次扫描时,通过CITIM 计算和上周期的时间间隔,同时BITIM记录本周期时间,用时间间隔乘以斜率,得到本周期的递增值(递减值),与上一次的输出量相加(减),得到本周期的输出值。子例程名:RAMP_1
M17.0输出使能,Q1.7输出标志,VD832预置值=1.0,VD820预置值=1.0,VD836输出值,VD828输出截止值=0.00001(1e-5),斜率VD0=0.01/秒, M0.0,启动输出,M0.1停止输出,T99记录停止时斜坡下降的时间,值传送到VW4,T98记录启动时斜坡上升时间,值传送到VW6。
主程序MAIN:

子例程名:RAMP_0

子例程名:RAMP_1

通过主程序中,调用不同的子例程,得到如下结果:

偏差这么大,有点难以消化,特研习论坛里以前的帖子,还是有些茫然。通过SMW2做与时间相关的累加,存在较大的误差?还是有其他的原因?期待过往大侠的高见。
参考贴:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1700448&b_id=3&s_id=0&num=16#anch
用S7-200 CPU226CN REL 2.01 测试,结果如下:

同样的程序,测试结果不一样,使用SMW22的RAMP库指令在S7-200中运行,和定时器计时偏差很小,但是在S7-200SMART中运行,和定时器值偏差较大。