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

news2024/11/15 13:39:32

文章目录

  • 前言
  • 一、硬件组态
  • 二、编写通讯程序
    • 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://www.coloradmin.cn/o/1914715.html

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

相关文章

Linux和Windows配置公钥到服务器上【免密登录/传输文件】

文章目录 1.Windows配置公钥到服务器上1.1.生成SSH密钥对(如果尚未生成):1.2.复制公钥到远程服务器:1.3.手动复制公钥到远程服务器:1.4.测试SSH连接: 2.Linux配置公钥到服务器上2.1生成SSH密钥对&#xff0…

开发个人Go-ChatGPT--6 OpenUI

开发个人Go-ChatGPT–6 OpenUI Open-webui Open WebUI 是一种可扩展、功能丰富且用户友好的自托管 WebUI,旨在完全离线运行。它支持各种 LLM 运行器,包括 Ollama 和 OpenAI 兼容的 API。 功能 由于总所周知的原由,OpenAI 的接口需要密钥才…

手撸俄罗斯方块(五)——游戏主题

手撸俄罗斯方块(五)——游戏主题 当确定游戏载体(如控制台)后,界面将呈现出来。但是游戏的背景色、方块的颜色、方框颜色都应该支持扩展。 当前游戏也是如此,引入了 Theme 的概念,支持主题的扩…

iOS UITableView自带滑动手势和父视图添加滑动手势冲突响应机制探索

场景 我们有时候会遇到这样的一个交互场景:我们有一个UITableView 放在一个弹窗中,这个弹窗可以通过滑动进行展示和消失(跟手滑动的方式),然后这个UITableView放在弹窗中,并且可以滚动,展示一些…

成都晨持绪:抖音电商带货需要交钱吗

在抖音这个充满创意与可能的平台上,电商带货成为了一种新兴而又时尚的职业。然而,伴随着无数的点击与转发,有一个问题始终萦绕在人们心头——抖音电商带货需要交钱吗? 如画卷展开,抖音平台以其独特的算法和庞大的用户基础构建了一…

spark shuffle写操作——UnsafeShuffleWriter

PackedRecordPointer 使用long类型packedRecordPointer存储数据。 数据结构为:[24 bit partition number][13 bit memory page number][27 bit offset in page] LongArray LongArray不同于java中long数组。LongArray可以使用堆内内存也可以使用堆外内存。 Memor…

构建高精度室内定位导航系统,从3DGIS到AI路径规划的全面解析

室内定位导航系统是一种利用多种技术实现室内精准定位和导航的智能系统,即便没有卫星信号,也能实现精准导航。维小帮室内定位导航系统是基于自研的地图引擎与先进定位技术,结合智能路径规划算法,解决了人们在大型复杂室内场所最后…

python怎么判断字符串以什么结尾

在python编辑器中新建一个data.py。 写上自己的注释。 然后新建一个变量testname。 利用endswith来判断字符串是不是以“ar”结尾。 将结果打印出来。 选择“run”->“run”。 运行该程序,如果是,就会返回true。

深度探讨:无法恢复主文件表的挑战与解决方案

在数字时代,数据的安全与恢复成为了不容忽视的重要议题。其中,主文件表(Master File Table, MFT)作为文件系统的核心组件,一旦受损或无法恢复,将直接导致数据访问的障碍,给用户带来巨大困扰。本…

Vue在一个页面调用另一个同级页面的方法

1、建个中转站 2、然后在两个页面都引入它,注意引入路径。 import Utils from src/utils/way 3、调用方的写法 //eg :Utils.$emit(demo, msg) 4、被调用方的写法 //eg :Utils.$on(demo, val>{})

Playwright使用教程【附爬取Leetcode题目URLs以及有道翻译小软件】

前言 playwright是微软设计的一款工具,可以爬取网页,还可以自动化测试自己编写的网站,而且不像bs4、request编写爬虫那么复杂,也不需要考虑反爬技术,只需要知道最基础的前端知识,就可以高效、便捷的编写爬…

【算法训练记录——Day43】

Day43——动态规划Ⅴ 1.kamacoder52_携带研究材料2.leetcode518_零钱兑换Ⅱ3.leetcode377_组合总和Ⅳ 完全背包 1.kamacoder52_携带研究材料 思路:这里每种材料可以选择无数次,因此属于完全背包, 首先回顾一下01背包的核心代码 for(int i 0…

vue3 + tsx 表格 Action 单独封装组件用法

前言 先上图看右侧列 action 的 UI 效果: 正常来说,如果一个表格的附带 action 操作,我们一般会放在最右侧的列里面实现,这个时候有些UI 框架支持在 SFC 模板里面定义额外的 solt,当然如果不支持,更通用的…

医疗器械网络安全 | 漏洞扫描、渗透测试没有发现问题,是否说明我的设备是安全的?

尽管漏洞扫描、模糊测试和渗透测试在评估系统安全性方面是非常重要和有效的工具,但即使这些测试没有发现任何问题,也不能完全保证您的医疗器械是绝对安全的。这是因为安全性的评估是一个多维度、复杂且持续的过程,涉及多个方面和因素。以下是…

7.10号小项目部分说明

总体说明 糖锅小助手 我这次主要对上次糖锅小助手界面添加了一个侧边栏(侧边输入框放置了三个按钮,可以跳转到其他ai聊天界面,还可以退出聊天界面回到登录界面)和一个日期输入框(日期输入框获取时间,根据时…

史上最齐全电动弃流装置(弃流控制柜/流量式雨水弃流装置)这里都有,井座式、304不锈钢材质

电动弃流装置组成部分有:PLC控制柜、雨量传感器/电磁流量计、弃流装置 进出水管可以定制不同接口,可以适用于连接波纹管、PVC管 电动弃流装置的工作原理如下: 首先,雨量传感器或电磁流量计实时监测降雨量或水流流量等相关数据&…

TCP 握手数据流

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

AI降痕工具:一键去除论文中的AI代写痕迹

在这个充满创意和创新的时代,AI已经渗透到我们生活的方方面面。然而,随着AI的飞速发展,AI的痕迹在论文创作中愈发明显。 这不禁让人思考,如何让论文回归纯粹,展现人类独有的思考和见解。“论文去AI痕迹”不仅是对学术…

vue3-openlayers WebGL加载地图(栅格切片、矢量切片)

本篇介绍一下使用vue3-openlayers WebGL加载地图(栅格切片、矢量切片) 1 需求 vue3-openlayers WebGL加载地图(栅格切片、矢量切片) 2 分析 栅格切片使用ol-webgl-tile-layer 矢量切片使用ol-vector-tile-layer(默…

海外视频媒体发布/发稿:如何在国外媒体以视频的形式宣发

1. 背景介绍 在如今数字化时代,每个国家都拥有着各自的视频媒体平台,而主流媒体也都纷纷加入了视频发布的行列。视频媒体的宣发形式主要包括油管Youtube等视频分享平台,以及图文配合的发布方式。通过在视频中夹带链接,媒体可以以…