S7 通信是 S7 系列 PLC 基于 MPI、 PROFIBUS、 ETHERNET 网络的一种优化的通信协议, 主要用于 S7-300/400PLC 之间的通信。 S7-200 SMARTPLC V2.0 版本支持 SMART PLC 之间的PUT/GET 通讯, 经过测试发现 S7-300/400 集成的 PN 口与 S7-200 SMART PLC 之间的 PUT/GET通讯也是可以成功的, 但是需要 S7-300/400 侧编程调用 PUT/GET 指令。 S7-300/400 集成 PN口调用的功能块的调用如图 1、 图 2 所示。
块
S7-400
块
S7-300
描述
简要描述
SFB 14
FB 14
读数据
单边编程读访问。
SFB 15
FB 15
写数据
单边编程读访问。
表 1
图 1 调用通信项目功能块
图 2调用通信系统功能块
要通过 S7-300/400 CPU 的集成 PROFINET 接口实现 S7 通信, 需要在硬件组态中建立连
接。
1、 硬件及网络组态
CPU 采用 1 个 314-2PN/DP, 1 个 S7-200 SMART PLC 使用以太网进行通信。
在 STEP7 中创建一个新项目 , 项目名称为 S7-300-SMART。 插入 1 个 S7-300 站, 在硬件组态中插入 CPU 314-2 PN/DP。
1.1 硬件组态
1.1.1 新建项目
首先单击新建项目,名称和存储位置可以自己选择和更改,然后点击确认。如图 3 所示。
图 3新建项目
1.1.2 建立SMATC 300站点。
首先在导航窗口空白处(或者选择项目)右键选择插入对象,再选择SMATC 300站点。如图4 所示
图4 创建 SMATC 300站点
1.1.3硬件配置
双击右窗口硬件进入硬件配置窗口。具体配置如图5-19所示。
注意:硬件组态的硬件参数必须要和实际的硬件参数相同,否则PLC不能正常工作。出现异常报警。
图5 进入硬件配置窗口
图6 硬件配置窗口
图7选择机架
注:(可以右击选择添加或者直接双击进行添加)以下的硬件配置将不予说明。
图8 选择电源
图9 选择CPU
注:由于314 C-2 PN\DP比较特殊,自带两个以太网PN接口,所以组态时会弹出以太网接口属性设置窗口。在IP地址栏,键入IP地址,如果使用路由器,选择使用路由器,键入路由器地址,如果是所以普通交换机选择不使用路由器(普通的交换机没有IP地址),设置完后点击新建,进入子网属性设置。如图10所示。
图10 以太网接口属性设置
直接选择确定。如图11所示。
图11 子网属性设置
以太网接口属性设置完后,可以在子网栏看到Ethernet(1)的子网。如图12所示。
图12
双击CPU硬件属性,设置时间脉冲存储器。选择周期/时间存储器,勾选时间存储器,在存储字节区键入自定义存储区(这个存储区是自定义的,由用户自定义进行设置),如图13-14所示。
图13 CPU硬件属性窗口
图14设置时间脉冲存储器
设置DI\DO输入输出模块I\O地址。双击DI\DO,在地址属性窗口把系统默认勾选去除,在开始栏键入自定义地址。如图15-16所示。
图15 进入设置DI\DO输入输出模块属性窗口
图16设置DI\DO输入输出模块I\O地址
硬件配置完毕后,点击保存并编译,然后会提示是否变更保存到SMATIC300(1)站点,选择是,创建系统数据。然后关闭硬件配置主窗口。如图17-19所示。
图17
图18保存并编译
图19创建系统数据
1.1.4 网络配置
打开“ NetPro” 设置网络参数, 选中 CPU 314-2PN/DP, 在连接列表中建立新的连接。 步
骤如图 20-27 所示。
图 20双击CPU 314-2PN/DP
图 21双击连接
选择CPU 314-2PN/DP,右键选择插入新连接。如图22所示.
图 22 插入新连接
连接伙伴选择(未指定),站点(未指定),连接类型选择S7连接。然后点击应用进入S7连接属性设置窗口。如图23所示。
(英文版选择(选择 Unspecified 站点, 选择通讯协议 S7 connection, 点击 Apply))
图 23插入新连接
本地连接端点选择,勾选建立主动连接,块参数设置,自定义本地ID,默认是1,连接路径栏不用修改,伙伴栏在[Industrial Etherent (工业以太网)]栏键入SMART S7-200 SMART 的IP地址。然后点击地址详细信息,
(英文版选择在弹出的 S7 connection 属性对话框中, 勾选 Establish an active connection, 设置
Partner address:(S7-200 SMART PLC IP 地址))
图 24 S7连接属性设置
本地栏信息和S7子网ID信息不需要修改,只需要在伙伴栏机架/插槽栏,把插槽号改为1。然后点击确认。如图25所示。
(英文版选择点击 Address Details , 再弹出来的对话框设置 Partner 的 Slot 为 1, 如图 8 所示。点击 OK 即可关闭该对话框)
图 25 修改伙伴插槽号
设置完成后能在信息栏看到设置的信息。如图26所示。
图26 配置完成后信息
网络组态创建完成后, 需要编译, 如图 27 所示。
图 27 编译和保存网络组态
网络组态编译无错, 鼠标先点击 CPU 314-2PN/DP , 然后点击下载按钮下载网络组态, 步骤如图 28 所示。
图 28 下载网络组态
2 软件编程
可以通过系统功能块SFB14 "GET"\FB 项目功能块14 "GET", 从远程 CPU 中读取数据。
S7-300: 在 REQ 的上升沿处读取数据。 在 REQ 的每个上升沿处传送参数 ID、 ADDR_1 和 RD_1。
在每个作业结束之后, 可以分配新数值给 ID、 ADDR_1 和 RD_1 参数。S7-400: 在控制输入 REQ 的上升沿处启动 系统数据块SFB。 在此过程中, 将要读取的区域的相关指针(ADDR_i) 发送到伙伴 CPU。 远程伙伴返回此数据。 在下一个 SFB/FB 调用处, 已接收的数据被复制到组态的接收区(RD_i) 中。 必须要参数 ADDR_i 和 RD_i 定义的区域在长度和数据类型方面要相互匹配。
通过状态参数 NDR 数值为 1 来指示此作业已完成。 只有在前一个作业已经完成之后, 才能重新激活读作业。 远程 CPU 可以处于 RUN 或 STOP 工作状态。 如果正在读取数据时发生访问故障, 或如果数据类型检查过程中出错, 则出错和警告信息将通过 ERROR 和 STATUS 输出表示。
通过使用 SFB/FB 1515项目功能块 "PUT", 可以将数据写入到远程 CPU。
S7-300: 在 REQ 的上升沿处发送数据。 在 REQ 的每个上升沿处传送参数 ID、 ADDR_1 和 SD_1。在每个作业结束之后, 可以给 ID、 ADDR_1 和 SD_1 参数分配新数值。
S7-400: 在控制输入 REQ 的上升沿处启动 SFB。 在此过程中, 将指向要写入数据的区域(ADDR_i)的指针和数据(SD_i) 发送到伙伴 CPU。 远程伙伴将所需要的数据保存在随数据一起提供的地址下面, 并返回一个执行确认。 必须要参数 ADDR_i 和 SD_i 定义的区域在编号、 长度和数据类型方面相互匹配。
如果没有产生任何错误, 则在下一个 SFB/FB 调用时, 通过状态参数 DONE 来指示, 其数值为 1。 只有在后一个作业完成之后, 才能再次激活写作业。 远程 CPU 可以处于 RUN 或 STOP模式。 如果正在写入数据时发生访问故障, 或如果执行检查过程中出错, 则出错和警告信息将通过 ERROR 和 STATUS 输出表示。
打开 SIMATIC 314 C 2-PN/DP 的 OB1, 在 OB1 中依次调用项目功能块FB14,项目功能块FB15 如图29、 图 30 所示。
通过SFB/FB14\15块"GET"从远程CPU中读取数据描述:
可以通过SFB/FB 15"GET",从远程CPU中读取数据。
S7-300: 在REQ的上升沿处读取数据。在REQ的每个上升沿处传送参数ID、ADDR_1和RD_1。在每个作业结束之后,可以分配新数值给ID、ADDR_1和RD_1参数。
S7-400: 在控制输入REQ的上升沿处启动SFB。指向要读取区域的相关指针(ADDR_i)将被发送到伙伴CPU。
远程伙伴返回此数据。
在下一个SFB/FB项目功能块调用处,已接收的数据被复制到组态的接收区(RD_i)中。
必须要参数ADDR_i和RD_i定义的区域在长度和数据类型方面要相互匹配。
通过状态参数NDR数值为1来指示此作业已完成。
只有在前一个作业已经完成之后,才能重新激活读作业。
远程CPU可以处于RUN或STOP工作状态。
如果正在读取数据时发生访问故障,或如果数据类型检查过程中出错,则出错和警告信息将通过ERROR和STATUS输出表示。
图29 系统功能块SFB 14
参数
声明
数据类型
存储区
描述
REQ
INPUT
BOOL
I、 Q、 M、 D、 L
控制参数请求,在上升沿激活数据交换。
ID
INPUT
WORD
M、 D、 常数
寻址参数ID(自定义本地ID格式W#16#? ,具体ID看S7连接属性中的块参数信息)
NDR
OUTPUT
BOOL
I、Q、M、D、L
NDR状态参数:
0:作业还未启动或仍然处于激活状态。
1:作业已成功完成。
ERROR
OUTPUT
BOOL
I、 Q、 M、 D、 L
ERROR和STATUS状态参数,出错显示:
ERROR=0
STATUS的数值:0000H:既不是警告也不是出错
不等于0000H:警告,STATUS提供详细信息。ERROR = 1产生一个错误。STATUS给出了关于错误类型的详细信息。关于错误类型的详细信息。
STATUS
OUTPUT
WORD
I、 Q、 M、 D、 L
故障代码
S7-300:
ADDR_1
IN_OUT
ANY
S7-300:M、 D
从S7-200 SMART的数据地址中读取数据; V 区数据对应 存储区。
(指针,指向伙伴CPU中要被读取的区域)。
S7-400:
ADDR_i
(1 ≤i ≤
4)
IN_OUT
ANY
S7-400:I、 Q、 M、 D、
T、 C
从S7-200 SMART的数据地址中读取数据; V 区数据对应数据存储区。(指针,指向伙伴CPU中要被读取的区域)。
S7-300:
RD_1
IN_OUT
ANY
S7-300: M、 D
本站接收数据存储地址
(指针,指向本地CPU中用于输入读取数据的区域)。
S7-400:
RD_i
(1 ≤i ≤
4)
IN_OUT
ANY
S7-400 I、 Q、
M、 D、 T、 C
本站接收数据存储地址
(指针,指向本地CPU中用于输入读取数据的区域)。
注意:如果使用ANY指针访问一个数据块,则必须要指定该数据块(例如:P# DB10.DBX5.0 Byte 10)
只允许使用下列数据类型:BOOL (不允许:位域)、BYTE、CHAR、WORD、INT、DWORD、DINT、REAL、COUNTER、TIMER。
注意:如果使用ANY指针访问一个数据块,则必须要指定该数据块(例如:P# DB10.DBX5.0 Byte 10)。
表2 系统功能块SFB 14 参数说明
通过SFB/FB 15"PUT"向远程CPU写入数据描述:
通过使用SFB/FB 15"PUT",可以将数据写入到远程CPU。
S7-300: 在REQ的上升沿处发送数据。在REQ的每个上升沿处传送参数ID、ADDR_1和SD_1。在每个作业结束之后,可以给ID、ADDR_1和SD_1参数分配新数值。
S7-400: 在控制输入REQ的上升沿处启动SFB。指向即将写入的区域和数据(SD_i)的指针(ADDR_i)将被发送到伙伴CPU。
远程伙伴将所发送的数据保存在随数据一起提供的地址下面,并返回一个执行确认。
必须要参数ADDR_i和SD_i定义的区域在数量、长度和数据类型方面要相互匹配。
如果没有发生错误,则在下一次SFB/FB调用时通过状态参数DONE设为值1来指示。
只有在后一个作业完成之后,才能再次激活写作业。
远程CPU可以处于RUN或STOP模式。
如果正在写入数据时发生访问故障,或如果执行检查过程中出错,则出错和警告信息将通过ERROR和STATUS输出表示。
图 30系统功能块SFB 15
参数
声明
数据类型
存储区
描述
REQ
INPUT
BOOL
I、 Q、 M、 D、 L
控制参数请求,在上升沿激活数据交换。
ID
INPUT
WORD
M、 D、 常数
寻址参数ID(自定义本地ID格式W#16#? ,具体ID看S7连接属性中的块参数信息)。
DONE
OUTPUT
BOOL
I、Q、M、D、L
DONE状态参数:
0:作业还未启动或仍然在运行。
1:作业已经无错地执行完毕。
ERROR
OUTPUT
BOOL
I、 Q、 M、 D、 L
ERROR和STATUS状态参数,出错显示:
ERROR=0
STATUS的数值:0000H:既不是警告也不是出错。
不等于0000H:警告,STATUS提供详细信息。ERROR = 1出错。STATUS提供关于错误类型的详细信息。
STATUS
OUTPUT
WORD
I、 Q、 M、 D、 L
故障代码。
S7-300:
ADDR_1
IN_OUT
ANY
S7-300:M、 D
从本地的数据地址中读取数据发送到S7-200 SMART V 区数据对应存储区。
(指针,指向本地CPU中包含了要发送的数据的区域。)。
S7-400:
ADDR_i
(1 ≤i ≤
4)
IN_OUT
ANY
S7-400:I、 Q、 M、 D、
T、 C
(指针,指向本地CPU中包含了要发送的数据的区域。)
S7-300:
RD_1
IN_OUT
ANY
S7-300: M、 D
本站发送数据存储地址
(指针,指向本地CPU中包含了要发送的数据的区域。)。
S7-400:
RD_i
(1 ≤i ≤
4)
IN_OUT
ANY
S7-400 I、 Q、
M、 D、 T、 C
本站发送数据存储地址
(指针,指向本地CPU中包含了要发送的数据的区域。)。
表3 系统功能块SFB 15参数说明
故障信息
下表包含了所有SFB/FB 14/SFB/FB 15特有的出错信息,这些信息可以通过参数ERROR和STATUS输出表示。
注:用红色标注字体的是SFB/FB 15和SFB/FB 14的不同之处,代表SFB/FB 15参数,以此区分。除标注部分参数不一样外,其它故障信息均一致。。
故障信息
ERROR
STATUS
(十进制)
注解
0
11
警告:
1由于前一个作业还没有结束,所以不能执行新作业。
2正在以较低优先级处理此作业。
0
25
通讯已经启动。作业正在处理。
1
1
通讯故障,例如:
1没有装载连接描述(本地或远程)
2连接被中断(例如:电缆断线、CPU关闭、或CP处于STOP模式)
3没有建立到通讯伙伴的连接
4 FB无法在S7-400 CPU上运行
5此外对于S7-300:超出并行作业/背景的大数目
1
2
来自伙伴设备的否定确认。无法执行该函数。
1
4
接收区指针RD_i( SD_i)中出错,包括数据长度或数据类型。
1
8
在伙伴CPU上发生访问出错。
1
10
不能访问本地用户存储区(例如,访问一个已经删除的数据块)
1
12
当调用SFB时:
1.指定了一个不属于SFB 14 (SFB 15)的背景数据块。
2没有指定任何背景数据块,而是指定了一个共享数据块。3.没有找到任何背景数据块(从PG中装载新背景数据块)。
1
20
S7-400:没有足够的工作存储器可用。如果仍然有足够的总工作存储器可用,则解决方案是压缩工作存储器。
H系统:在更新期间不能进行SFB的次调用,因为正在创建工作存储器中的通讯缓冲区。同样地,在更新期间不能改变工作存储器。S7-300:
超出并行作业/背景的大数目
CPU在RUN模式(要求CPU或CP进行从STOP到RUN的切换)时,背景超载。
当次调用时可以
1
27
CPU中没有用于此功能块的功能代码(仅对于S7-300
表4 SFB/FB 14/SFB/FB 15故障信息
数据一致性:
如果遵守了下面的要点,则能保证数据接收处于一致性状态:
在启动其它作业之前,评估当前正在使用的接收区RD_i /( SD_i)部分。
2.1程序编写
在主窗口导航中双击S7程序,如图31所示。
图31 进入程序编写窗口
双击块,会弹出组织块属性窗口,名称、符号名、符号注释、创建语言可以自定义进行修改。修改后点击确认。如图32-33。
图32 组织块窗口
图33 设置组织块属性
程序编写,Alt+F9,然后键入SFB14,调用系统功能块SFB14,背景数据块名称键入DB14,然后会弹出背景数据块DB14不存在,是否要生成,点击是生成背景数据块DB14。然后键入参数,如图34-37所示。
图34调用系统功能块SFB14
图35 创建背景数据块 DB14
图36 生成背景数据块 DB14
键入参数
图37键入参数
Alt+F9,然后键入SFB14,调用系统功能块SFB15,背景数据块名称键入DB15,然后会弹出背景数据块DB15不存在,是否要生成,点击是生成背景数据块DB15。如图38-41所示。
图38调用系统功能块SFB15
图39 创建背景数据块 DB15
图40 生成背景数据块 DB15
键入参
图41 键入参数
接收发送程序编写,如图42所示。
图42 接收发送程序
下载站点硬件网络组态配置以及程序下载,如图43-46所示。
图43
图44
图45
SMART S7- 200 SMART PLC只需要进行IP地址设置以及编写数据转换程序。如图51-52所示。
200 SMART以太网 IP地址设置,在导航窗口双击系统块,点击通信,在以太网端口参数设置中勾选IP地址数据固定为下面的值,不能通过其它方式更改,然后键入自定义的IP地址。子网掩码不需要修改。然后点击确定。
注:这个IP地址要和S7连接属性设置中的伙伴以太网IP地址保持一致,否则不能进行通信。
图51系统块通信设置
图52数据转换程序