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

已锁定

yming

西门子1847工业学习平台

  • 帖子

    23198
  • 精华

    881
  • 被关注

    1254

论坛等级:至圣

注册时间:2004-03-06

钻石 钻石 如何晋级?

发布于 2020-12-05 18:36:49

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(累积在背景数据),也可以。





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

请填写推广理由:

本版热门话题

SIMATIC S7-1200系列

共有15228条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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