当前位置: 首页 > article >正文

使用西门子 PLC(以 S7 - 1200 为例)编写梯形图程序来根据转速计算瞬时流量和累计流量的详细步骤

以下是一个使用西门子 PLC(以 S7 - 1200 为例)编写梯形图程序来根据转速计算瞬时流量和累计流量的详细步骤,同时会考虑与昆仑通泰触摸屏的交互。该程序支持 4 - 20 毫安信号输入和另一种模拟的手动输入方式。

需求理解

  • 流量计算原理:每圈流量自定义(设为 4.38 升),一分钟转 N 圈,一分钟排量为 N * 4.38 升,一小时排量为 N * 4.38 * 60 升。
  • 输入方式
    • 4 - 20 毫安信号:该信号对应不同的转速值。
    • 另一种输入方式:模拟为通过昆仑通泰触摸屏手动输入转速。

硬件连接

  • 4 - 20 毫安信号:将信号源连接到西门子 PLC 的模拟量输入模块(如 SM1231 AI 4xU/I)。
  • 昆仑通泰触摸屏:通过以太网或串口与西门子 PLC 连接。

程序实现

1. 数据块定义

在 TIA Portal 中创建一个数据块(DB),用于存储相关数据:

DB1:
- 每圈流量(Real): DB1.DBW0
- 4 - 20 毫安输入值(Int): DB1.DBW4
- 手动输入转速(Real): DB1.DBW6
- 选择输入方式(Bool): DB1.DBX8.0  (0: 4 - 20 毫安信号,1: 手动输入)
- 转速(Real): DB1.DBW10
- 瞬时流量(升/分钟)(Real): DB1.DBW14
- 累计流量(升)(Real): DB1.DBW18
2. 梯形图程序
步骤 1:初始化每圈流量

在 OB1 中,使用 MOVE 指令将每圈流量(4.38 升)赋值给 DB1.DBW0

Network 1: 初始化每圈流量
A  SM0.1  // 仅在 CPU 启动时执行一次
L  4.38
T  DB1.DBW0
步骤 2:处理 4 - 20 毫安信号输入

将模拟量输入值(4 - 20 毫安对应的数值)转换为转速值。假设 4 毫安对应 0 转/分钟,20 毫安对应 1000 转/分钟:

Network 2: 处理 4 - 20 毫安信号输入
L  PIW256  // 读取模拟量输入值
T  DB1.DBW4
L  DB1.DBW4
L  6400    // 4 毫安对应的数值
-I
L  25600   // 20 毫安对应的数值 - 4 毫安对应的数值
/I
L  1000.0  // 最大转速
*R
T  DB1.DBW10  // 转换后的转速值
步骤 3:处理手动输入转速

当选择手动输入方式时,将手动输入的转速值赋值给 DB1.DBW10

Network 3: 处理手动输入转速
A  DB1.DBX8.0  // 选择手动输入方式
L  DB1.DBW6
T  DB1.DBW10
步骤 4:计算瞬时流量

根据转速和每圈流量计算瞬时流量(升/分钟):

Network 4: 计算瞬时流量
L  DB1.DBW10  // 转速
L  DB1.DBW0   // 每圈流量
*R
T  DB1.DBW14  // 瞬时流量(升/分钟)
步骤 5:计算累计流量

使用定时器(如 S_PULSE)每隔一分钟累加一次瞬时流量到累计流量中:

Network 5: 计算累计流量
A  SM0.0  // 始终为 1
CALL S_PULSE,IN := 1,PT := T#1M,Q => M0.0
A  M0.0
L  DB1.DBW14  // 瞬时流量
L  DB1.DBW18  // 累计流量
+R
T  DB1.DBW18  // 更新累计流量

昆仑通泰触摸屏配置

  • 创建变量:在昆仑通泰触摸屏的组态软件中,创建与 PLC 数据块中变量对应的变量。
  • 设计界面
    • 添加一个选择开关,用于选择输入方式(4 - 20 毫安信号或手动输入),关联到 DB1.DBX8.0
    • 添加一个数值输入框,用于手动输入转速,关联到 DB1.DBW6
    • 添加两个数值显示框,分别显示瞬时流量(DB1.DBW14)和累计流量(DB1.DBW18)。

总结

通过以上步骤,你可以实现一个根据转速计算瞬时流量和累计流量的程序,支持 4 - 20 毫安信号输入和手动输入方式。该程序使用西门子 S7 - 1200 PLC 的梯形图语言编写,并与昆仑通泰触摸屏进行交互。

请注意,以上代码是基于 TIA Portal 编写的梯形图程序示例,实际应用中可能需要根据具体的硬件配置和需求进行调整。

相关文章:

使用西门子 PLC(以 S7 - 1200 为例)编写梯形图程序来根据转速计算瞬时流量和累计流量的详细步骤

以下是一个使用西门子 PLC(以 S7 - 1200 为例)编写梯形图程序来根据转速计算瞬时流量和累计流量的详细步骤,同时会考虑与昆仑通泰触摸屏的交互。该程序支持 4 - 20 毫安信号输入和另一种模拟的手动输入方式。 需求理解 流量计算原理&#x…...

【网络编程】服务器模型(二):并发服务器模型(多线程)和 I/O 复用服务器(select / epoll)

一、多线程并发服务器 在 高并发的 TCP 服务器 中,单线程或 fork() 多进程 方式会导致 资源浪费和性能瓶颈。因此,我们可以使用 多线程 来高效处理多个客户端的连接。 承接上文中的多进程并发服务器,代码优化目标: 1.使用 pthr…...

一文读懂大模型文件后缀名,解锁 AI 世界的密码

在大模型的世界里,各种文件后缀名就像一把把钥匙,打开通往不同应用和功能的大门。今天,咱们就来聊聊那些常见又重要的大模型文件后缀名。 safetensors:安全与高效的守护者 safetensors 是一种基于 Python 的序列化格式&#xff…...

探索 Peewee:轻量级 Python ORM 简明指南

文章目录 探索 Peewee:轻量级 Python ORM 简明指南主要特点:安装:使用示例:1. 定义模型:2. 初始化数据库:3. 数据操作(增、查、改、删):4. 查询构建器:5. 迁移…...

生产者标签(Producer Tag) 和 普通连接(显式或隐式连接)的区别:

在 EtherNet/IP 的通信架构中,生产者标签(Producer Tag) 和 普通连接(显式或隐式连接)的区别主要体现在 通信模式、实时性、数据流向 和 资源管理 上。以下是详细对比: 1. 定义与用途 类型生产者标签&…...

【速写】解码与kv-cache的简单细节

问题:在使用transformers调用huggingface生成式模型时,我们可以通过model.generate_ids来获取模型生成的若干id,那么我应该如何查看这些生成id对应的logits大小(即生成概率) 在Hugging Face的Transformers库中&#x…...

Mac【卸载 Python】 - 3.12.2

一、若使用官方安装包安装 1. 删除 Python 框架 Python 官方安装包会将 Python 安装到 /Library/Frameworks/Python.framework/Versions/3.12 目录下。你可以在终端中使用以下命令删除该目录: sudo rm -rf /Library/Frameworks/Python.framework/Versions/3.12 …...

自学Java-AI结合GUI开发一个石头迷阵的游戏

自学Java-AI结合GUI开发一个石头迷阵的游戏 准备环节1、创建石头迷阵的界面2、打乱顺序3、控制上下左右移动4、判断是否通关5、统计移动步骤,重启游戏6、拓展问题 准备环节 技术: 1、GUI界面编程 2、二维数组 3、程序流程控制 4、面向对象编程 ∙ \bulle…...

Liunx(CentOS-6-x86_64)系统安装MySql(5.6.50)

一:安装Liunx(CentOS-6-x86_64) 安装Liunx(CentOS-6-x86_64) 二:下载MySql(5.6.50) MySql下载官网 二:安装MySql 2.1 将mysql上传到Liunx 文件地址 /usr/local/ 2…...

Java Web开发实战与项目——开发一个在线论坛系统

在线论坛系统是一个常见的Web应用,通常具有用户注册、帖子发布、评论互动、消息推送等基本功能。开发这样一个系统,既涉及到前后端的技术栈选择,也需要考虑性能、扩展性等实际问题。本文将从设计论坛模块、实现消息推送与实时更新功能、以及优…...

ubuntu24.04无法安装向日葵,提示依赖libgconf-2-4怎么办?

在向日葵官方下载的deb包&#xff0c;目前是SunloginClient_15.2.0.63062_amd64.deb&#xff0c;执行安装代码&#xff0c;如下&#xff1a; sudo < /span > dpkg< /span > -i< /span > SunloginClient_15< /span >.2< /span >.0< /span >…...

C++ 设计模式-访问者模式

C++访问者模式 一、模式痛点:当if-else成为维护噩梦 开发动物园管理系统,最初的需求很简单: class Animal {}; class Cat : public Animal {}; class Dog : public Animal {};// 处理动物叫声 void makeSound(Animal* a) {if (auto c = dynamic_cast<Cat*>(a)) {st…...

Kubernetes 使用 Kube-Prometheus 构建指标监控 +飞书告警

1 介绍 Prometheus Operator 为 Kubernetes 提供了对 Prometheus 机器相关监控组件的本地部署和管理方案&#xff0c;该项目的目的是为了简化和自动化基于 Prometheus 的监控栈配置&#xff0c;主要包括以下几个功能&#xff1a; Kubernetes 自定义资源&#xff1a;使用 Kube…...

《Operating System Concepts》阅读笔记:p62-p75

《Operating System Concepts》学习第 10 天&#xff0c;p62-p75 总结&#xff0c;总计 14 页。 一、技术总结 1. system call (1) 定义 The primary interface between processes and the operating system, providing a means to invoke services made available by th…...

Node.js中不支持require和import两种导入模块的混用

最近在整理Node.js相关的知识点&#xff0c;发现通过Node.js支持的两个模块导入语句require和import在同时使用时会发生错误&#xff0c;而且错误非常诡异。 例如&#xff0c;在先使用require导入模块&#xff0c;在使用import导入模块时&#xff0c;出现require无法识别&#…...

WPF的页面设计和实用功能实现

目录 一、TextBlock和TextBox 1. 在TextBlock中实时显示当前时间 二、ListView 1.ListView显示数据 三、ComboBox 1. ComboBox和CheckBox组合实现下拉框多选 四、Button 1. 设计Button按钮的边框为圆角&#xff0c;并对指针悬停时的颜色进行设置 一、TextBlock和TextBox…...

window安装MySQL5.7

1、下载MySQL5.7.24 浏览器打开&#xff1a; https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.24-winx64.zip 2、解压缩 下载下来的是一个压缩包&#xff0c;解压到你想放到的目录下面&#xff0c;我放的是“C:\MySQL” 3、配置MySQL环境变量 计算机右键 - 属性 …...

数据结构:哈希表(二)

目录 一、哈希表 1、概念 二、哈希冲突 1、概念 2、冲突避免 &#xff08;1&#xff09;哈希函数设计 &#xff08;2&#xff09;负载因子调节 3、冲突解决 &#xff08;1&#xff09;闭散列 1、线性探测 2、二次探测 &#xff08;2&#xff09;开散列 4、哈希桶实…...

blender笔记2

一、物体贴地 物体->变换->对齐物体 ->对齐弹窗(对齐模式&#xff1a;反方&#xff0c;相对于&#xff1a;场景原点&#xff0c;对齐&#xff1a;z)。 之后可以设置原点->原点--3d游标 二、面上有阴影 在编辑模式下操作过后&#xff0c;物体面有阴影。 数据-&g…...

1.21作业

1 unserialize3 当序列化字符串中属性个数大于实际属性个数时&#xff0c;不会执行反序列化 外部如果是unserialize&#xff08;&#xff09;会调用wakeup&#xff08;&#xff09;方法&#xff0c;输出“bad request”——构造url绕过wakeup 类型&#xff1a;public class&…...

深入浅出:理解闭包在JavaScript中的应用

什么是闭包 闭包&#xff08;Closure&#xff09;是 JavaScript 中的一个重要概念&#xff0c;也是函数式编程中的核心特性之一。简单来说&#xff0c;闭包是指一个函数能够访问并记住其词法作用域&#xff08;Lexical Scope&#xff09;&#xff0c;即使这个函数在其词法作用…...

【Quest开发】全身跟踪(一)

软件&#xff1a;Unity 2022.3.51f1c1、vscode、Meta XR All in One SDK V72 硬件&#xff1a;Meta Quest3 最终效果&#xff1a;能像meta的操作室沉浸场景一样根据头盔移动来推断用户姿势&#xff0c;实现走路、蹲下、手势匹配等功能 需要借助UnityMovement这个包 GitHub …...

【QT中的一些高级数据结构,持续更新中...】

QT中有一些很精妙、便捷的设计&#xff0c;在了解这些数据的同时&#xff0c;我们可以学到如何更好的设计代码。本贴持续更新中&#xff0c;欢迎关注和收藏 一 QScopedPointer主要特点&#xff1a;示例代码 二 Q_DISABLE_COPY 一 QScopedPointer QScopedPointer 是 Qt 中的一种…...

最新版本Exoplayer扩展FFmpeg音频软解码保姆级教程

ExoPlayer 是一个开源的 Android 媒体播放库&#xff0c;由 Google 开发和维护&#xff0c;用于替代 Android 系统自带的 MediaPlayer。它提供了更强大的功能、更好的性能和更高的灵活性&#xff0c;适用于各种复杂的媒体播放场景。所以被广泛用于各种播放器场景。 最近项目中…...

JS:页面事件

文章目录 一、页面加载事件二、页面滚动事件三、页面尺寸事件总结 一、页面加载事件 有时候我们会把script的内容放在body前&#xff0c;这时候代码的执行在元素的加载之前&#xff0c;会导致页面元素未加载而报错 解决办法是调用Window的load加载事件&#xff0c;将所有操作放…...

✨ 索引有哪些缺点以及具体有哪些索引类型

索引的定义与原理 索引是数据库中用于提高数据检索效率的数据结构。它就像是书籍的目录&#xff0c;通过目录可以快速定位到所需内容的页码&#xff0c;而在数据库中&#xff0c;索引可以帮助数据库系统快速找到符合查询条件的数据行&#xff0c;而不必对整个表进行扫描。 其…...

C++ ——继承

体现的是代码复用的思想 1、子类继承父类&#xff0c;子类就拥有了父类的特性&#xff08;成员方法和成员属性&#xff09; 2、已存在的类被称为“基类”或者“父类”或者“超类”&#xff1b;新创建的类被称为“派生类”或者“子类” 注意&#xff1a; &#xff08;1&#…...

vue,vue3 keepalive没有效果,无法缓存页面include无效,keep-alive

keepalive没有效果&#xff0c;无法缓存页面&#xff1f; 问题大概是组件的name值不对应&#xff0c;vue2修改组件文件的name值&#xff0c;vue3保持组件文件名称和路由页面配置的name一致就可以了&#xff0c;如果vue3不想保持一致&#xff0c;必须手动在文件后面添加export..…...

DeepSeek智能测试知识库助手PRO版:多格式支持+性能优化

前言 测试工程师在管理测试资产时,需要面对多种文档格式、大量文件分类及知识库的构建任务。为了解决这些问题,我们升级了 DeepSeek智能测试知识库助手,不仅支持更多文档格式,还加入了 多线程并发处理 和 可扩展格式支持,大幅提升处理性能和灵活性。 主要功能亮点: 多格…...

【ELK】【Elasticsearch】数据查询方式

1. 简单查询&#xff08;URI Search&#xff09; 通过 URL 参数直接进行查询&#xff0c;适合简单的搜索场景。 示例&#xff1a; bash 复制 GET /index_name/_search?qfield_name:search_value 说明&#xff1a; index_name&#xff1a;索引名称。 field_name&#xf…...