全国热线电话:
18390808297
![]() |
|
湖南嘉普云自动化设备有限公司
一、DP总线通讯功能概述
S7-300/400与SINAMICS S120 之间通过DP总线可进行周期性及非周期性数据通讯。使用标准S7功能块SFC14/SFC15,S7-300/400PLC通过PROFIBUS周期性通讯方式可将控制字1(CTW1)和主设定值(NSETP_B)发送至驱动器;使用标准S7功能块SFC58 / SFC59,可以实现非周期性数据交换,读取或写入驱动器的参数。
二、S7-300/400与S120装置的连接
三、驱动器站地址设置
1. 驱动装置的PROFIBUS通讯地址设置有两种方法:
(1) 通过CU控制单元上的拨码开关实现地址设置,有效地址值为:1…126,本例中地址设置见下图。
注意:通过拨码开关改变地址时应断掉变频器电源
(2) 在拨码开关全部拨到OFF或ON状态时可以利用参数P918设置地址,否则
P918参数中设置的地址是无效的。
驱动装置的PROFIBUS 通讯波特率默认为:1.5Mbps
2. 在S7-300/400的硬件组态中设定的驱动装置站地址应与驱动装置的站地址*。
图.1
四、通讯报文设置
对于不同的驱动装置只有特定的报文结构能被选用,详细描述请参考:SINAMICS_S120_Commissioning_Manual。表1为常用报文。
表1.
报文格式999为用户自定义报文,当用户选择此报文格式时,电机的起、停控制位等需自己做关联。此时必须将PLC控制请求置1(P854=1)。
注意:用户可在S7-300/400硬件配置时根据需要配置报文结构,配置结束后进行
编译保存;之后打开Starter,核对报文结构是否*,若不*需在Starter
中打开“configuration”做调整后点击“Transfer to HW config”按钮。
图.2
DC/AC 驱动装置报文设定
图.3
五、用DP总线对电机起、停及速度控制
S7-300/400PLC通过PROFIBUS周期性通讯方式将控制字1(CTW1)和主设定值(NSETP_B)发送至驱动器。
(1) 控制字中Bit0做电机的起、停控制。
(2) 主设定值为速度设定值,频率设定值和实际值要经过标准化,使得4000H(十六进制)对应于100%,发送的高频率(大值)为7FFFH(200%)。可以在P2000中修改参考频率(缺省值为50Hz)。
(3) 组态的报文结构 PZD=2或自由报文999时,在S7-300/400 中可用“MOVE”指令进行数据传送;当组态的报文结构 PZD>2,在S7-300/400 中需调用SFC14和SFC15系统功能块。
? SFC14(“DPRD_DAT”)用于读Profibus 从站的过程数据
? SFC15(“DPWR_DAT”)用于将过程数据写入Profibus 从站
例子:SERVO_02 ”控制字、主设定值的发送及状态字、实际频率的读取程序
(1) 控制驱动器运行:
通过先发送控制字(STW1)047E然后发送047F来启动驱动器,该数据控制字在DB10.DBW8(见图4)中,主设定值在DB10.DBD10中设定,运行信号为M1.0。这些值均通过变量表VAT_2设定及监控。控制程序见图3。
(2)停止驱动器:
应发送控制字047E至驱动器。
(3)读取驱动器状态字及频率实际值:
PLC接收状态字1(ZSW1),存放在DB10.DBW0中;接收驱动器传来的频率实际值,存放在DB10.DBD2中。
图3. 控制程序
图4. DB10
六、驱动器参数的读取及写入
1.扩展PROFIBUS DP功能(DPV1)
非周期性数据传送模式允许:
? 交换大量的用户数据(多240 bytes)
? 用DPV1的功能 READ 和 WRITE可以实现非周期性数据交换。传输数
据块的内容应遵照 PROFIdrive参数通道(DPV1)数据集DS47(非周期参
数通道结构)。
2. 参数请求及参数应答的结构
参数请求包括三部分:请求标题、参数地址及参数值。
表2.参数请求格式
表3.参数应答格式
表4.参数请求及应答描述
表5.在DPV1参数应答中的错误值描述
3. S7-300/400PLC通过PROFIBUS非周期性通讯方式读取驱动器参数。
请注意:PLC读取驱动器参数时必须使用两个功能块SFC58 / SFC59 (程序参见图5)
举例如下:
(1) 使用标志位M10.0及功能SFC58块将写请求(数据集RECORD DB1) (图6)发送至驱动器。
将M10.0设定为数值1启动写请求,当写请求完成后必须将该请求置0,结束该请求。MW108 (RET_VAL)显示错误代码,用于表示功能处理时发生的错误。有关错误的描述参见“系统功能/功能块帮助”。
(2) 之后,使用标志位M10.1及功能SFC59块将读请求发送至驱动器,驱动器返回参数值响应(响应块DB2) (参见图7) 。
将M10.1设定为数值1启动读请求,当读请求完成后必须将该请求置0,结束该请求。MW110 (RET_VAL) 显示包括错误代码。
用于表示功能处理时发生的错误。有关错误的描述参见“系统功能/功能块帮助”。
图5. 读取驱动器参数程序
图6. “写”请求数据块DB1
图7. 驱动器返回参数值数据块DB2
4. S7-300/400PLC通过PROFIBUS非周期性通讯方式写入驱动器参数P1217。
举例如下:
PLC写参数时只需使用SFC58,在本项目的Network 3中发送写请求DB1 (参见图9) 到驱动器; PLC读“写参数”响应时需使用SFC59,在本项目中读取驱动器返回的参数值数据块为DB2 (参见图10) 。程序参见图8。
(1) 将M10.0设定为数值1启动写请求,当写请求完成后必须将该请求置0,结束该请求。MW108 (RET_VAL)显示错误代码,用于表示功能处理时发生的错误。有关所有错误的描述参见“系统功能/功能块帮助”。
(2) 将M10.1设定为数值1启动读请求,当读请求完成后必须将该请求置0,结束该请求。MW110 (RET_VAL) 显示包括错误代码。
用于表示功能处理时发生的错误。有关错误的描述参见“系统功能/功能块帮助”。
图8. 写入驱动器参数程序
图9. 写请求DB1
图10. 驱动器返回的数据块DB2
1. S7通信简介
S7通信是S7系列PLC基于MPI、PROFIBUS、ETHERNET网络的一种优化的通信协议,主要用于S7300/400PLC之间的通信。SIMATIC S7- PN CPU包含一个集成的 PROFINET 接口,该接口除了具有 PROFINET I/O功能,还可以进行基于以太网的S7通信。SIMATIC S7- PN CPU支持无确认数据交换、确认数据交换和单边访问功能。功能块的调用如图1、图2所示。
块 S7-400 | 块 S7-300 | 描述 | 简要描述 |
SFB 8 | FB 8 | 用于发送 | 无确认的快速数据交换,发送数据后无对方接收确认。 |
SFB 9 | FB 9 | 用于接收 | |
SFB 12 | FB 12 | 用于发送 | 确认数据交换,发送数据后有对方接收确认。 |
SFB 13 | FB 13 | 用于接收 | |
SFB 14 | FB 14 | 读数据 | 单边编程读访问。 |
SFB 15 | FB 15 | 写数据 | 单边编程写访问。 |
表1
图1
图2
要通过 S7-PN CPU 的 集成PROFINET 接口实现S7 通信,需要在硬件组态中建立连接。
2. 硬件及网络组态
CPU采用两个315-2PN/DP,使用以太网进行通信。
在STEP7中创建一个新项目,项目名称为PN S7。插入两个S7-300站,在硬件组态中,分别插入CPU 315-2 PN/DP。如图3所示。
图3
新建以太网,打开“NetPro”设置网络参数,选中CPU,在连接列表中建立新的连接。如图4所示。
西门子总代理变频器
图4
然后双击该连接,设置连接属性。在“General”属性中块参数ID = 1,这个参数即是下面程序中的参数“ID”。在SIMATIC 315PN-1中激活“Establish an active connection”,作为Client端,SIMATIC 315PN-2作为Server 端。
3. 软件编程
3.1. 无确认数据交换
SFB/FB 8 "USEND" 向类型为“URCV”的远程伙伴SFB/FB发送数据。执行发送过程而不需要和SFB/FB伙伴进行协调。也就是说,在进行数据传送时不需要伙伴SFB/FB进行确认。
S7-300:在REQ的上升沿处发送数据。在REQ的每个上升沿处传送参数R_ID、
ID和SD_1。在每个作业结束之后,可以给R_ID、ID和SD_1参数分配新数值。
S7-400:在控制输入REQ的上升沿处发送数据。通过参数SD_1到SD_4来指向要
发送的数据,但并非都需要用到所有四个发送参数。
然而,必须确保参数SD_1到SD_4/SD_1和RD_1到RD_4/RD_1 (在相应通讯伙
伴SFB/FB "URCV" 上)所定义的区域在以下几个方面保持*:
? ?编号
? ?长度
? ?数据类型
参数R_ID必须在两个SFB中完全相同。如果传送成功完成,则通过状态参数DONE来表示,此时其逻辑数值为1。
SFB/FB 9 "URCV" 从类型为“USEND”的远程伙伴SFB/FB中异步接收数据,并
把接收到的数据复制到组态的接收区域内。
当程序块准备好接收数据时,EN_R输入处的逻辑值为1。可以通过EN_R=0来取
消一个已激活的作业。
S7-300:在EN_R的每个上升沿处应用参数R_ID、ID和RD_1。在每个作业结束
之后,可以给R_ID、ID和RD_1参数分配新数值。
S7-400:通过参数RD_1到RD_4来指向接收数据区。
必须确保参数RD_i/RD_1和SD_i/SD_1 (在相应通讯伙伴SFB/FB "USEND"
上)所定义的区域在以下几个方面保持*:
?? 编号
? ?长度
? ?数据类型。
通过NDR状态参数逻辑数值为1来指示已经成功完成复制处理过程。参数R_ID必须在两个SFB/FB上完全相同。
打开SIMATIC 315PN-1的OB1,在OB1中依次调用FB8,FB9如图5、图6所示:
图5
程序中的参数说明见表2
参数 | 描述 | 数据类型 | 存储区 | 描述 |
REQ | INPUT | BOOL | I、Q、M、D、L | 上升沿触发工作 |
ID | INPUT | WORD | M、D、常数 | 连接ID |
R_ID | INPUT | DWORD | I、Q、M、D、L、常数 | 连接号,相同连接号的功能块互相对应发送/接收数据 |
DONE | OUTPUT | BOOL | I、Q、M、D、L | 为1时,发送完成 |
ERROR | OUTPUT | BOOL | I、Q、M、D、L | 为1时,有故障发生 |
STATUS | OUTPUT | WORD | I、Q、M、D、L | 状态代码 |
S7-300: SD_1 S7-400: SD_i (1 ≤ i ≤ 4) | IN_OUT | ANY | M、D、T、Z I、Q、M、D、T、C | 发送数据区 |
表2 FB8参数说明
图6
程序中的参数说明见表3
参数 | 参数 | 数据类型 | 存储区 | 描述 |
EN_R | INPUT | BOOL | I、Q、M、D、L、常数 | 为1时,准备接收 |
ID | INPUT | WORD | M、D、常数 | 连接ID |
R_ID | INPUT | DWORD | I、Q、M、D、L、常数 | 连接号,相同连接号的功能块互相对应发送/接收数据 |
NDR | OUTPUT | BOOL | I、Q、M、D、L | 为1时,接收完成 |
ERROR | OUTPUT | BOOL | I、Q、M、D、L | 为1时,有故障发生 |
STATUS | OUTPUT | WORD | I、Q、M、D、L | 状态代码 |
S7-300: RD_1 S7-400: RD_i (1 ≤ i ≤ 4) | IN_OUT | ANY | M、D、T、Z I、Q、M、D、T、Z | 接收数据区 |
表3 FB9参数说明
同样,在SIMATIC 315PN-2的OB1中,调用FB8/FB9。通信双方的“R_ID”均设为0。将SIMATIC 315PN-1的MB100-MB109赋值B#16#02,在SIMATIC 315PN-2中,将FB9的“EN_R”置1,然后在SIMATIC 315PN-1中,将FB8中“REQ”设置上升沿信号,此时SIMATIC 315PN-2的MB110-MB119接收到B#16#02。如图7所示。
图7
同理,将SIMATIC 315PN-2 的MB100-MB109赋值为B#16#03,SIMATIC 315PN-1的MB110-MB119接收到B#16#03。如图8所示。
图8
3.2. 确认数据交换
SFB/FB 12 "BSEND" 向类型为“BRCV”的远程伙伴SFB/FB发送数据。通过这种
类型的数据传送,更多的数据可以在通讯伙伴之间传输,超过任何其它用于组态的
S7连接的通讯SFB/FB所能传输的数据量,通过集成PN口的S7-400和S7-300是65534字节。
要发送的数据区是分段的。各个分段单独发送给通讯伙伴。通讯伙伴在接收到后
一个分段时对此分段进行确认,该过程与相应SFB/FB "BRCV" 的调用无关。在调用块之后,当在控制输入REQ上有上升沿时,发送作业被激活。发送用户存储区中的数据与处理用户程序是异步执行的。
由SD_1起始地址和要发送数据的大长度。可以通过LEN来确定数据域的作业长度。在这种情况下,LEN替换SD_1的长度区域。参数R_ID必须在相应的两个SFB/FB上完全相同。如果在控制输入R处有上升沿,则当前数据传送将被取消。如果传送成功完成,则通过将状态参数DONE的数值设置为1来进行指示。如果状态参数DONE或ERROR的数值为1,则在前一个发送处理结束之前,不能处理新的发送作业。
SFB/FB 13 "BRCV" 接收来自类型为“BSEND”的远程伙伴SFB/FB的数据。在收
到每个数据段后,向伙伴SFB/FB发送一个确认帧,同时更新LEN参数。在块调用完毕,并且在控制输入EN_R数值为1之后,块准备接收数据。可以通过EN_R=0来取消一个已激活的作业。
由RD_1起始地址和接收区的大长度。由LEN指示已接收数据域的长度。
从用户存储区中接收数据与处理用户程序是异步执行的。参数R_ID必须在相应的两个SFB/FB上完全相同。通过状态参数NDR的数值为1来指示所有数据段的无错接收。接收到的数据保持不变,直到通过EN_R=1来重新调用SFB/FB 13为止。如果在数据的异步接收期间调用块,则将引发一个警告,该警告通过STATUS参数输出;如果当控制输入EN_R数值为0时进行调用,则接收将被终止,并且SFB/FB将返回到它的初始状态。
打开SIMATIC 315PN-1的OB1,在OB1中依次调用FB12,FB13如图9、图10所示:
图9
如果没有产生任何错误,则在下一个SFB/FB调用时,通过状态参数DONE来指示,其数值为1。只有在后一个作业完成之后,才能再次激活写作业。远程CPU可以处于RUN或STOP模式。如果正在写入数据时发生访问故障,或如果执行检查过程中出错,则出错和警告信息将通过ERROR和STATUS输出表示。
打开SIMATIC 315PN-1的OB1,在OB1中依次调用FB14,FB15如图13、图14所示:
图13
参数 | 描述 | 数据类型 | 存储区 | 描述 |
REQ | INPUT | BOOL | I、Q、M、D、L | 上升沿触发调用功能块 |
ID | INPUT | WORD | M、D、常数 | 地址参数ID |
ERROR | OUTPUT | BOOL | I、Q、M、D、L | 接收到新数据 |
STATUS | OUTPUT | WORD | I、Q、M、D、L | 故障代码 |
S7-300: ADDR_1 S7-400: ADDR_i (1 ≤ i ≤ 4) | IN_OUT | ANY | M、D I、Q、M、D、 T、C | 从通信对方的数据地址中读取数据 |
S7-300: RD_1 S7-400: RD_i (1 ≤ i ≤ 4) | IN_OUT | ANY | S7-300:M、D S7-400 I、Q、 M、D、T、C | 本站接收数据地址 |
表6 FB14参数说明
图14
参数 | 描述 | 数据类型 | 存储区 | 描述 |
REQ | INPUT | BOOL | I、Q、M、D、L | 上升沿触发调用功能块 |
ID | INPUT | WORD | M、D、常数 | 地址参数 |
DONE | OUTPUT | BOOL | I、Q、M、D、L | 为1时,发送完成 |
ERROR | OUTPUT | BOOL | I、Q、M、D、L | 为1时,有故障发生 |
STATUS | OUTPUT | WORD | I、Q、M、D、L | 故障代码 |
S7-300: ADDR_1 S7-400: ADDR_i (1 ≤ i ≤ 4) | IN_OUT | ANY | M、D I、Q、M、D、 T、C | 通信对方的数据接收地址 |
S7-300: SD_1 S7-400: SD_i (1 ≤ i ≤ 4) | IN_OUT | ANY | S7-300:M、D S7-400 I、Q、 M、D、T、C | 本站发送数据地址 |
表7 FB15参数说明
西门子总代理变频器