回复:S7-1200的流量累积(有功功率累积)SCL编程代码

已锁定

yming

西门子1847工业学习平台

  • 帖子

    23148
  • 精华

    881
  • 被关注

    1253

论坛等级:至圣

注册时间:2004-03-06

钻石 钻石 如何晋级?

发布于 2020-12-08 01:16:39

15楼

展开查看
以下是引用万泉河在2020-12-07 16:37:57的发言 >13楼

第二个原因,有些人喜欢将ADC采样的整数转换到实际物理量(实数)再累积。这样做不但再一次增大了误差(转换误差),而且程序通用性不好


反对这样的说法。 


恰恰是直接对物理量进行累积才直观且通用呢!


比方说,物理量瞬时值来自通讯,而不是AD转换呢?难不成再另做一套积分或者转换?


以下是引用yming在2020-12-05 18:36:49的发言 >7楼:也用过系统时间,计...

引用7楼详细内容:

也用过系统时间,计算不同的扫描周期;毕竟精度就是那样,没感觉有什么问题。

至于累积方法我倒是有些想法,不知是否认同。

首先,我们大多的物理量转成测量信号的数字量,ADC都是有精度的。10位的或12位的。这些是绝对的精度。通过算法,可以提高相对精度;但那是估读,置信度有待考虑。

10位ADC是多少?是1024。通过算法,做成了模拟量27468。所以,手册上指明,这个27468的精度只有满量程的3%-3.5%(1024:27468即1: 27);而ADC的原始精度则是 1:1024大约是0.1%。

以上是针对ADC转换而言。

那么对于累积该数值,又要保持最好的精度,当然是直接使用UINT或者INT;将它们累积到UDINT (32位)中。

假如1毫秒采样累积,那么一个UDINT可以连续采样130秒。而不丢失原始精度。

反过来,我们看看实数Real(32位)。它的有效位数只有6位。这意味着,同样的值,每累积10倍(次)就丢失最后一位有效数字,积累1000倍最后3位已经是无效数字了。当十万倍时,这后面5位都是无效的数字。置信度为零。如果同样1毫秒采样积累,那么十万次就是100秒。

看了这个比较,有啥想法?

这就是为什么不用实数来做累积的原因之一。

第二个原因,有些人喜欢将ADC采样的整数转换到实际物理量(实数)再累积。这样做不但再一次增大了误差(转换误差),而且程序通用性不好(把一个无量纲的信号,变成有物理量纲的专用信号)。

基于以上两点原因。我认为只需做个FC,将采样值UINT;一个量纲单位 传入(Input); UDINT+UINT(InOut)累积值(全局变量);实时输出(Output)个计算位物理量的实数。至少它的置信度比较高。

这样的FC就可以通用了。

或FB(累积在背景数据),也可以。





来自通讯?一般的异步通讯能靠谱么?还要给它们累积?

是不是喝酒了?

我对那些传感器使用Modbus RTU发送值,而且还是4字节浮点,对它累积,真不知道是怎么想的。

就是使用100M以太网TCP传输,没有时标,能累积么?就像网络游戏似的,一会儿卡、一会不卡。

除非是采样智能模块,像Trace功能,直接发过来打时标的数据集。否则没法累积。


至于,转换实际物理量(电压、电流、距离、重量)浮点表示?这种FC肯定不通用。

不是要计算,肯定不用浮点。

包括直观显示,也不用浮点。就是Int整数,标准的hex 4000=100% 去标定柱图,根本用不到转换成浮点。

为啥?比如电流:10.5A这个值,对于额定电流6.3A的已经过载了150%;对于额定电流15A的,这个值才60%。

对于操作者,他关心的就是负载率,并不关心具体数值。





学而时习之,不亦说乎?温故而知新,不亦乐乎?
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1200系列

共有15117条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

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