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


前言

本文基于某实际项目,提供一种西门子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变频器通讯和控制的方法。注意,不同型号变频器通讯和控制方式可能有所不同,需要根据实际情况进行更改。

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-10 20:24:04       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-10 20:24:04       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-10 20:24:04       45 阅读
  4. Python语言-面向对象

    2024-07-10 20:24:04       55 阅读

热门阅读

  1. Postman与世界相连:集成第三方服务的全面指南

    2024-07-10 20:24:04       21 阅读
  2. 3033.修改矩阵

    2024-07-10 20:24:04       19 阅读
  3. 架构面试-数据库优化问题

    2024-07-10 20:24:04       19 阅读
  4. 精通Sklearn时间序列分析:预测未来的艺术

    2024-07-10 20:24:04       24 阅读
  5. OpenHarmony移植小型系统exynos4412(一)

    2024-07-10 20:24:04       19 阅读
  6. 适合selenium的防自动化检测的方法

    2024-07-10 20:24:04       21 阅读
  7. 使用Spring Boot和HBase实现大数据存储

    2024-07-10 20:24:04       19 阅读
  8. 华为机考真题 -- 篮球游戏

    2024-07-10 20:24:04       21 阅读
  9. Docker 入门篇(十 一)-- 网络配置总结

    2024-07-10 20:24:04       24 阅读