技术论坛

如何计算模拟量的变化量?

作者 主题
至圣

经验值: 127355
发帖数: 22002
精华帖: 824
主题:【探讨】如何计算模拟量的变化量?
精华帖精华帖星级3级 精编帖 推荐帖


只看楼主 只看精华 只看精编 楼主 2018-01-18 10:14:48

LOGO!通常都是对当前模拟量数值进行控制。但是,很多情况下,当前值并不重要;重要的是数值的变化量,即它的斜率。
例如:温度的突然上升,可能是着火了。水压的突然降低,可能是水管爆裂。这时,需要采取的应对措施是与常规即时控制完全不同的。
实际上,通过变化量(斜率区间)来判断状态;并给出控制项,这也是模糊控制的一个方面。
LOGO!如何,获得模拟量的变化率呢?


学而时习之,不亦说乎?温故而知新,不亦乐乎?
精华帖版主置评: y侠提出的问题以及网友的解决方案会对喜欢LOGO!的网友有很大的帮助与启示!
以下网友喜欢您的帖子:

  
重要声明:

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

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

奇侠

经验值: 5313
发帖数: 617
精华帖: 0
回复:如何计算模拟量的变化量?
精编帖 推荐帖


只看楼主 只看精华 只看精编 1楼 2018-01-18 15:16:44

大神、有点加加速度的感觉,不知理解是否正确。


决不为短期利益而牺牲未来
以下网友喜欢您的帖子:

  
至圣

经验值: 127355
发帖数: 22002
精华帖: 824
回复:如何计算模拟量的变化量?
精编帖 推荐帖


只看楼主 只看精华 只看精编 楼主 2楼 2018-01-18 20:40:09
以下是引用聂昌在2018-01-18 15:16:44的发言 >1楼

大神、有点加加速度的感觉,不知理解是否正确。

嗯,差不多是这个意思吧。

就是说,许多情况下,实际数值并不重要。

例如:声音60-70分贝下,并不是不能忍受。但是安静的环境中,突然的40-50分贝响声就能吓你一跳。(可能就是锅掉地上了)。而火车驶过,尽管最高音量很大,但过程是比较缓慢的。

这就是模拟量斜率的问题。


也就是说,不是当温度升高的250度来判定着火,而是温度突然升高的速率,来判定。


我已经写了一个,正在测试、优化。


学而时习之,不亦说乎?温故而知新,不亦乐乎?
以下网友喜欢您的帖子:

  
至圣

经验值: 69053
发帖数: 12266
精华帖: 59
回复:如何计算模拟量的变化量?
精编帖 推荐帖


只看楼主 只看精华 只看精编 3楼 2018-01-18 21:41:43

没用过LOGO

LOGO没有数据存储区域吗?


Q群:https://jq.qq.com/?k=9BDuEgf6
以下网友喜欢您的帖子:

  
至圣

经验值: 69053
发帖数: 12266
精华帖: 59
回复:如何计算模拟量的变化量?
精编帖 推荐帖


只看楼主 只看精华 只看精编 4楼 2018-01-18 21:42:52

LOGO是不是程序编写起来比较麻烦

特别是进行计算的东西


Q群:https://jq.qq.com/?k=9BDuEgf6
以下网友喜欢您的帖子:

  
奇侠

经验值: 5313
发帖数: 617
精华帖: 0
回复:如何计算模拟量的变化量?
精编帖 推荐帖


只看楼主 只看精华 只看精编 5楼 2018-01-18 22:18:49
以下是引用yming在2018-01-18 20:40:09的发言 >2楼

嗯,差不多是这个意思吧。

就是说,许多情况下,实际数值并不重要。

例如:声音60-70分贝下,并不是不能忍受。但是安静的环境中,突然的40-50分贝响声就能吓你一跳。(可能就是锅掉地上了)。而火车驶过,尽管最高音量很大,但过程是比较缓慢的。

这就是模拟量斜率的问题。


也就是说,不是当温度升高的250度来判定着火,而是温度突然升高的速率,来判定。


我已经写了一个,正在测试、优化。

以下是引用聂昌在2018-01-18 15:16:44的发言 >1楼:大神、有点加加速度...

引用1楼详细内容:

大神、有点加加速度的感觉,不知理解是否正确。

我感觉时间是关键、您文中所提到的“突然”如何定义?您这样做的意义何在?预判?


决不为短期利益而牺牲未来
以下网友喜欢您的帖子:

  
至圣

经验值: 127355
发帖数: 22002
精华帖: 824
回复:如何计算模拟量的变化量?
精编帖 推荐帖


只看楼主 只看精华 只看精编 楼主 6楼 2018-01-18 23:30:16
以下是引用RENHQ在2018-01-18 21:42:52的发言 >4楼

LOGO是不是程序编写起来比较麻烦

特别是进行计算的东西

LOGO在计算方面只有一些基本算数指令。

但是在时间指令上,却有它独特的指令。

编程也可以用LAD梯形图;但通常还是用功能块编辑。

主要是它和DZ47微型断路器的尺寸是一样的。很容易嵌入在墙壁开关箱中。

因为它本体包含4路模拟量输入,又可以通过以太网编程,多PLC组网传输;还可以与1200等通讯;支持MODBUS_TCP。(我就是配电力猫互联,不需要网线。)

不但可以直接透过浏览器就控制,现在又提供了 WEB用户编辑器。

尽管处理速度慢一些,但是作为某个系统的前端,还是不错的。

何况价格又便宜,编程软件又可以安装在苹果机上。我挺喜欢LOGO!的。


学而时习之,不亦说乎?温故而知新,不亦乐乎?
以下网友喜欢您的帖子:

  
至圣

经验值: 35146
发帖数: 3237
精华帖: 96
回复:如何计算模拟量的变化量?
精编帖 推荐帖


只看楼主 只看精华 只看精编 7楼 2018-01-18 23:31:07

y版,今天忙到很晚,刚看到。

我之前做了一个,比较复杂,用了异步脉冲触发器和模拟量放大器、算术指令等,比较麻烦,晚上找了很长时间也没找到。于是又做了一个,仿真了一下,还可以,请测试是否满足要求。

其实这个用模拟量监控室最简便的方法,采用异步脉冲触发器来设定监控周期,如果在设定周期内超出变化量,则触发报警或进行其他动作。


源程序如下:

模拟量监控.zip



http://blog.163.com/xiuzhang_2000/
以下网友喜欢您的帖子:

  
至圣

经验值: 127355
发帖数: 22002
精华帖: 824
回复:如何计算模拟量的变化量?
精编帖 推荐帖


只看楼主 只看精华 只看精编 楼主 8楼 2018-01-18 23:39:53
以下是引用聂昌在2018-01-18 22:18:49的发言 >5楼

我感觉时间是关键、您文中所提到的“突然”如何定义?您这样做的意义何在?预判?

以下是引用yming在2018-01-18 20:40:09的发言 >2楼:嗯,差不多是这个意...

引用2楼详细内容:

嗯,差不多是这个意思吧。

就是说,许多情况下,实际数值并不重要。

例如:声音60-70分贝下,并不是不能忍受。但是安静的环境中,突然的40-50分贝响声就能吓你一跳。(可能就是锅掉地上了)。而火车驶过,尽管最高音量很大,但过程是比较缓慢的。

这就是模拟量斜率的问题。


也就是说,不是当温度升高的250度来判定着火,而是温度突然升高的速率,来判定。


我已经写了一个,正在测试、优化。

以下是引用聂昌在2018-01-18 15:16:44的发言 >1楼:大神、有点加加速度...

引用1楼详细内容:

大神、有点加加速度的感觉,不知理解是否正确。

要说是趋势判断吧。其实也不是。

是要获得每秒的变化量。(其实就是信号的微分)LOGO!仅提供PI(增益、积分)调节。

当变化量在较小时,不处理。

当变化量在某区间时,按预定处理。

当变化量超过区间之外时,应急处理。

就是这个意思。


学而时习之,不亦说乎?温故而知新,不亦乐乎?
以下网友喜欢您的帖子:

  
至圣

经验值: 35146
发帖数: 3237
精华帖: 96
回复:如何计算模拟量的变化量?
精编帖 推荐帖


只看楼主 只看精华 只看精编 9楼 2018-01-18 23:48:23
以下是引用yming在2018-01-18 23:39:53的发言 >8楼

要说是趋势判断吧。其实也不是。

是要获得每秒的变化量。(其实就是信号的微分)LOGO!仅提供PI(增益、积分)调节。

当变化量在较小时,不处理。

当变化量在某区间时,按预定处理。

当变化量超过区间之外时,应急处理。

就是这个意思。

以下是引用聂昌在2018-01-18 22:18:49的发言 >5楼:我感觉时间是关键、...

引用5楼详细内容:

我感觉时间是关键、您文中所提到的“突然”如何定义?您这样做的意义何在?预判?

以下是引用yming在2018-01-18 20:40:09的发言 >2楼:嗯,差不多是这个意...

引用2楼详细内容:

嗯,差不多是这个意思吧。

就是说,许多情况下,实际数值并不重要。

例如:声音60-70分贝下,并不是不能忍受。但是安静的环境中,突然的40-50分贝响声就能吓你一跳。(可能就是锅掉地上了)。而火车驶过,尽管最高音量很大,但过程是比较缓慢的。

这就是模拟量斜率的问题。


也就是说,不是当温度升高的250度来判定着火,而是温度突然升高的速率,来判定。


我已经写了一个,正在测试、优化。

以下是引用聂昌在2018-01-18 15:16:44的发言 >1楼:大神、有点加加速...

引用1楼详细内容:

大神、有点加加速度的感觉,不知理解是否正确。

呵呵,您也好晚啊。

如果需要两个区间,那就用两个监控器,估计就能实现了,一个设置变化区间,一个设置为变化区间之外的值,并行输出就可以了。

我上面的程序设置了曲线下行的输出,就是那个50的值,不用可以去掉,AI可以改成pi控制器的输出,或将其输出量化为被控量的实际值。


http://blog.163.com/xiuzhang_2000/
以下网友喜欢您的帖子:

  
至圣

经验值: 127355
发帖数: 22002
精华帖: 824
回复:如何计算模拟量的变化量?
精编帖 推荐帖


只看楼主 只看精华 只看精编 楼主 10楼 2018-01-19 00:00:13
以下是引用高山孤影在2018-01-18 23:31:07的发言 >7楼

y版,今天忙到很晚,刚看到。

我之前做了一个,比较复杂,用了异步脉冲触发器和模拟量放大器、算术指令等,比较麻烦,晚上找了很长时间也没找到。于是又做了一个,仿真了一下,还可以,请测试是否满足要求。

其实这个用模拟量监控室最简便的方法,采用异步脉冲触发器来设定监控周期,如果在设定周期内超出变化量,则触发报警或进行其他动作。


源程序如下:

模拟量监控.zip


谢谢!

但不是这个,这个只是针对模拟量的阈值输出一个开关位。

我说的是对模拟量的变化量。实际就是对模拟量输入的微分(对时间的差分)。它的输出还是一个模拟量。

即:

模拟量一秒前的数值=450;后一秒的数值=455;则输出 +5;代表每秒增长5;如果是 -5;则代表每秒降低5。如果输出+/-2范围,就视为信号是稳定的,没有变化,不做处理。

这样就可以通过另外一个(或多个) 阈值区间,来判断模拟量的斜率;进而执行它的任务处理了。

我使用移位寄存器来实现的。每秒采集4个值,来获得信号的不同变化状态。


学而时习之,不亦说乎?温故而知新,不亦乐乎?
以下网友喜欢您的帖子:

  
至圣

经验值: 35146
发帖数: 3237
精华帖: 96
回复:如何计算模拟量的变化量?
精编帖 推荐帖


只看楼主 只看精华 只看精编 11楼 2018-01-19 07:40:26
以下是引用yming在2018-01-19 00:00:13的发言 >10楼

谢谢!

但不是这个,这个只是针对模拟量的阈值输出一个开关位。

我说的是对模拟量的变化量。实际就是对模拟量输入的微分(对时间的差分)。它的输出还是一个模拟量。

即:

模拟量一秒前的数值=450;后一秒的数值=455;则输出 +5;代表每秒增长5;如果是 -5;则代表每秒降低5。如果输出+/-2范围,就视为信号是稳定的,没有变化,不做处理。

这样就可以通过另外一个(或多个) 阈值区间,来判断模拟量的斜率;进而执行它的任务处理了。

我使用移位寄存器来实现的。每秒采集4个值,来获得信号的不同变化状态。

以下是引用高山孤影在2018-01-18 23:31:07的发言 >7楼:y版,今天忙到很晚,...

引用7楼详细内容:

y版,今天忙到很晚,刚看到。

我之前做了一个,比较复杂,用了异步脉冲触发器和模拟量放大器、算术指令等,比较麻烦,晚上找了很长时间也没找到。于是又做了一个,仿真了一下,还可以,请测试是否满足要求。

其实这个用模拟量监控室最简便的方法,采用异步脉冲触发器来设定监控周期,如果在设定周期内超出变化量,则触发报警或进行其他动作。


源程序如下:

模拟量监控.zip


这个应该是控制斜率的变化吧?我以前做过一个可以任意设置斜率的程序,不知道能不能用上。微分不就是在单位时间内斜率的变化吗,只是在这个程序的基础上加一个斜率的检测和增减值的判断呗?


http://blog.163.com/xiuzhang_2000/
以下网友喜欢您的帖子:

  
侠圣

经验值: 4511
发帖数: 522
精华帖: 0
回复:如何计算模拟量的变化量?
精编帖 推荐帖


只看楼主 只看精华 只看精编 12楼 2018-01-19 08:40:08

 这有点类似脉冲计数,先通过固定周期采集模拟量的数值,再判断当前周期和上一周期模拟量的变化量(做差运算),如果变化超过设定的区间,进行相应的工艺处理。


孜孜不倦,向高峰挺进!
以下网友喜欢您的帖子:

  
侠圣

经验值: 3596
发帖数: 303
精华帖: 2
回复:如何计算模拟量的变化量?
精编帖 推荐帖


只看楼主 只看精华 只看精编 13楼 2018-01-19 08:59:43

用上限减去当前值,然后取变化量和上限的比值,我感觉这样可以


只为成功找方法,不为失败找借口!
以下网友喜欢您的帖子:

  
至圣

经验值: 19410
发帖数: 2077
精华帖: 73
回复:如何计算模拟量的变化量?
精编帖 推荐帖


只看楼主 只看精华 只看精编 14楼 2018-01-19 09:25:57

没用过logo!,说一下思路:

设置一个1秒定时器,每秒进行一次函数计算;

函数里建一个过渡变量(类似三角几何里的辅助线)#EVn0,程序是按先后顺序扫描执行的,先将当前模拟量#EVn - #EVn0,这就是微分值(different)。计算过后要把#EVn -》#EVn0,也就是把当前值再赋值给#EVn0,此时一个计算周期就结束了。

different,差分的意思(对着镜子看,实物与映像的差别), 解三角几何,重要的就是画辅助线,把这面镜子虚拟出来。哈哈哈,我这语气挺象那么回事的!



大道至简,知易行难
以下网友喜欢您的帖子:

  
至圣

经验值: 19410
发帖数: 2077
精华帖: 73
回复:如何计算模拟量的变化量?
精编帖 推荐帖


只看楼主 只看精华 只看精编 15楼 2018-01-19 11:05:37

http://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1434341&b_id=64&s_id=83&num=4#anch


不需要它有PID,只要PLC有加减乘除,自己就能编一个PID的,难道logo连加减乘除都不支持吗?


大道至简,知易行难
以下网友喜欢您的帖子:

  
至圣

经验值: 127355
发帖数: 22002
精华帖: 824
回复:如何计算模拟量的变化量?
精编帖 推荐帖


只看楼主 只看精华 只看精编 楼主 16楼 2018-01-19 11:08:16

举个我观察到的例子,简单说明一下:




很明显,斜率(模拟量的变化量)的数值,可以判断动作。而具体数值则不一定能判断状态。

对吧?


学而时习之,不亦说乎?温故而知新,不亦乐乎?
以下网友喜欢您的帖子:

  
至圣

经验值: 127355
发帖数: 22002
精华帖: 824
回复:如何计算模拟量的变化量?
精编帖 推荐帖


只看楼主 只看精华 只看精编 楼主 17楼 2018-01-19 11:29:13

这是做好的程序:

使用移位寄存器。秒表检查周期,仅仅是为了测量时基T。模拟量的(变化量)斜率输出的时基为T。

单独仿真测得时基T=0.15秒。变化量输出 / 时基T,即换算成 变化量/秒


下面是 程序:



附件是UDF。


MyUDF.zip


斜率区间控制项还没写呢。实测斜率输出似乎是正确的。

各位玩LOGO!的大侠帮给看看。



学而时习之,不亦说乎?温故而知新,不亦乐乎?
以下网友喜欢您的帖子:

  
至圣

经验值: 12573
发帖数: 2503
精华帖: 31
回复:如何计算模拟量的变化量?
精华帖精华帖星级3级 精编帖 推荐帖


只看楼主 只看精华 只看精编 19楼 2018-01-19 17:34:51

弄了一个比较简单的类似FIFO的应该就是楼主要的功能了。

其实很简单,使用了算术运算的E0=0保持上一次的值,然后先FO再FI的顺序移动数据。


差值周期检测.zip

至于比较输出?那就简单多了,相邻的两个算术运算的AQ比较,然后所有的比较指令都是On那么可以说明AI值一直是在上升的。或者计算比较指令On>Off那么就是说在这段时间内上升波动趋势较大。

如果需要更多的周期?扩展也很简单,一个下降沿+一个算术运算组合就可以扩展一位了。


其实,判断两个周期之间的差值变化差值的话,用 异步脉冲发生器 间隔的去触发 模拟量监视器(开启保持)更简单。


 
精华帖版主置评: 谢谢大侠,提示的不错!我试试模拟量监视器。 再做一个。 -yming
以下网友喜欢您的帖子:

  
至圣

经验值: 37447
发帖数: 5133
精华帖: 47
回复:如何计算模拟量的变化量?


只看楼主 只看精华 只看精编 20楼 2018-01-19 17:51:12

来一个1200/1500的程序如何?


工业起重机防摇摆 QQ:404136820 AntiSwayControl
以下网友喜欢您的帖子:

  
收起
如何计算模拟量的变化量?
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。