Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >S7-SCL流量累积功能<源码>

S7-SCL流量累积功能<源码>

作者头像
科控物联
发布于 2022-03-29 12:46:14
发布于 2022-03-29 12:46:14
1.7K01
代码可运行
举报
文章被收录于专栏:科控自动化科控自动化
运行总次数:1
代码可运行

函数块 'Totalizer' ,可以计算出一个瞬时流量的累积值。

描述 例如,在测量流量或线速度时,可以使用距离或体积作为物理量,使用毫秒,秒,分钟,小时或者天作为测量时间的单位。

图 01

"Totalizer" 功能块必须在循环中断(比如OB30)中调用,表 01 是 "Totalizer" 功能块的输入和输出变量列表

参数

变量

数据类型

描述

输入

Value

Real

瞬时流量

输入

Interval

Time

瞬时流量的时间单位

输入

Cycle

Time

扫描时间(循环中断周期)

输入

Reset

Bool

累积值清零

输出

Total

Real

累积值输出

表 01

在一个循环中

  1. 输入变量 "Interval" 和"Cycle" 数据类型 Time 被转化为 Real 类型。
  2. 转化后的值被转移到临时变量 “Interval_real” 和 “Cycle_real”。
  3. 变量 "VALUE" 的输入值乘以临时变量 "Cycle_real" 的值,然后除以临时变量 “Interval_real”。
  4. 结果存储在静态变量 “Accum” 的缓冲区。

这样每次循环之后,中间结果值存储在“Accum” 的缓冲区中递增,然后转移到输出变量“Total” 中。如果变量 “Reset” 有“True” 值,则变量 “Total” 输出值被复位为零。

例子: 在图 01 的例子中,“Value” 变量值是 60.0 ,同时变量 “Interval” 的时间值是一分钟。

  • 输出变量 "Total" 在1 分钟内从1累加到了60。
  • 周期时间 100ms 反映了FB"Totalizer"的执行过程中的扫描时间。
  • 当FB在循环中断中被调用时,程序每隔 100ms 处理一次而且程序是独立于 OB1 (主程序)的。

被测量值 "Value" (速度或流量)的计量单位可以是米每秒,立方米每分钟或公里每小时。这时变量 "Interval" 必须输入对应的间隔时间,例如,

  • 米每秒:T#1s
  • 立方米每分钟:T#1M
  • 公里每小时:T#1h

图 02

附件 "48799854_Totalizer_Lib_TIA_Portal" 的库中包含上述的"Totalizer"功能块。功能块中包含SCL程序并附有德文和英文的注释。

复制压缩文件到一个单独的目录,然后双击启动文件解压。此时库会自动解压所有相关的子目录。然后在 STEP 7 (TIA Portal) 中打开这个库,并可以添加到S7-1200/S7-1500的项目中使用。

SCL功能库Totalizer:

定义:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   VAR_INPUT 
      Value : Real;
      Intervall : Time;
      Cycle : Time;
      Reset : Bool;
   END_VAR

   VAR_OUTPUT 
      Total : Real;
   END_VAR

   VAR 
      Accum : Real;
   END_VAR

   VAR_TEMP 
      intervall_real : Real;
      cycle_real : Real;
      intervall_dint : DInt;
      cycle_dint : DInt;
   END_VAR

功能实现

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  IF #Reset = true THEN
      #Accum := 0.000000e000; //
      #Total := 0.000000e000; //The variables will be set to zero.
  ELSE
      #intervall_dint := TIME_TO_DINT(#Intervall);
      #intervall_real := DINT_TO_REAL(#intervall_dint);
      #cycle_dint := TIME_TO_DINT(#Cycle);
      #cycle_real := DINT_TO_REAL(#cycle_dint);
      #Accum := ((#Value * #cycle_real) / #intervall_real) + #Accum;
      #Total := #Accum; //Kopiere Ergebnis nach #Total / Copy result to #Total.
  END_IF;
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-02-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 科控物联 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【工控技术】在STEP 7 (TIA Portal) 中,如何实现流量累积功能?
使用库'Totalizer_Lib_TIA_Portal' 中的函数块 'Totalizer' ,可以计算出一个瞬时流量的累积值。
剑指工控
2021/11/09
3.4K0
【工控技术】在STEP 7 (TIA Portal) 中,如何实现流量累积功能?
西门子scl语言和c语言,西门子SCL语言编程学习心得[通俗易懂]
Temporary Variables VAR_TEMP declaration list
全栈程序员站长
2022/11/10
1.4K0
S7-SCL 算术平均值--附代码
此功能块计算最新输入的100个数值的均值(浮动平均值)。采集的数据队列达到100个之后,队列每入栈一个新数值,将去掉一个队列里最早进来的数据(先进先出原则)。
科控物联
2022/03/29
1.8K0
S7-SCL  算术平均值--附代码
[step7]精通SCL编程
Motor1_input:BOOL;//定义一个名叫做Motor1_input用于输入的变量 变量类BOOL
科控物联
2022/03/29
2.8K0
[step7]精通SCL编程
S7-SCL 4个线性缩放功能块 <copy代码即可使用>
y = -------------- * ( x - x0 ) + y0
科控物联
2022/03/29
5040
S7-SCL  4个线性缩放功能块 <copy代码即可使用>
SCL入门教程
SCL(Structured Control Language,结构化控制语言)是一种基于 PASCAL 的高级编程语言。这种语言基于标准 DIN EN 61131-3(国际标准为 IEC 1131-3)。
科控物联
2022/03/29
3.5K0
SCL入门教程
介绍 CODESYS 编程软件中的变量
在 PLC 编程中,变量是构建自动化控制程序的基础。CODESYS 作为一种强大的 PLC 编程软件,提供了多种变量类型和管理方式,使得编程更加灵活和高效。本文将详细介绍 CODESYS 中的变量,包括变量的定义、类型、局部变量和全局变量、掉电保持变量、结构变量等内容。
剑指工控
2024/07/30
5980
介绍 CODESYS 编程软件中的变量
S7-SCL 统计Dword中,位ON和OFF个数
使用“右移”指令,可以将参数 IN 的内容逐位向右移动,并将结果作为函数值返回。参数 N 用于指定应将特定值移位的位数。
科控物联
2022/04/19
5720
S7-SCL 统计Dword中,位ON和OFF个数
FB41
很多人都在问PID的复杂的微积分算法如何形成程序的?我在这里把STEP7 里FB41源代码和注释给大家贴出来,让大家学习一下,FB41是积分PID。另外如果大家习惯了STEP7的PID也可以通过这个源代码移植到别的控制器上。
剑指工控
2021/11/09
6610
测量S7-1200/1500 CPU中完整程序、单个块或命令序列的运行时间
在STEP 7(TIA Portal)中,可以使用"RUNTIME"指令来测量S7-1200/1500 CPU中完整程序、单个块或命令序列的运行时间。使用"RT_INFO"指令,可以读取S7-1500 CPU中特定组织块、通信或用户程序运行时的统计信息。"RUNTIME"指令在"基本指令>程序控制指令>运行时控制"菜单下,"RT_INFO"指令在"扩展指令>诊断"菜单下,如下图1所示。
科控物联
2022/03/29
2.3K0
测量S7-1200/1500 CPU中完整程序、单个块或命令序列的运行时间
西门子SCL--频率功能块
pulsePauseRatio : Real := 1.0; // 脉冲占空比
科控物联
2022/03/29
9400
西门子SCL--频率功能块
巧妙应用指令完善项目
项目开发中总会遇到各种各样的问题,比如强酸强碱浊度温差环境恶劣的液位物位的实时监测,搅拌带蒸汽的液位采集等等...部分工程师会采用升级硬件部分来改善问题。那么进口传感异常昂贵一时无法取代时如何解决?在硬件问题无法很好升级的时候就可以通过升级程序来优化需要的数据与参数(如滤波,周期性求平均值等。)下面通过S7-200与S7-300案例分析如何通过升级程序修正一些异常点。
剑指工控
2021/11/09
3020
巧妙应用指令完善项目
西门子scl语言编程教程_西门子scl编程
《在西门子PLC中使用SCL语言编程的技巧》由会员分享,可在线阅读,更多相关《在西门子PLC中使用SCL语言编程的技巧(6页珍藏版)》请在人人文库网上搜索。
全栈程序员站长
2022/11/10
1.1K0
PID 控制器在工业自动化中的应用及参数调整方法
在工业自动化领域中,PID(比例-积分-微分)控制器是一种常用的控制算法,它通过调节输出信号,使被控对象的实际值尽可能接近设定值。PID 控制器的应用广泛,从简单的温度控制到复杂的过程控制都可以采用 PID 算法实现。本文将介绍 PID 控制器的作用与重要性,并编写一个简单的 PID 控制代码,然后解释代码的功能。此外,还将介绍 PID 参数调整的几种常用方法,以及该代码在不同应用场景下的修改部分。
剑指工控
2024/05/22
1.3K0
PID 控制器在工业自动化中的应用及参数调整方法
举一反三 - 使用西门子SCL获取整数长度引发的思考(上周找茬的答案&获奖名单)
在现代的程序开发中,经常需要对整数进行各种操作和处理。其中一个常见的需求就是获取整数的长度(即整数的位数)。为了实现这个功能,我们可以通过使用 PLC(可编程逻辑控制器)来编写代码。
剑指工控
2023/11/01
3150
举一反三 - 使用西门子SCL获取整数长度引发的思考(上周找茬的答案&获奖名单)
VS Code + Deepseek API实现一个完整的收放卷项目(含PLC代码)
我们在新能源行业设备开发中,收放卷是很经典常用的设备模块,不管是电芯电池卷绕机、叠片机、制片机等,都需要这个模块。那我们刚好利用上期介绍的让AI自动编写plc程序的两种方法中其一,即:VS code +cline + deepseek API 的方式来做本期的分享。
Hello工控
2025/02/19
2550
VS Code + Deepseek API实现一个完整的收放卷项目(含PLC代码)
[S7-1500] 定时器<SIMATIC定时器/IEC定时器>
S7-1500 可以使用IEC定时器和SIMATIC定时器,IEC定时器仅占用CPU的工作存储器资源,可使用的数量与工作存储器大小有关;而SIMATIC定时器是CPU特定的资源,数量固定。例如CPU1515-2PN的SIMATIC定时器个数是2048个(CPU技术数据叫S7定时器)。两种定时器相比较,IEC定时器可设定的时间要远远大于SIMATIC定时器,时间精度也高。
科控物联
2022/03/29
5K0
[S7-1500] 定时器<SIMATIC定时器/IEC定时器>
[实操]S7-1500 中通过 PID_Compact 对仿真控制系统进行闭环控制
3. 调用过程仿真函数sim_PT3,这个默认是没有的,需要先从网上下载一个。[怕西门子官方有举报,就不放链接了]
科控物联
2022/03/29
6.6K0
[实操]S7-1500 中通过 PID_Compact 对仿真控制系统进行闭环控制
[源码解析] 深度学习流水线并行GPipe (2) ----- 梯度累积
梯度累积是一种增大训练时 batch size的技术,在本地使用 micro-batch 多次进行正向和反向传播积累梯度后,再进行梯度规约和优化器更新,这是用来均摊通信成本的一种常用策略。本文通过几个框架/库的实现对比,让大家对这个技术有进一步的了解。
罗西的思考
2021/08/30
1.7K0
[源码解析] 深度学习流水线并行GPipe (2) ----- 梯度累积
西门子scl语言运算符_西门子烤箱怎么设置语言中文
添加变量,输入型变量5个,一个运算后输出变量,3个中间变量,用于计算,存放中间计算结果,
全栈程序员站长
2022/11/10
4900
西门子scl语言运算符_西门子烤箱怎么设置语言中文
相关推荐
【工控技术】在STEP 7 (TIA Portal) 中,如何实现流量累积功能?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验