热门搜索:
西门子CPUST20
SIMATIC S7-200 SMART,CPU ST20, 标准 CPU,DC/DC/DC, 机载 I/O: 12 个 24V DC 数字输入;8 DO 24V DC; 电源:直流 20.4-28.8V DC, 程序存储器/数据存储器 20 KB西门子CPUST20
西门子MM4系列变频器都集成了串行接口,支持USS通信协议,通过USS协议可以对变频器进行控制和读写变频器参数。使用S7-300PLC有以下两种通讯方案:
1. 按照USS协议要求编写通讯报文,计算BCC校验,适用于从站数量比较少,较简单的应用;
本文主要介绍通过**种方案实现CPU314-2PtP与MM440的USS通讯。使用S7-300编写USS通讯程序分为以下几个步骤:
1. 依据USS协议编写报文;
本文根据这4个步骤编写了如下内容:*1节简单介绍USS协议内容,了解USS协议报文格式;*2节根据USS协议列举了4条报文;*3节介绍PLC和变频器USS通讯的硬件组态;*4节介绍通过调用PLC中的发送和接收功能块实现USS协议报文的发送和接收。
1 USS协议介绍
USS字符帧结构
USS协议的报文由一连串的字符组成,协议中定义了它们的功能,如下表所示:
USS报文结构
? STX:长度1个字节,总是为02(Hex),表示一条信息的开始;
USS有效数据区
PKW区用于主站读写从站变频器参数:
PKW结构
变频器参数号<2000时,基本参数号PNU=变频器参数号,例如P700的基本参数号PNU=2BC(Hex)(700(Dec)=2BC(Hex))。
? IND:长度一个字,结构如下表。
IND结构
变频器参数号<2000时,PNU扩展=0(Hex)。
根据传输的数据类型和驱动装置的不同,PKW和PZD区的数据长度不是固定的,可以通过P2012、P2013 设置。本例采用4PKW,2PZD报文格式。
2 USS协议报文定义
报文解释:
注:黄色标记表示应答报文中的内容
例2.读取参数P0700[0]的数值
报文解释:
注:黄色标记表示应答报文中的内容
例3.不需要读写参数只发送停止变频器报文
例4.不需要读写参数只送启动变频器、设定频率50Hz报文
例3、4报文比较简单只需要定义PZD中的内容,PKW区内容可以设置为0。
3 硬件组态
1. 采用带有集成RS485接口的CPU例如CPU31X-2PtP;
以上三种模块都可以通过下表中的接线方式与MM4变频器连接,本文中采用1台CPU314-2PtP与1台MM440通讯。
S7-300 RS485接口与MM440 USS接线
3.1 PLC硬件组态
2) 双击CPU314-2PtP的X2端口PtP,打开PTP属性对话框General栏,Protocol复选框中选择“ASCII”协议。
3) Addresses栏中记录起始地址“1023”,在后面的编程中使用。
4) Transfer栏中设置通讯速率“9600bps”,报文格式:“8”位数据位,“1”位停止位,“Even”偶校验,数据流控制选择“None”。
5) End Delimiter栏中设置接收报文结束方式“After character delay time elapses”利用两个报文的间隔时间来判断报文是否结束,并设置字符延时时间“4ms”(该时间可使用默认设置,默认设置时间随通讯速率不同时间也不同)。
6) Signal Assignment栏中设置串行通信接口信号模式为“Half Duplex(RS-485)Two-wire Mode”半双工两线制RS485模式,空闲状态信号状态“R(A)0v、R(B)5V”。
通过以上步骤完成对CPU314-2PtP串行接口的基本设置,如需更详细的信息请参照CPU314-2PtP手册。
3.2 变频器参数设置
以上参数只对与变频器USS通讯相关的参数进行介绍,变频器其他参数设置请参照《MM440使用大全》。
4 USS通讯编程
4.1 CPU314-2PtP串行接口发送和接收程序
在SFB60发送通信块中需要对下列参数进行赋值:
分配DB61为SFB61的背景数据块,在OB1中调用程序:
在SFB61接收通信块中需要对下列参数进行赋值:
4.2 通过发送程序发送定义好的USS报文
4.3使用S7-300 PLC编写BCC校验程序
15字节的BCC校验程序
1 G120 PROFIBUS通信功能概述
本文通过示例介绍S7-1200与CU240E-2 DP F的PROFIBUS PKW通信,介绍如何通过PKW通信读P2902[5]参数值、写P1121参数值。
2 参数通道(PKW)的数据结构
PKW通信的请求和应答数据总是包含4个字,*1个字和*2个字传送参数号、索引以及任务类型(读或写),*3个和*4个字传送参数内容。
> PKE:PKW*1个字
? AK:位 12~15 包含了任务ID 或应答ID,任务ID参考表2-1,应答ID参考表2-2 ;
表2-1主站发送给变频器的任务ID
表2-2变频器发送给主站的应答ID
应答ID = 7 变频器会在参数值PWE1中将错误号发送给主站。
表2-3 应答ID = 7时的错误编号
注:更多错误编号描述请参考《CU240E-2操作手册》
? 子下标(参数下标):标识变频器参数的子索引(参数下标)值。例如P840[1]中括号中的“1”即为参数下标。
表2-4 分区下标设置,取决于变频器参数范围
> 参数值PWE:PKW第3、4个字
? 32位的参数值由PWE1(*3个字)和PWE2(*4个字)两个字组成;
3 S7-1200与CU240X-2 DP的PROFIBUS PKW通信实例
3.1 S7-1200组态
? 组态与CU240E-2 DP F通信报文
1) 将硬件目录中“SIEMENS telegr 353, PKW+PZD-2/2”模块拖拽到“设备概览”视图的*1个插槽中,系统自动分配了输入输出地址,本示例中分配PKW的输入地址IB68~IB75,输出地址QB64~QW71,分配PZD的输入地址IW76、IW78,输出地址QW72、QW74;
? 编程:在S7-1200中调用扩展指令“DPRD_DAT”读取PKW区数据,调用扩展指令“DPWR_DAT”写入PKW数据。
1) 双击项目树下的“Main(OB1)”打开OB1程序编辑窗口;
? 为系统功能“DPRD_DAT”、“DPWR_DAT”分配硬件标识:
1) 单击块参数“LADDR”;
? 为系统功能“DPRD_DAT”、“DPWR_DAT”分配其它参数:
1) DPRD_DAT读取缓冲区从MB100开始的8个字节;
注意:也可以使用DB块作为缓冲区,创建DB时请将块访问模式定义为“标准-与S7-300/400兼容”模式。
表3-1读取参数P2902[5]值的请求数据格式,PLC -> 变频器
PKW(*1个字)MW200
MW200 IND(*2个字)MW202
MW202 PWE(*3个和*4个字)MD204
AK
(1bit)
PNU(10bit)
子索引(参数下标)
分区索引
PWE1
PWE2
0x1
0x386
0x05
0x80
0x0000
0x0000
表3-2读取参数P2902[5]值的响应数据格式,变频器 -> PLC
PKW(*1个字)MW200
IND(*2个字)MW202
PWE(*3个和*4个字)MD204
AK
(1bit)
PNU(10bit)
子索引(参数下标)
分区索引
PWE1
PWE2
0x2
0x386
0x05
0x80
100.0(浮点数)
2. 采用DriveES SIMATIC软件提供的S7-300库程序,自动生成从站轮询表程序,适用于从站数量比较多,较复杂的应用。
2. 使用S7-300提供的串口数据发送程序发送USS报文;
3. 使用S7-300提供的串口数据接收程序接收USS报文;
4. 依据USS协议分析接收到的报文。
USS协议是西门子专为驱动装置开发的通信协议。USS的工作机制是,通信是由主站发起,USS主站不断循环轮询各个从站,从站根据收到的指令,决定是否响应主站。从站不会主动发送数据。从站在以下条件满足时应答主站:接收到主站报文没有错误,并且本从站在接收到主站的报文中被寻址,上述条件不满足或者主站发出的是广播报文,从站不会做任何响应。USS的字符传输格式为11位,其中1位起始位、8位数据位、1偶校验、1位停止位。如下表所示:
起始位
数据位
校验位
停止位
1
0
1
2
3
4
5
6
7
偶X1
1
LSB
MSB
STX
LGE
ADR
有效据区
BCC
1
2
3
…
n
? LGE:长度1个字节,表明在LGE后字节的数量,上表中黄色区域长度;
? ADR:长度1个字节,表明从站地址;
? BCC:长度1个字节,异或校验和,USS报文中BCC前面所有字节异或运算的结果;
? 有效数据区:由PKW区和PZD区组成,如下表所示。
PKW区
PZD区
PKE
IND
PWE1
PWE2
…
PWEm
PZD1
PZD2
PZD1
PZDn
? PKE:长度一个字,结构如下表,任务或应答ID请参考《MM440使用大全》*13章。
Bit15- Bit 12 Bit 11 Bit 10-Bit 0
Bit15- Bit 12
Bit 11
Bit 10-Bit 0
任务或应答ID
0
基本参数号PNU
变频器参数号>=2000时,基本参数号PNU=变频器参数号-2000(Dec),例如P2155的基本参数号PNU=9B(Hex)(2155-2000=155(Dec)=9B(Hex))。
Bit15- Bit 12
Bit 11- Bit 8
Bit 7 - Bit 0
PNU扩展
0(Hex)
参数下标
变频器参数号>=2000时,PNU扩展=8(Hex)。
参数下标,例如P2155[2]中括号中的2表示参数下标为2。
? PWE:读取或写入参数的数值
PZD区用于主站与从站交换过程值数据:
? PZD1: 主站?从站 控制字
主站?从站 状态字
? PZD2: 主站?从站 速度设定值
主站?从站 速度反馈值
? PZDn: MM430/440支持较多8个PZD,MM420支持较多4个PZD
本文通过发送4个不同功能的报文来演示自定义USS报文的方法,USS协议详细说明请参照《MM440使用大全》*13章。
例1.把参数P2155[2]的数值修改为40.00Hz
字节数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
发送报文
2
0E
1
30
9B
80
2
42
20
0
0
4
7E
0
0
3C
应答报文
2
0E
1
20
9B
80
2
42
20
0
0
FB
31
0
0
9C
STX
Byte1
起始字符
LGE
Byte2
报文长度(字节3到字节16共14个字节)
ADR
Byte3
从站地址
PKW
Byte4-5
PKE内容:
Bit15- Bit 12(任务ID) =3(Hex),修改参数数值双字
Bit15- Bit 12(应答ID) =2(Hex),传送参数数值双字
Bit10- Bit 0(基本参数号PUN)=2155-2000(Dec)=9B(Hex)
Byte6-7
IND内容:
Bit15- Bit 12(PNU扩展) =8(Hex),参数号大于2000
Bit7- Bit 0(参数下标)=2(Hex),P2155[2]
Byte8-11
参数值,42 20 00 00(Hex)=40.0(浮点数)
PZD
Byte12-13
PZD1
Byte14-15
PZD2
BCC
Byte16
异或校验和
字节数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
发送报文
2
0E
1
12
BC
0
0
0
0
0
0
4
7E
0
0
D9
应答报文
2
0E
1
12
BC
0
0
0
0
0
5
FB
31
0
0
6C
STX
Byte1
起始字符
LGE
Byte2
报文长度(字节3到字节16共14个字节)
ADR
Byte3
从站地址
PKW
Byte4-5
PKE内容:
Bit15- Bit 12(任务ID) =1(Hex),读取参数数值
Bit15- Bit 12(应答ID) =1(Hex),传送参数数值单字
Bit10- Bit 0(基本参数号PUN)=700(Dec)=2BC(Hex)
Byte6-7
IND内容:
Bit15- Bit 12(PNU扩展) =0(Hex),参数号小于2000
Bit7- Bit 0(参数下标)=0(Hex),P700[0]
Byte8-11
参数值,5(Hex)=5(Dec)
PZD
Byte12-13
PZD1
Byte14-15
PZD2
BCC
Byte16
异或校验和
字节数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
发送报文
2
0E
1
0
0
0
0
0
0
0
0
4
7E
0
0
77
应答报文
2
0E
1
0
0
0
0
0
0
0
0
FB
31
0
0
C7
字节数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
发送报文
2
0E
1
0
0
0
0
0
0
0
0
4
7F
40
0
36
应答报文
2
0E
1
0
0
0
0
0
0
0
0
FF
34
3F
FF
6
请注意:如果按照以上4个例子发送报文可能会收到与例子中不一样的应答报文,这并不代表报文存在问题,可能由于变频器状态不同或参数设置不同造成。例子报文中已经计算了BCC校验的值,如果使用其他的报文需要自己计算BCC校验。
MM4系列变频器提供的串行接口为RS485接口,S7-300 PLC有3种通讯模块支持RS485接口:
2. RS485接口的CP340通讯模块;
3. RS485接口的CP341通讯模块;
信号
CPU314-2PtP
MM430/MM440
MM420
RS485接口针脚
端子
端子
P+
11
29
14
N-
4
30
15
1) 首先打开STEP7新建项目并插入CPU314-2PtP。
与通信有关的变频参数:
参数
设置值
功能说明
P0700
5
命令源选择:com链路USS通讯
P1000
5
频率设定源选择:com链路USS通讯
P2009
0
USS规格化:不规格化
P2010
6
USS波特率:9600bps
P2011
1
USS地址:1
P2012
2
PZD长度:2个字
P2013
4
PKW长度:4个字
r2024~r2031
只读
USS诊断数据
CPU314-2PtP调用系统功能块SFB60和SFB61进行串行通讯接口数据的发送和接收,SFB60与SFB61系统功能块已经包含在CPU中,只需在OB1中直接调用并分配背景数据块即可。在本例中分配DB60为SFB60的背景数据块,在OB1中调用程序:
REQ:
发送请求,每个上升沿发送一帧数据。
R:
终止发送。
LADDR:
PtP串口的起始地址,请查看PLC硬件配置中,PtP属性对话框Addresses栏址中显示的数值,本例中为“1023”,转化为16进制数为W#16#3FF。
DONE:
发送完成输出一个脉冲。
ERROR:
发送错误输出1。
STATUS:
发送块状态字。
SD_1:
发送数据区起始地址,发送数据区定义为DB1.DBB0开始的n个字节。
LEN:
发送字节的长度。
EN_R:
接收使能。
R:
终止接收。
LADDR:
PtP串口的起始地址,请查看PLC硬件配置中,PtP属性对话框Addresses栏址中显示的数值,本例中为“1023”,转化为16进制数为W#16#3FF。
NDR:
接收到新数据输出一个脉冲。
ERROR:
接收错误输出1。
STATUS:
接收块状态字。
RD_1:
接收数据区起始地址,接收数据区定义为DB2.DBB0开始的n个字节。
LEN:
接收到数据的长度。
将例子中的报文按字节顺序传送到从DB1.DBB0开始的16个字节中,设置MW104=16,当M100.0上升沿时PLC即发送一帧USS报文。如果变频器接收到的报文无误就会返回一条响应报文,需要将M200.0置1 PLC就会接收到响应报文,并把报文存储到从DB2.DBB0开始的16个字节中。
在USS通讯中变频器在收到主站发送的报文后会重新计算报文的BCC校验,如果计算结果与报文传送的BCC校验不一致,那么表明变频器接收到的信息是无效的,变频器将丢弃这一信息,并且不向主站发出应答信号。所以正确计算BCC校验尤为重要。前面提到的4个例子报文中已经计算好了BCC校验,下面给出利用S7-300 PLC编程计算15个字节的BCC校验的程序。
程序中将DB1.DBB0到DB1.DBB14中的内容依次进行异或计算,并把计算结果保存到DB1.DBB15中。
SINAMICS G120*二代控制单元CU240B-2 DP、CU240E-2 DP、CU240E-2 DP F支持基于PROFIBUS的周期过程数据交换和变频器参数访问。
> 周期过程数据交换--通过该通信PROFIBUS主站可将控制字和主设定值等过程数据周期性的发送至变频器,并从变频器周期性的读取状态字和实际转速等过程数据。G120较多可以接收和发送8个过程数据字。该通信使用周期性通信的PZD通道(过程数据区),变频器不同的报文类型定义了不同数量的过程数据字(PZD)。
> 变频器参数访问--提供PROFIBUS主站访问变频器参数的接口,有两种方式能够访问变频器参数:
PKW通信工作模式:主站发出请求,变频器收到主站请求后处理请求,并将处理结果应答给主站。
图2-1 PKW通信原理
图2-2 PKW参数通道的结构
? SPM:始终为0;
? PNU:参数号 < 2000 PNU = 参数号。 参数号 ≥ 2000 PNU = 参数号减去偏移,将偏移写入分区索引中
( IND 位 7 … 0 )。
图2-3 PKW结构
> 参数索引IND:PKW*2个字
? 分区下标:变频器参数偏移量,配合PNU确定参数号。例如P2902的分区下标 = 0x80,分区下表查询请参考表
2-1。
图2-4 IND结构
参数值PWE总是以双字方式( 32 位)发送,一条报文只能传送一个参数值。
? 16位的参数值以PWE2表示,PWE1为0;
? 8位的参数值以PWE2中位0…7表示,高8位和PWE1为0;
? BICO参数:PWE1表示参数号,PWE2位10…15为1,PWE2位0…9表示参数的索引或位号。
CU240E-2 DP F控制单元支持两种PKW通信报文:353报文和354报文,它们的区别在于过程值通道PZD数量的不同,PKW通道功能完全相同。本示例以组态353报文为例。
S7-1200与CU240X-2 DP的PROFIBUS通信基本组态过程以及变频器通信参数设置请参考《S7-1200与G120 CU240X-2 DP的PROFIBUS PZD通信》文档,在此不做详细介绍。
2)为方便编程将插槽1的PKW区重命名为“PKW”(在调用系统功能DPRD_DAT、DPWR_DAT时将用到此名字),将插槽2的PZD区重命名为“PZD”。
图3-1组态与CU240E-2 DP F通信报文
2) 扩展指令目录中“分布式I/O -> 其它 -> 驱动器 -> DPRD_DAT和DPWR_DAT ”指令拖拽到程序编辑窗口中。
图3-2 S7-1200编程
2) 在下拉列表中选择“PKW[AI/AO]”。
图3-3分配硬件标识符
2) DPRD_DAT发送缓冲区从MB200开始的8个字节;
图3-4分配其它参数
3.2示例1:读取参数P2902[5]数值
将MB200~MB207的8个字节请求数据发送到变频器,变频器返回的响应数据保存在MW100~MB107的8个字节中。读取参数P2902[5]值的请求数据格式参考表2.2.1,变频器响应数据格式参考表2.2.2。
P2902参数范围在2000…3999之间,根据表2-1设置分区索引值为0x80。
PNU = 2902-2000 = 902(十进制)= 386 (十六进制)。
通过变量表模拟程序读取参数P2902[5] = 100.0,参考图3-4。
图3-4 S7-1200读P2902[5]参数
(4bit)
(8bit)高字节
(8bit)低字节
(16bit)高字
(16bit)低字
(4bit)
(8bit)高字节
(8bit)低字节
(16bit)高字
(16bit)低字
3.3示例2:修改参数P1121数值
将MB200~MB207的8个字节请求数据发送到变频器,变频器返回的响应数据保存在MW100~MB107的8个字节中。修改参数P1121值的请求数据格式参考表2.3.1,变频器响应数据格式参考表2.3.2。
P1121参数范围在0…1999之间,根据表2-1设置分区索引值为0x00。
PNU = 1121(十进制)= 461 (十六进制)。
通过变量表模拟程序修改参数P1121 = 5.0,参考图2-2。
图3-5 S7-1200写P1121参数
西门子CPUST20