西门子S7-1500PLC与ABB变频器通讯及控制程序

文章目录

  • 前言
  • 一、硬件组态
  • 二、编写通讯程序
    • 1.新建数据类型“ABB_UDT”
    • 2.新建DB块“变频DB”
    • 3.新建FC块“轴流风机”
  • 二、编写模拟量转换程序
    • 1.编写速度设定程序
    • 2.编写速度反馈程序
    • 3.编写电流反馈程序
    • 4.编写力矩反馈程序
  • 三、编写启/停控制程序
  • 总结


前言

本文基于某实际项目,提供一种西门子S7-1500PLC与ABB变频器实现通讯、速度给定、速度反馈等功能的方法。
此项目中,ABB变频器用于控制轴流风机,需要对轴流风机的转速进行控制,同时读取转速反馈、电流反馈和力矩反馈。

一、硬件组态

ABB与S7-1500PLC通过专用的GSD文件实现通讯连接,在博途中组态GSD文件,如下图所示:
在这里插入图片描述
GSD文件已上传,可自行下载ABB变频器GSD文件

二、编写通讯程序

1.新建数据类型“ABB_UDT”

在这里插入图片描述
在这里插入图片描述
其中,1-16表示通讯字,23-38表示控制字。

2.新建DB块“变频DB”

数据块“变频DB”用于存放与变频器的通讯字和控制字数据。注意:取消优化的块访问。
在这里插入图片描述
在这里插入图片描述

3.新建FC块“轴流风机”

编写如下程序,用于将GSD文件对应的输入数据传递给数据块“变频DB”对应的通讯字。
在这里插入图片描述
其中,引脚LADDR连接的421,表示GSD文件对应的硬件标识符,可在设备试图-属性-系统常数中查看。
在这里插入图片描述
引脚RET_VEL,输出故障代码,可新建一个Word类型的临时变量进行存储。
引脚RECORD,通过间接寻址,将数据传递给数据块“变频DB”对应的位。P#表示指针,DB70表示数据块“变频DB”的编号,DBX140.0表示从第140个位开始传递,BYTE 12表示传递12个字节,24位数据。
同理,编写如下程序,用于将数据块“变频DB”对应的控制字传递给GSD文件对应的输出数据。
在这里插入图片描述
通常情况下,将这两个程序段,分别放在所属FC块的第一段和最后一段。

二、编写模拟量转换程序

为了在上位机上实现对速度、电流、力矩等数据的写入、读取,还需要建立几个变量。
包括速度设定值,数据类型为Int;速度反馈值,数据类型为Real;电流反馈值,数据类型为Real;力矩反馈值,数据类型为Real。可自行在DB块或全局变量表中建立。
同时在上位机变量表中添加对应变量,使用IO域控件,实现上位机对以上数据的写入、读取。

1.编写速度设定程序

由于在上位机输入的速度设定值是Int类型十进制数据,而数据块“变频DB”中速度设定值是Word类型十六进制数据,故需要进行数据类型的转换。已知变频器控制的轴流风机最高转速为20000,计算公式如下:

公式一:20000.0 / 传递给变频器的速度设定值 = 1485.0 / 上位机写入的速度设定值
由公式一可推导出公式二:传递给变频器的速度设定值 =20000.0 / 1485.0 * 上位机写入的速度设定值
注意:这里计算出的“传递给变频器的速度设定值”是十进制数,还需要转换为十六进制数,才能最终传递给变频器
转速单位是Rpm

计算“传递给变频器的速度设定值”的SCL程序如下:

//速度设定
"变频DB"."1#轴流风机".CW_S_Set := INT_TO_WORD(REAL_TO_INT(20000.0 / 1485.0 * INT_TO_REAL("1#风机变频速度给定值")));

其中,1#风机变频速度给定值表示上位机输入的速度设定值,““变频DB”.“1#轴流风机”.CW_S_Set”表示传递给变频器的速度设定值。

2.编写速度反馈程序

同理,上位机显示的速度反馈值是Real类型十进制数据,而数据块“变频DB”中速度反馈值是Word类型十六进制数据。根据速度设定值的计算公式,可反推速度反馈值的计算公式。

先将变频器读取到的速度反馈值,从十六进制转换为十进制
上位机显示的速度反馈值 = 十进制变频器速度反馈值 * 1485.0 / 20000.0
转速单位是Rpm

SCL程序如下:

//速度反馈
"ID轴流风机".ID_FAN.SPEED := INT_TO_REAL(WORD_TO_INT("变频DB"."1#轴流风机".ST_S)) * 1485.0 / 20000.0;

其中,““变频DB”.“1#轴流风机”.ST_S”表示变频器传递的速度反馈值,““ID轴流风机”.ID_FAN.SPEED”表示在上位机显示的速度反馈值。

3.编写电流反馈程序

将变频器读取到的电流反馈值,由十六进制转换为十进制,即为上位机显示的电流反馈值。SCL程序如下:

//电流反馈
"ID轴流风机".ID_FAN.CURRENT := INT_TO_REAL(WORD_TO_INT("变频DB"."1#轴流风机".ST_I));

其中,““变频DB”.“1#轴流风机”.ST_I”表示变频器读取到的速度反馈值,““ID轴流风机”.ID_FAN.CURRENT”表示上位机显示的速度反馈值。

4.编写力矩反馈程序

先将变频器读取到的力矩反馈值,由十六进制转换为十进制
上位机显示的力矩反馈值 = 十进制变频器力矩反馈值 / 10000 * 100
力矩的单位是%

SCL程序如下:

//力矩反馈
"ID轴流风机".ID_FAN_Moment := INT_TO_REAL(WORD_TO_INT("变频DB"."1#轴流风机".ST_T)) / 100;

其中,““变频DB”.“1#轴流风机”.ST_T”表示变频器读取到的力矩反馈值,““ID轴流风机”.ID_FAN_Moment”表示在上位机显示的力矩反馈值。

三、编写启/停控制程序

ABB变频器的启停控制逻辑,是将控制字对应的位,置0或置1。
在这里插入图片描述

以本程序为例,

启动逻辑:将数据块“变频DB”中的DBX154.0 - DBX155.7位,分别设置为0010 0000 0111 1110,对应到上图则为0000 0100 0111 1110,转换成16进制为047E
停止逻辑:将数据块“变频DB”中的DBX154.0 - DBX155.7位,分别设置为0010 0000 1111 1110,对应到上图则为0000 0100 0111 1111,转换成16进制为047F
急停逻辑:将数据块“变频DB”中的DBX154.0 - DBX155.7位,分别设置为0010 0000 0011 1110,对应到上图则为0000 0100 0111 1100,转换成16进制为047C

为了便于对相应位进行赋值,可参考文章SCL核心应用课项目实战_运行设备累计功能实现中的AT指令,将Word类型数据,拆分成由16个Bool类型数据组成的数组,然后可直接对该Word数据进行赋值,拆分后的Bool数据将分别对应Word数据的各个位,最后将Bool数据组成的数组依次传递给DBX154.0 - DBX155.7位,即可实现对各个位的赋值。
程序编写如下:

  1. 建立一个Word类型变量“控制字”,用于存储赋值的16进制数;
    在这里插入图片描述
  2. 创建FB块“16#转2#”
    添加如下变量,并编写程序;
    在这里插入图片描述
#Int_1 := #Int[0];
#Int_2 := #Int[1];
#Int_3 := #Int[2];
#Int_4 := #Int[3];
#Int_5 := #Int[4];
#Int_6 := #Int[5];
#Int_7 := #Int[6];
#Int_8 := #Int[7];
#Int_9 := #Int[8];
#Int_10 := #Int[9];
#Int_11 := #Int[10];
#Int_12 := #Int[11];
#Int_13 := #Int[12];
#Int_14 := #Int[13];
#Int_15 := #Int[14];
#Int_16 := #Int[15];
  1. 创建FC块“轴流风机变频器赋值”
    编写如下程序:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    通过对“控制字”写入不同数值,可实现变频器的启动、停止、急停。

总结

本文提供了一种西门子S7-1500PLC与ABB变频器通讯和控制的方法。注意,不同型号变频器通讯和控制方式可能有所不同,需要根据实际情况进行更改。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3227196.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Xinstall揭秘:APP推广数据背后的真相,让你的营销更精准!

在这个移动互联网时代,APP如同雨后春笋般涌现,但如何在这片红海中脱颖而出,成为每一个开发者与运营者面临的共同难题。其中,APP推广统计作为衡量营销效果、优化推广策略的关键环节,更是不可忽视的一环。今天&#xff0…

VUE_TypeError: Cannot convert a BigInt value to a number at Math.pow 解决方法

错误信息 TypeError: Cannot convert a BigInt value to a number at Math.pow vue 或 react package.json添加 "browserslist": {"production": ["chrome > 67","edge > 79","firefox > 68","opera >…

CephFS文件系统存储服务

目录 1.创建 CephFS 文件系统 MDS 接口 服务端操作 1.1 在管理节点创建 mds 服务 1.2 创建存储池,启用 ceph 文件系统 1.3 查看mds状态,一个up,其余两个待命,目前的工作的是node02上的mds服务 1.4 创建用户 客户端操作 1.5…

软件测试面试,看完即就业。

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 1、你的测试职业发展是什么? 测试经验越多,测试能力越高。所以我的职业发展是需要时间积累的,一步步向着高级测试工程师奔去。…

C#开发:下载node.js指定版本

一、打开官网 二、找到指定版本 三、选择程序包msi下载 四、验证下载是否成功 cmd输入: node -v npm -v

告别推广分成结算烦恼,Xinstall助力精准统计,让收益一目了然!

在快速变化的互联网环境中,App的推广与运营面临着前所未有的挑战。传统的营销手段已经难以应对当前复杂的市场环境,特别是在推广分成结算这一环节,往往成为众多企业的痛点。然而,有了Xinstall的加入,这一切都将变得不同…

C++入门基础篇(下)

目录 6.引用 6.1 引用的特性 6.2 const引用 7.指针和引用的关系 8.内联函数 9.nullptr 6.引用 引⽤不是新定义⼀个变量,⽽是给已存在变量取了⼀个别名,编译器不会为引⽤变量开辟内存空间, 它和它引⽤的变量共⽤同⼀块内存空间。比如&a…

【js】js高精度加减乘除函数

加法 /*** 高精度加法函数,处理字符串或数字输入,去除尾部多余的零* param {string|number} a - 被加数* param {string|number} b - 加数* returns {string} - 计算结果,去除尾部多余的零*/ export const add (a, b) > {// 将输入转换为…

LLM应用:行业大模型

大语言模型正在朝着两个方向发展,一个是以ChatGPT为代表的通用大模型,另一个则是行业大模型(或称为“专业大模型”)。如果大模型的演化分为阴阳两面,通用大模型更像是阳面,受众更广、更to C端,以…

【PVE】新增2.5G网卡作为主网卡暨iperf测速流程

【PVE】新增2.5G网卡作为主网卡暨iperf测速流程 新增网卡 新增网卡的首先当然需要关闭PVE母机,把新网卡插上,我用淘宝遥现金搞了个红包,花了26元买了块SSU的2.5G网卡。说实话这个价位连散热片都没有,确实挺丐的。稍后测下速度看…

深入了解代理IP常见协议:区别与选择

代理服务器在网络使用中扮演着重要的角色,是您设备和互联网之间的中间层。它不仅可以增强网络访问的安全性和隐私保护,还可以提供许多灵活的应用。使用代理时,不同的协议类型对数据交换具有不同的规则和特征。常见的代理协议包括HTTP代理、HT…

WTM的项目中EFCore如何适配人大金仓数据库

一、WTM是什么 WalkingTec.Mvvm框架(简称WTM)最早开发与2013年,基于Asp.net MVC3 和 最早的Entity Framework, 当初主要是为了解决公司内部开发效率低,代码风格不统一的问题。2017年9月,将代码移植到了.Net Core上&…

鸿蒙架构之AOP

零、主要内容 AOP 简介ArkTs AOP 实现原理 JS 原型链AOP实现原理 AOP的应用场景 统计类: 方法调用次数统计、方法时长统计防御式编程:参数校验代理模式实现 AOP的注意事项 一、AOP简介 对于Android、Java Web 开发者来说, AOP编程思想并不…

TotalSegmentator---针对CT/MRI数据的自动分割

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 公众号:VTK忠粉 前言 本文分享开源软件TotalSegmentator,该开源项目针对CT/MRI数据类型,对主要的解剖学结构进行自动分割,并且被集成到MITK中。希望对各…

如何分辨AI生成的内容?AI生成内容检测工具对比实验

检测人工智能生成的文本对各个领域的组织都提出了挑战,包括学术界和新闻界等。生成式AI与大语言模型根据短描述来进行内容生成的能力,产生了一个问题:这篇文章/内容/作业/图像到底是由人类创作的,还是AI创作的?虽然 LL…

TCP 握手数据流

这张图详细描述了 TCP 握手过程中,从客户端发送 SYN 包到服务器最终建立连接的整个数据流转过程,包括网卡、内核、进程中的各个环节。下面对每个步骤进行详细解释: 客户端到服务器的初始连接请求 客户端发送 SYN 包: 客户端发起…

【音频特征提取】傅里叶变换算法源码学习记录

目录 背景快速理解FFT(快速傅里叶变换)IFFT(逆傅里叶变换)STFT(短时傅里叶变换) 代码实现FFT源代码IFFT源代码FFT、IFFT自己实验STFT源代码STFT自己实验 总结 背景 最近用到了相关操作提取音频信号特征&am…

Apache配置与应用(企业网站架构部署与优化)

本章结构 如果要修改以上文件中的内容,想要生效,需要在主配置文件中能够扫描到这个默认文件的修改: 文件在: Apache 连接保持 Apache 的访问控制 针对IP地址的限制缺陷是不可预知性,需要事先直到对方的IP才能进行基于…

剪画小程序:雷军演讲真精彩:视频/录音转文本

最近,雷军在小米汽车发布会的演讲精彩绝伦,其中的经典语句深深触动了我。为了能够随时随地回味这些充满智慧和激情的话语,我使用了剪画这一神奇的工具,将演讲视频转换成音频,并保存到了自己的手机里。 在这个信息爆炸的…

Puppeteer 是什么以及如何在网络抓取中使用它 | 2024 完整指南

网页抓取已经成为任何处理网页数据提取的人都必须掌握的一项重要技能。无论你是开发者、数据科学家还是希望从网站收集信息的爱好者,Puppeteer都是你可以使用的最强大工具之一。本完整指南将深入探讨什么是Puppeteer以及如何有效地在网页抓取中使用它。 Puppeteer简…