首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >使用西门子博图触发循环写入数组:实现可追溯数据记录

使用西门子博图触发循环写入数组:实现可追溯数据记录

作者头像
剑指工控
发布于 2024-04-15 04:21:18
发布于 2024-04-15 04:21:18
77204
代码可运行
举报
文章被收录于专栏:剑指工控剑指工控
运行总次数:4
代码可运行
JZGKCHINA

工控技术分享平台

1

引言:

在现代工业自动化领域,PLC(可编程逻辑控制器)技术发挥着关键作用,为生产线的稳定运行提供了坚实的保障。作为一名 PLC 工程师,编写高效、精确的程序对于系统的稳定性至关重要。今天,让我们一起来编写一个可以触发循环写入数组的函数块,它能够实现在特定条件下将数据写入数组并自动循环存储。

2

程序案例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
FUNCTION_BLOCK "触发循环写入数组"
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
   VAR_INPUT 
      request : Bool;
      value : Real;
   END_VAR

   VAR_OUTPUT 
      store : Array[0..10] of Real;
   END_VAR

   VAR 
      index : Int;
      rise : Bool;
      riseHF : Bool;
   END_VAR


BEGIN
  #rise := #request AND NOT #riseHF;
  #riseHF := #request;
  
  IF #rise THEN
      #store[#index] := #value;
      IF #index < 10 THEN
          #index += 1;
      ELSE
          #index := 0;
      END_IF;
  END_IF;
END_FUNCTION_BLOCK

3

案例讲解:

该函数块实现了一个简单而高效的数据写入逻辑。当输入信号 request 从低电平变为高电平时,并且上升沿标识 rise 为真时,将输入的实数数值 value 写入到数组 store 中的当前 index 位置。然后根据 index 的值判断是否需要循环存储,若未达到数组上限,则将 index 递增;反之则将 index 重置为 0,实现数据的循环写入。这一设计有效利用了有限的数组空间,确保数据不会溢出。

4

程序应用场景:

这样的触发循环写入数组功能在工业生产中有着广泛的应用场景。例如,在温度监控系统中,可以实时记录温度数据并以循环的方式存储,保证数据不会因连续采集而丢失历史信息;在自动化生产线中,可以用于统计生产数量、质量等参数,实现数据的实时记录与分析。

除了上述应用场景外,触发循环写入数组功能还可以被应用于更多的领域。例如,在环境监测系统中,可以利用该功能实现连续采集空气质量数据并实现数据循环保存,为环境治理提供数据支持;在能源管理系统中,可以用于记录能源使用情况并进行实时监控,帮助企业合理节约能源。此外,结合数据库存储技术,可以将循环写入的数据定期转存到数据库中,实现历史数据的长期保存和分析。

5

拓展思考:

以下是根据实际应用的场景,来修改程序以实现不同功能的一些思考。具体的修改取决于您的需求和编程环境,您可能需要进一步调整和适应这些示例以使其适用于您的特定情况。

5.1

储存更多的数据:

如果要储存更多的数据,可以将存储数组的大小增加到适当的大小。例如,将数组的大小从[0..10]扩展到[0..N],其中 N 是您想要储存的数值的最大数量。然后,在触发条件满足时,您可以迭代数组并储存更多的数据。

示例修改:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   VAR_OUTPUT 
      store : Array[0..N] of Real;
   END_VAR

5.2

实现可变数组:

若想实现动态可变数组,使用可变数组来实现。这样可以在运行时根据需要调整数组的大小。

示例修改:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   VAR_OUTPUT 
      store : Array[*] of Real;
   END_VAR

在程序的开始部分,可以通过下面的指令来获取数组的上下限:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#LOWER := LOWER_BOUND(ARR := #store , DIM := 1);
#UPPER := UPPER_BOUND(ARR := #store , DIM := 1);

然后修改下程序,就可以实现动态可变数据的储存功能。

5.3

储存结构体:

若要储存结构体,您可以在数组中使用自定义结构体类型。首先,您需要定义一个结构体类型,并在程序中创建一个具有相应类型的数组来储存结构体。

示例修改:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   TYPE
      MyStruct : STRUCT
         value1 : Real;
         value2 : Int;
         // 其他数据...
      END_STRUCT
   END_TYPE

   VAR_OUTPUT 
      store : Array[0..10] of MyStruct; // 使用结构体类型的数组
   END_VAR

当触发条件满足时,您可以创建一个结构体实例,并将其存储在数组中的适当位置。

6

总结:

通过本文的介绍,我们了解了如何利用 PLC 编程实现触发循环写入数组的功能,该功能可在工业自动化领域中发挥重要作用。并通过拓展思考,修改来丰富更多的应用环境。PLC 工程师们可以根据具体需求灵活运用或修改这一功能模块,提升系统的稳定性和效率。

在工作中,不断学习、应用和思考,将成为 PLC 工程师们实现工业自动化梦想的利器。愿我们在不断探索中,不断前行,共同开创智能工厂的美好未来!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-04-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 剑指工控 微信公众号,前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
西门子scl语言和c语言,西门子SCL语言编程学习心得[通俗易懂]
Temporary Variables VAR_TEMP declaration list
全栈程序员站长
2022/11/10
1.5K0
“Array[*] of *”灵活的可变数组:满足可变需求的完美选择
西门子 TIA(Totally Integrated Automation)平台是一种面向工业自动化的软件平台,可以实现工业控制系统的设计、开发、测试和调试等一系列工作。其中,Array[*]of *是 TIA 平台中的一种数据类型,表示一个可变长度的数组。其中,[*]表示数组的长度可以是任意值,固定表达方式为[1..20]。而*表示数组中的元素类型的可以是任何类型。例如,可以定义一个 Array[*] of INT 类型的数组,表示一个可变长度的整数数组。在程序中,可以通过索引来访问数组中的元素,例如 Array[0]表示数组中的第一个元素,Array[1]表示数组中的第二个元素,以此类推。当然也可以通过索引来给数组中的元素赋值,例如:Array[2]:=1;Array[3]:=33。
剑指工控
2023/08/31
1.5K0
“Array[*] of *”灵活的可变数组:满足可变需求的完美选择
介绍 CODESYS 编程软件中的变量
在 PLC 编程中,变量是构建自动化控制程序的基础。CODESYS 作为一种强大的 PLC 编程软件,提供了多种变量类型和管理方式,使得编程更加灵活和高效。本文将详细介绍 CODESYS 中的变量,包括变量的定义、类型、局部变量和全局变量、掉电保持变量、结构变量等内容。
剑指工控
2024/07/30
6950
介绍 CODESYS 编程软件中的变量
[专家]西门子变址寻址的改变
S7-300/400使用的是绝对地址寻址,即使使用符号名称也是为了便于程序的阅读;而S7-1500正好相反,底层只支持符号寻址(早期做了一个测试发现的),即使使用绝对地址寻址也必须带有符号名称,感觉就是为了S7-300/400程序的移植。
科控物联
2022/03/29
7.1K0
[专家]西门子变址寻址的改变
PID 控制器在工业自动化中的应用及参数调整方法
在工业自动化领域中,PID(比例-积分-微分)控制器是一种常用的控制算法,它通过调节输出信号,使被控对象的实际值尽可能接近设定值。PID 控制器的应用广泛,从简单的温度控制到复杂的过程控制都可以采用 PID 算法实现。本文将介绍 PID 控制器的作用与重要性,并编写一个简单的 PID 控制代码,然后解释代码的功能。此外,还将介绍 PID 参数调整的几种常用方法,以及该代码在不同应用场景下的修改部分。
剑指工控
2024/05/22
1.5K0
PID 控制器在工业自动化中的应用及参数调整方法
举一反三 - 使用西门子SCL获取整数长度引发的思考(上周找茬的答案&获奖名单)
在现代的程序开发中,经常需要对整数进行各种操作和处理。其中一个常见的需求就是获取整数的长度(即整数的位数)。为了实现这个功能,我们可以通过使用 PLC(可编程逻辑控制器)来编写代码。
剑指工控
2023/11/01
3380
举一反三 - 使用西门子SCL获取整数长度引发的思考(上周找茬的答案&获奖名单)
当西门子PLC遇到了python
随着工业自动化和信息化的不断发展,PLC(可编程逻辑控制器)已经成为工业自动化领域中不可或缺的关键设备。而在与 PLC 进行通讯时,Python 作为一种功能强大的编程语言,也越来越受到工程师们的青睐。因为 Python 在科技计算、数据处理、可视化等方面有着优秀的表现,并且通过 Python 与 PLC 进行通讯也是一种高效、灵活的手段。本次我们将介绍如何使用 Python 与西门子 PLC 进行通讯的方法和注意事项,掌握这种技能将有助于在工业控制及信息化方面有所应用,具有广泛的应用前景。
剑指工控
2023/08/31
1.1K0
当西门子PLC遇到了python
Modbus Tcp Server编程(codesys2.3)(含完整源代码)
PLC_OPEN 是工业自动化编程领域的一个标准, Codesys是德国3S 公司开发的软件系统平台,它是完整支持PLC_OPEN标准的软件系统平台(即IEC61131-3标准)。支持标准IL 、ST、 FBD 、LD、 CFC、 SFC 六种PLC编程语言,用户可以在同一项目中选择不同的语言编辑子程序,功能模块等。
剑指工控
2021/11/09
5.3K0
时间的魔法师:西门子 PLC 博图平台中的定时器
时间,常常被人们视为一位魔法师,总是悄悄地将一切变化溶入它的流水中。在现代工业自动化中,时间同样扮演着至关重要的角色。而在西门子 PLC 博图平台中,定时器就是这位时间的魔法师。它们能够精确控制工艺流程,保证设备的正常运行,本文将为您揭示定时器的妙用,并且结合官方案例解释。
剑指工控
2024/06/06
8730
时间的魔法师:西门子 PLC 博图平台中的定时器
[网关开发] 西门子 S7 通信协议概述2
S7 PDU 的结构和通用协议标头在上一部分进行了说明。但是,参数标头特定于消息类型,对于作业和 Ack 数据消息,它以函数代码开头。其余字段的结构取决于此值。此函数代码确定消息的用途,并作为进一步讨论的基础。
科控物联
2023/09/01
1.8K0
[网关开发] 西门子 S7 通信协议概述2
Swift| 基础语法(三)
总结下 swift下的基础语法,里面涉及到:常量&变量、Swift中的数据类型、逻辑分支、循环、字符串相关、数组和字典、方法的书写调用等内容,考虑到阅读体验分多篇来展示,希望对大家学习swift有所帮助,同时也是对自己的一个总结。
進无尽
2018/09/12
1.7K0
Swift| 基础语法(三)
(数据科学学习手札45)Scala基础知识
  由于Spark主要是由Scala编写的,虽然Python和R也各自有对Spark的支撑包,但支持程度远不及Scala,所以要想更好的学习Spark,就必须熟练掌握Scala编程语言,Scala与Java较为相似,且在Scala中可以调用很多Java中的包,本文就将针对Scala中的基础数据结构、循环体以及错误处理机制进行基础的介绍;
Feffery
2018/08/14
2.8K0
Oracle基础 各种语句的定义格式
Oracle内建数据类型 一、 字符数据 1、 char(size) 2、 varchar2(size) 最常用,最大长度4000字节 3、 nvhar(size)、nvarchar(size) 4、 varchar(size) 5、 long 建议使用LOB大型数据 6、 raw 存储二进制,建议使用LOB大型数据
全栈程序员站长
2022/07/15
1.1K0
留言赠书 | B&R PLC和AB PLC之间Ethernet/IP通讯
本文介绍了 AB PLC 和 B&R PLC 之间通过Ethernet/IP使用隐式消息创建通讯的过程。
剑指工控
2021/11/09
1.6K0
IOS开发系列—Objective-C之Foundation框架
概述 我们前面的章节中就一直新建Cocoa Class,那么Cocoa到底是什么,它和我们前面以及后面要讲的内容到底有什么关系呢?Objective-C开发中经常用到NSObject,那么这个对象到底是谁?它为什么又出现在Objective-C中间呢?今天我们将揭开这层面纱,重点分析在IOS开发中一个重要的框架Foundation,今天的主要内容有: 1. Foundation概述 2. 常用结构体 3. 日期 4. 字符串 5. 数组 6. 字典 7. 装箱和拆箱 8. 反射 9. 拷贝 10. 文件操作
用户1941540
2018/06/20
8400
【傻瓜教程】S7-200 SMART与西门子V20系列变频器USS通讯
此范例将向大家介绍如何应用S7-200 SMART 的 USS 协议对西门子V20 变频器进行通讯控制。使大家更加熟练的掌握和灵活的应用S7-200 SMART 的 USS通讯协议功能。
剑指工控
2021/11/09
7.1K0
如何在JavaScript中使用数组方法:Mutator方法
JavaScript中的数组由元素列表组成。 JavaScript有许多有用的内置方法来处理数组。 修改原始数组的方法称为mutator方法,返回新值或表示形式的方法称为访问器方法。 在本教程中,我们将重点介绍mutator方法。
子润先生
2021/06/15
2K0
产生和加载数据集
read 函数不带参数使用时会一次读入文件的全部内容,因为会占用系统的内存,可以选择分块读入再进行拼接:
爱编程的小明
2022/09/05
3K0
产生和加载数据集
深入理解MySQL 5.7 GTID系列(二):GTID相关内部数据结构
前一部分是SERVER_UUID,后面一部分是执行事务的唯一标志,通常是自增的。内部使用 GTID这种数据结构表示,后面会描述。
阿炳数记
2019/02/27
1.2K0
深入理解MySQL 5.7 GTID系列(二):GTID相关内部数据结构
mcu单片机开发_AVR单片机
MCU是Microcontroller Unit的简称,中文叫微控制器,俗称单片机,是把CPU的频次与规格做适当缩减,并将内存、计数器、USB、A/D转换、UART、PLC、DMA等周边接口,甚至LCD驱动电路都整合在单一芯片上,构成芯片级的计算机,为不同的应用场合做不同组合控制,诸如手机、PC外围、遥控器,至汽车电子、工业上的步进马达、机器手臂的控制等,都可见到MCU的身影。
全栈程序员站长
2022/11/10
9980
mcu单片机开发_AVR单片机
推荐阅读
相关推荐
西门子scl语言和c语言,西门子SCL语言编程学习心得[通俗易懂]
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档