6es7216-2bd23-0xb8型号介绍
西门子s7-1200 紧凑型plc在当前的市场中有着广泛的应用,作为经常与sinamics g120系列变频器共同使用的plc,其uss通信协议的使用一直在市场上有着非常广泛的应用。本文将主要介绍如何使用uss通信协议来实现s7-1200与g120变频器的通信。
1.控制系统原理和接线图
下图是本例中所使用的原理和接线图。
图1:控制系统原理和接线图
2.硬件需求s7-1200 plc目前有3种类型的cpu:1)s7-1211c cpu。2)s7-1212c cpu。3)s7-1214c cpu。这三种类型的cpu都可以使用uss通信协议通过通信模块cm1241 rs485来实现s7-1200与g120变频器的通信。
本例中使用的plc硬件为:1)pm1207电源 ( 6ep1 332-1sh71 )2) s7-1214c ( 6es7 214 -1be30 -0xb0 )3) cm1241 rs485 ( 6es7 241 -1ch30 -0xb0 )4) 模拟器 ( 6es7 274 -1xh30 -0xa0 )
本例中使用的g120变频器硬件为:1) sinamics g120 pm240 (6sl3244-0ba20-1ba0)2) sinamics g120 cu240s(6sl3224-0be13-7ua0)3) siemens motor (1la7060-4ab10)4) 操作面板 ( xau221-001469)5) uss 通信电缆( 6xv1830-0eh10)
3.软件需求
1) 编程软件 step7 basic v10.5 ( 6es7 822-0aa0-0ya0)
4.组态
我们通过下述的实际操作来介绍如何在step7 basic v10.5 中组态s7-1214c 和g120变频器的uss通信。
4. 1 plc 硬件组态
首先在step7 basic v10.5中建立一个项目,如图1所示。
图2: 新建s7 1200项目
在硬件配置中,添加cpu1214c和通信模块cm1241 rs485模块,如图2所示。
图3: s7 1200硬件配置
在cpu的属性中,设置以太网的ip地址,建立pg与plc的连接,如下图所示。
图4: s7 1200 ip地址的设置
4. 2 g120参数设置
变频器的参数设置如下表所示。
序号 功能 参数 设定值
1 工厂设置复位 p0010 30
2 工厂设置复位 p970 1
3 快速启动设置 p0010 1
4 电机额定电压 p0304 380v
5 电机额定功率 p0307 5.5kw
6 电机额定频率 p0310 50hz
7 电机额定转速 p0311 1350r/min
8 uss命令源 p0700 5
9 频率设定源 p01000 5
10 小电机频率 p1080 0.0hz
11 大电机频率 p1081 50.0hz
12 启动斜坡时间 p1120 10.0s
13 延迟斜坡时间 p1121 10.0s
14 结束快速启动设置 p3900 1
15 激活专家模式 p0003 3
16 参考频率 p2000 50.0hz
17 uss数据传输速度 p2010 9
18 uss从站地址 p2011 1
19 uss pzd长度 p2012 2
20 uss pkw长度 p2013 4
21 通信监控 p2014 0
22 在e2prom 保存数据 p0971 1
23 激活专家模式 p0003 3
24 激活参数模式 p0010 30
25 从g120中传输参数到bop p0802 1
表1 :g120变频器的参数设置
注意:表1中的17,18,19,20 这四项参数值的设置必须使plc的参数值与变频器的参数值相*。而19,20这两个参数值必须设置成如表1中的值,否则有可能变频器与s7-1200通信有如下问题:可能不能读出从变频器反馈回来的参数值。
5.uss通信原理与编程的实现
5. 1 s7 1200 plc与g120 通过uss通信的基本原理
s7 1200提供了的uss库进行uss通信,如下图所示:
图5: s7 1200 的uss库
uss_drv 功能块是s7-1200 uss通信的主体功能块,接受变频器的信息和控制变频器的指令都是通过这个功能快来完成的。必须在主 ob中调用,不能在循环中断ob中调用。 uss_port功能块是s7-1200与变频器uss通信的接口,主要设置通信的接口参数。可在主ob或中断ob中调用。 uss_rpm功能块是通过uss通信读取变频器的参数。必须在主 ob中调用,不能在循环中断ob中调用。 uss_wpm功能块是通过uss通信设置变频器的参数。必须在主 ob中调用,不能在循环中断ob中调用。
这些功能块与变频器之间的控制关系如下图所示:
三、项目配置
1、 本例使用的设备描述
servo_02 motor module: 6sl3120-2te13-0aa3
motor: 1fk7022-5ak71-1lg0
absolute encoder
servo_03 motor module: 6sl3120-2te13-0aa3
motor: 1fk7022-5ak71-1ag0
sin/cos encoder
图 10.
注意:s120支持两个周期性通讯接口if1和if2,分别通过cu参数p8839.0和p8839.1来定义if1和if2的通讯方式,在默认情况下p8839.0= p8839.1=99,就激活了这两个接口的自动模式,如下表所示:
在这种方式下无法实现profibus dp和profinet io的并行通讯,因此为了实现其并行通讯,需要按如下方式设置:? p8839[0]=1和p8839[1]=2:profibus dp 用于同步,profinet io用于周期性通讯? p8839[0]=2和p8839[1]=1:profinet io用于同步,profibus dp用于周期性通讯(本例中的设置)
两个周期性通讯接口if1和if2的特性如上表所示:注意:if2不支持tm41,tm15,tm17,tm/tb,cu与cpu之间的通讯。
五、通过profibus dp或profinet io总线来实现过程数据的传输s7-300/400plc通过profinet io或profibus dp周期性通讯方式将控制字1(ctw1)和主设定值(nsetp_b)发送至驱动器。(1) 控制字中bit0做电机的起、停控制。(2) 主设定值为速度设定值,参数p2000中的值为频率设定值和实际值的参考频率,* 对应4000h(十六进制),发送的高频率(大值)为7fffh(200%)。(3) 当组态的报文结构 pzd=2或自由报文999时,在s7-300/400 中可用“move 指令进行数据传送;当组态的报文结构pzd >2,在s7-300/400 中需调用sfc14和sfc15系统功能块。? sfc14(“dprd_dat)用于读驱动装置的过程数据。? sfc15(“dpwr_dat)用于将过程数据写入驱动装置。例子(profinet io):servo_02 控制字、主设定值的发送及状态字、实际频率的读取程序见图11。
图11
通过读取servo_02的参数r2050和p2051可以判断数据是否传输成功。
图12
例子(profibus dp):servo_02 控制字、主设定值的发送及状态字、实际频率的读取程序见图13。
图13
通过读取servo_02的参数r8850和p8051可以判断数据是否传输成功。
图14
注意通过通讯接口if1和if2可以同时实现cpu与servo_02的数据传输
六、驱动器参数的读取及写入
1.扩展profidrive功能(dpv1)非周期性数据传送模式允许:? 交换大量的用户数据? 用dpv1的功能 read 和 write可以实现非周期性数据交换。传输数据块的内容应遵照 profidrive参数通道(dpv1)数据集ds47(非周期参数通道结构)。
2. 参数请求及参数应答的结构参数请求包括三部分:请求标题、参数地址及参数值。
表1.参数请求格式
表2.参数应答格式
表3.参数请求及应答描述
表4.在dpv1参数应答中的错误值描述
3. s7-300/400plc通过profinet io非周期性通讯方式读取驱动器参数。请注意:plc读取驱动器参数时必须使用两个功能块sfb52 / sfb53举例如下:(1) 使用标志位m0.0及功能块sfb53将读请求(数据集record db11)(图16)发送至驱动器。将m0.0设定为数值1启动读请求,当读请求完成后必须将该请求置0,结束该请求。error = 1: 表示执行此功能块时有错误产生,而status 指示功能块执行状态或错误信息 。(2) 使用标志位m1.0及功能块sfb52读取参数的请求响应(响应块db22)(参见图17) 。将m1.0设定为数值1读取参数请求响应,完成后必须将该位置0,结束该请求。error = 1: 表示执行此功能块时有错误产生,而status 指示功能块执行状态或错误信息 。
图15 profinet io读参数请求
图16 profinet io读参数响应
图17 profinet io读参数变量表
4. s7-300/400plc通过profinet io非周期性通讯方式修改驱动器参数p1216。举例如下:plc写参数时只需使用sfb53,在本项目的network 2中发送写请求db33 (参见图19) 到驱动器; plc读“写参数响应时需使用sfb52,在本项目中读取驱动器返回的参数值数据块为db22 (参见图20) 。(1) 将m0.2设定为数值1启动写请求,当写请求完成后必须将该请求置0,结束该请求。error = 1: 表示执行此功能块时有错误产生,而status 指示功能块执行状态或错误信息 。(2) 将m1.0设定为数值1读请求,完成后必须将该请求置0,结束该请求。error = 1: 表示执行此功能块时有错误产生,而status 指示功能块执行状态或错误信息