当前位置:首页 >> 信息与通信 >>

两个S7站之间进行PROFIBUS通讯


SIMATIC NET 快速入门

1 关于本文件
本文件包括两个 S7 站之间进行 PROFIBUS 通讯例子信息 该通讯采用基于 FDL(Fieldbus Data Link现场数据链接)的 SEND/RECEIVE 服务 关于本例子的概述 本文件包括下面主题
l l l l l

参见第 2 章

详细内容请参见第 3 章及其后章节 系统结构 所需功能块及其通讯结构的介绍 程序结构和代码摘录 操作员控制及监视 故障检测

1

SIMATIC NET 快速入门

2 例子概述
系统示意图
主站 S7-400 站 从站 S7-400 站

MPI 口

Profibus 局域网

MPI 口

装有 STEP 7 的 PG/PC

例子功能性检查 根据 S7 主站的变量表 可以检查例子是否正确运行 在 STEP 7 的项目文件夹中 有该变量表 发送和接收的数据可连续改变其值 (参见操作员控制及监视)

2

SIMATIC NET 快速入门

功能框图 下图示出了例子的运行过程
S7-400 主站 S7-400 从站

为发送准备数据 发送数据 2 字节 接收数据 并将其 复制到发送缓冲区

发送数据 保存接收 的数据

2 字节

数据交换 通讯中涉及的各站周期性地交换 2 字节数据 主站/从站 主站开始建立链接并发送新数据 从站接收完数据后向主站回送 程序
主站 从站

从站向主站返回接收到的数据

返回数据是指

3

SIMATIC NET 快速入门

主站说明 ? 每 个 周 期 调 用 ”AG_SEND” 功 ?
能 用于发送 2 字节数据 发 送 数 据 的 同 时 调 用 AG_RECV 功能 用于从 CP 获取接收的数据 接收完成后对 数据进行存储 一旦 RECEIVE 正确执行完后 发送的数据加 1 并再次开始发 送/接收循环

从站说明 ? 每个周期触发一次 AG_RECV 功能块 ? 如果 AG_RECV 信号受到新数据 则调
用 送 AG_SEND 功能块将所受到的数据回

?

操作员控制及监视 使用提供的变量表可以实现一个操作员控制和监视功能 必须满足下列条件
l l l

才能使用

监视和更改变量

程序

必须与 CPU 在线联接 监测变量 必须被激活 要更改的值必须被标为有效

如果满足上面条件 可以通过观察发送及接收数据的变化 来检测例子程序是否 正确运行

4

SIMATIC NET 快速入门

3 系统结构
本章列出了运行例子所需的硬件和软件 提示 本文件适用范围 本文件内容适用于规定的配置假定情况 CP 443-5 Basic/Ext.作为主站和从站 然而本文件也可适用于两个 SIMATIC S7 站之间的所有 SEND/RECEIVE 通讯的例 子

总体结构
总线结构 通讯协议 平台 通讯处理器 功能 PROFIBUS Profibys (SDA) SIMATIC S7 CP 443-5 Basic/Ext. SEND/RECEIVE

本例子采用 PROFIBUS 协议 采用该协议和 SEND/RECEIVE 服务 可在两个 SIMATIC S7 站之间进行数据交换 CP 443-5 Basic/Ext.用作通讯处理器

主站所需硬件
插槽 1 3 4 模块 PC 407 10A CPU 414-1 CP 443-5 Basic 订货号 6ES7 407-0KR00-0AA0 6ES7 414-1XG02-0AB0 6GK7 443-5FX00-0EX0

从站所需硬件
插槽 1 3 4 模块 PS 307 10A CPU 414-1 CP 443-5 Basic 订货号 6ES7 407-0KR00-0AA0 6ES7 414-1XG02-0AB0 6GK7 443-5FX00-0EX0

5

SIMATIC NET 快速入门

注意 例子中所涉及的硬件应确保安全运行 如果使用不同的配置 注意 使用不同的 CPU 如果所用 CPU 与本例中的不同 注意 使用不同的 CP 如果本例子中使用不同的 CP 请阅读 Change_CP”(更换 CP)文件 请阅读 Change_CPU”(更换 CPU)文件 必须做如下修改(参见下文)

所需电缆及其它硬件 MPI 电缆 PROFIBUS 电缆 两个 PROFIBUS 连接器 PG 或 PC 带 MPI 端口

所需软件 要求使用下列软件以运行例子
l l l

操作系统为 Microsoft Windows 95 或 Windows NT 4.0 STEP 7 V4.02 见 注意 SP 1 NCM S7 PROFIBUS V4.02

6

SIMATIC NET 快速入门

4 所需功能块及其通讯结构
本章包括下列主题
l l

例子如何运行 通讯所需功能块及其通讯结构

4.1

例子如何运行

数据交换 通讯中涉及的各站周期性地交换 2 字节数据

主站用户程序的顺序执行
l

SEND 在每个循环周期中向从站发送 2 字节数据 RECEIVE 每个循环周期触发一次接收功能 根据返回值 向接收缓冲区写入接收数据 数据递增: 将要写入的数据值以增量 1 递增 读/写周期再次启动

l

l

从站上用户程序的顺序
l

SEND 每个循环周期触发一次接收功能 发缓冲区中 当接收到新数据时 将其输入到公共的收 /

l

RECEIVE 当接收到新数据时触发发送功能

7

SIMATIC NET 快速入门

4.2

通讯所需功能块及其通讯结构
本章进一步详细介绍 SEND/RECEIVE 通讯所需的 AG_SEND 和 AG_RECV 功能 块

4.2.1

AG_SEND 功能块

FC 5

功能的块用途 AG_SEND 功能将数据从 PLC 指定的发送缓冲区传送至通讯方 发送缓冲区的指 针可以指向一个过程映像区 一个位存储器区或一个数据块 要发送的数据长度 不能超过 240 字节 在组态期间 可以指定通讯方的地址和 TSAP AS_SEND 功能发送数据 功能参数的详细描述请参见第 5 章 同时分配一个连接 ID 号 通过它

4.2.2

AG_RECV 功能块

FC 6

功能的块用途 AG_RECV 功能将从通讯方接收的数据传送到 PLC 指定的发送缓冲区 接收缓冲 区可以是一个过程映像区 一个位存储器区或一个数据块 接收缓冲区应有足够 的长度 在组态期间 可以指定通讯方的地址和 TSAP AS_RECV 功能接收数据 功能参数的详细描述请参见第 5 章 同时分配一个连接 ID 号 通过它

8

SIMATIC NET 快速入门

5 程序结构和程序摘录
本章介绍主站和从站的程序结构 给出并说明部分程序

5.1

主站的程序结构
程序循环开始

调用 AG_SEND

AG_SEND 是否发生错 误 存储错误号

调用 AG_RECV

AG_RECV 是否发生错 误

AG_SEND 是否完成

变量值加 1

存储错误号

9

SIMATIC NET 快速入门

5.2
5.2.1

主站程序摘录
主站 符号

收/发例子所用的符号表

使用 使用符号使代码更易读 例如 代码中用 程序中用符号名代替地址 MW 50 RECEIVE_DATA”代替

5.2.2
目的

主站

OB 1

OB 1 负责用户程序的循环执行 在示例程序中 OB 1 负责调用收/发功能(AG_SEND 和 AG_RECV)

10

SIMATIC NET 快速入门

调用 在 CPU 每个循环周期中调用 OB1

名称 OB 1

程序

说明 OB1 在 每 个 周 期 中 调 用 MY_SEND_CALL MY_RECEIVE_CALL (调用 AG_RECV) ( 调 用 AG_SEND) 和

5.2.3
目的

主站

AG_SEND

使用收/发功能的 AG_SEND

向通讯方发送 2 字节数据

调用 在 OB 1 中调用

名称 MY_SEND_CALL (FC 40)

11

SIMATIC NET 快速入门

程序

AG_SEND 参数的含义
l

ACT 执行块的沿信号 ID 收/发连接的识别符 LADDR 本地 CP 的地址(在 硬件配置 中进行分配 可以用 Netpro 读出) SEND 传送数值的本地数据区地址 LEN 发送数据区的长度 DONE 指示功能无故障执行完毕 ERROR 指示是否发生错误 STATUS 提供执行期间状态或错误的详细信息

l

l

l

l

l

l

l

12

SIMATIC NET 快速入门

说明 CALL AG_SEND 根据 SEND_ERROR 位 存储状态字或用条件 调用收/发功能的 发送数据 块结束指令(BEC)退出该功能

5.2.4
目的

主站

AG_RECV

使用收/发功能的 AG_RECV 由通讯方发送 2 字节数据

调用 在 OB 1 中调用

名称 MY_RECEIVE_CALL (FC 41)

程序

13

SIMATIC NET 快速入门

AG_RECV 参数的含义
l

ID 收/发连接的识别符 LADDR 本地 CP 的地址(在 硬件配置 中进行分配 可以用 Netpro 读出) RECV 传送数值的本地数据区地址 NDR 指示功能无故障执行完毕 ERROR 指示是否发生错误 STATUS 提供执行期间状态或错误的详细信息 LEN 发送的数据区长度

l

l

l

l

l

l

说明 CALL AG_RECV 位 存储状态值 否则接 调用收/发功能的 接收数据 根据 RECV_ERROR 受接受数据长度 如果接受正确 数据字加 1

14

SIMATIC NET 快速入门

5.3

从站的程序结构

程序循环开始

调用 AG_RECV

AG_RECV 是否发生错 误 存储错误号

接收完成

发送位复位

用发送位调 用 AG_SEND

AG_SEND 是否发生错

存储错误号

15

SIMATIC NET 快速入门

5.4
5.4.1

从站程序摘录
从站 符号

收/发例子所用的符号表

使用 使用符号使代码更易读 例如 代码中用 程序中用符号名代替地址 MW 42 SEND_STATUS”代替

5.4.2
目的

从站

OB 1

OB 1 负责用户程序的循环执行 在示例程序中 OB 1 负责调用收/发功能(AG_SEND 和 AG_RECV)

16

SIMATIC NET 快速入门

调用 在 CPU 每个循环周期中调用 OB1

名称 OB 1

程序

说明 OB1 在 每 个 周 期 中 调 用 MY_SEND_CALL MY_RECEIVE_CALL (调用 AG_RECV) ( 调 用 AG_SEND) 和

5.4.3
目的

从站

AG_SEND

使用收/发功能的 AG_SEND

向通讯方发送 2 字节数据

调用 在 OB 1 中调用

名称 MY_SEND_CALL (FC 40)

程序

17

SIMATIC NET 快速入门

AG_SEND 参数的含义
l

ACT 执行块的沿信号 ID 收/发连接的识别符 LADDR 本地 CP 的地址(在 硬件配置 中进行分配 可以用 Netpro 读出) SEND 传送数值的本地数据区地址 LEN 发送数据区的长度 DONE 指示功能无故障执行完毕 ERROR 指示是否发生错误 STATUS 提供执行期间状态或错误的详细信息

l

l

l

l

l

l

l

18

SIMATIC NET 快速入门

说明 CALL AG_SEND 根据 SEND_ERROR 位 存储状态字或用条件 调用收/发功能的 发送数据 块结束指令(BEC)退出该功能

5.4.4
目的

从站

DP_SEND

使用收/发功能的 AG_RECV 由通讯方发送 2 字节数据

调用 在 OB 1 中调用

名称 MY_RECEIVE_CALL (FC 41)

程序

19

SIMATIC NET 快速入门

AG_RECV 参数的含义
l

ID 收/发连接的识别符 LADDR 本地 CP 的地址(在 硬件配置 中进行分配 可以用 Netpro 读出) RECV 传送数值的本地数据区地址 NDR 指示功能无故障执行完毕 ERROR 指示是否发生错误 STATUS 提供执行期间状态或错误的详细信息 LEN 发送的数据区长度

l

l

l

l

l

l

说明 CALL AG_RECV 位 存储状态值 否则接 调用收/发功能的 接收数据 根据 RECV_ERROR 受接受数据长度 如果接受正确 数据字加 1

20

SIMATIC NET 快速入门

21

SIMATIC NET 快速入门

6 操作员控制和监视
本章包括下列主题
l

操作员控制和监视

6.1

操作员控制和监视
注意 如果在操作员控制和监视期间发生故障 请阅读第 7 章故障检测

监视 用例子提供的变量表可以监视功能
步骤 1 2 3 4 5 6

下表说明了如何使用变量表

说 明 将连接到从站 MPI 口的 MPI 电缆断开 将这端电缆插入到主站 CPU 的 MPI 口 选择主站 SIMATIC Manager项目窗口的 Blocks 双击 VAT 1 在 监视及更改变量 程序中 选择 PLC -> Connect To -> Configured CPU 要监视定义的变量 选择 Variable -> Monitor

注意 当 时 监视和更改变量 程序的状态栏中显示 您可以看到持续改变的进程条 Online 时 监视功能被激活 此

22

SIMATIC NET 快速入门

完成上述步骤后

可以看到下面的变量表

SEND 参数 在上部可以看到 DP 功能 AG_SEND 的参数 如果该例子可以正确运行 参数 状态 RECV 参数 在 RECV 部分 您可以看到除 AG_RECV 功能外 参数 RECV_NDR 其他均相同 将持续从 0 -> 1 改变其状 如果该例子可以正确运行 态 如果错误输出位置位 如果例子正确运行 由于变量表的循序更新 如果例子正确 读 写数据可能不同 数据将持续更改 SEND_DONE 将持续从 0 -> 1 改变其

可以在

last error in program 中看到块的状态信息

23

SIMATIC NET 快速入门

注意 在相应手册和 NCM 在线帮助中有 AG_SEND 和 AG_RECV 参数值含义的详细解 释 例如 START -> Simatic -> NCM S7 PROFIBUS -> Help Functions (FC) -> English 注意 当写和读和数据值不断增加时 切记 变量表必须在线且监视必须被激活 数值才能被更新 说明例子正确运行

操作员控制和监视 可以使用例子所提供的变量表调用功能 注意 调用功能时 变量表必须 在线 并且必须激活 监视 以便更新数值 上面已经介绍了如果启动和激活功能

下表所示如果更改发送到从站或从从站读取的数值
步骤 1 2 说 明 在变量表的 MW 52 SEND_DATA 一行的最后一列输入 0 至 32767 之间的数值 选择 Variable -> Activate Modify Value”

退出操作员控制及监视
步骤 1 2 说 明 在 监视和修改变量 程序中选择 Table 在对话框中选择 No”

->

Exit

24

SIMATIC NET 快速入门

7 故障检测
本章将在您安装和启动例子遇到困难时 下载硬件配置 联接或运行功能块时故障 请直接到 解决办法 中找到相应办法 为您提供帮助

进行下面检查 如果对某一问题回答为否定时
步骤 1 2

3 4

说 明 MPI 电缆同时与 PG/PC 和 S7 CPU 相联了吗 在 Set PG/PC Interface 设置 PG/PC 接口 程序中 分配给 Access point of application S7 ONLINE STEP 7 的接口参数设置是否正确 例 如 如果使用 PG-MPI 端口是否是 MPI_ISA on board MPI 项目中的硬件配置 离线配置 与实际配置 在线配置 在各方面是否 一致 CPU 已经复位了吗

解决办法 当对上述问题之一的回答为否定时 当对第 1 个问题回答是否定时 无法建立与 S7 CPU 的联接
步骤 1 2

通过下述步骤可解决问题

不能下载至 CPU

说 明 将 MPI 电缆的一端插入 PG 或 PC 的 MPI 端口 将 MPI 电缆的另一端插入 S7 CPU 的 MPI 端口

当对第 2 个问题回答为否定时 无法建立与 S7 CPU 的联接
步骤 1 2

不能下载至 CPU

3

说 明 启动 设定 PG/PC 接口 Set PG/PC Interface 程序 Start -> Simatic -> STEP 7 -> Set PG/PC Interface 在 Interface parameter assignment used 中设置准备用于 MPI 端口的模 块 例如 如果正在使用 PG_MPI 端口应为 MPI_ISA on board MPI 点击 OK 键

25

SIMATIC NET 快速入门

当对第 3 个问题回答否定时
步骤 1 说 明 使实际硬件配置与项目的配置相符 或当准备采用与例子不同的 CPU 或 CP 时 阅读本文件 Change_CPU 或 Change_CP 部分

当对第 4 个问题回答为否定时
步骤 1 说 复位 CPU 明

变量表

写入和读出的数据无法改变 进行下列检查 当回答为否定时
步骤 1 2 3



解决办法

中直接找到相应步骤

说 明 主站和从站端是否已联接了 Profibus 电缆 在变量表的状态条中能否看到 Online”? 在状态栏中是否可以看到一个连接改变的进展条

解决办法 当对上述问题之一的回答为否定时 当对第 1 个问题回答为否定时 在站点之间无法建立联接
步骤 1 2

通过下列步骤解决问题

数据交换无法进行

说 明 将 PROFIBUS 电缆的一端与主站中 CP 口相联 从站重复第一步

当对第 2 个问题回答为否定时 S7 CPU 和监视间没有建立连接
步骤 1 说 明 在 Monitoring and Modify Variables 程序中选择 PLC -> Connect To ->”Configured CPU”

26

SIMATIC NET 快速入门

当对第 3 个问题回答为否定时 监测功能未被激活
步骤 1 说 明 在 Monitoring and Modify Variables 程序中选择 Variable -> Monitor”

变量表

操作员控制无法工作 进行下列检查 当回答为否定时
步骤 1 2



解决办法

中直接找到相应步骤
Variable -> Modify Value

说 明 在 监视和修改变量 程序中是否激活了 Valid 在存储字 52(MW 52)中输入 0 至 32767

解决办法 当对上述问题之一的回答为否定时 当对第 1 个问题回答为否定时
步骤 1 在 说 明 监视和修改变量 程序中选择 Variable -> Modify Value Valid

通过下列步骤解决问题

当对第 2 个问题回答为否定时
步骤 1 在变量表的 MW 52 之间的数值 说 明 SEND_DATA 一行的最后一列输入 0 至 32767

注意 如果无法在本章中找到解决办法 重新安装例子程序

27


相关文章:
s7-300和s7-400之间PROFIBUS-DP通讯
s7-300和s7-400之间PROFIBUS-DP通讯_信息与通信_工程科技_专业资料。PROFIBUS-DP 连接智能从站实例:主站 S7-400 连接从站 S7-300 [3156] 本例以 S7-400 为...
西门子300和多台200的Profibus DP通信实例_图文
2. S7-300 与 S7-200 通过 EM277 进行 PROFIBUS DP 通讯, 需要在 STEP7 中进行 S7-300 站 组态,在 S7-200 系统中不需要对通讯进行组态和编程,只需要...
S7-300之间通信
S7-300 与 S7-300 之间的 PRFIBUS-DP 主主通讯 2014-4-28 08:04| 发布...连接两个不同的 PROFIBUS 网络进行通讯,2 个网络的通讯速率,站 地址可以不同...
S7-300_CPU之间的PROFIBUS主从通讯配置
S7-300_CPU之间PROFIBUS主从通讯配置_计算机硬件及网络_IT/计算机_专业资料。关于两个 CPU315-2DP 之间作主从(PROFIBUS-DP)的组态 1. 先对从站进行组态: 打开...
S7-300与S7-300之间使用CP342-5做从站的PROFIBUS-DP通讯
这里我们使用 CP342-5 做从站和 S7-300 进行 DPROFIBUS-DP 通讯。 分别建立两个 300 的站点: 下面我们开始对 CP 342-5 智能从站进行硬件组态: 在硬件组态...
s7-300之间的DP通讯
s7-300之间的DP通讯_信息与通信_工程科技_专业资料。s7-300之间的DP通讯编程 实现Profibus 主从站之间的 MS 通讯通过图解,说明 2 个 CPU 之间通过 Profibus 实现...
S7-300如何通过GSD文件实现PROFIBUS DP主从通讯
S7-300如何通过GSD文件实现PROFIBUS DP主从通讯_计算机软件及应用_IT/计算机_专业...新建的 PROFIBUS 网络,为其分配 PROFIBUS 地址,该地址 要与前文的从站地址...
s7300PLC组态PROFIBUS从站一例
s7300PLC组态PROFIBUS从站一例_信息与通信_工程科技_专业资料。s7 300plc 组态PROFIBUS从站,具体介绍组态方法。s7300PLC 组态 PROFIBUS 从站一例 (2010-09-25 21...
如何实现S7-300与S7-200的EM277之间的PROFIBUS DP通讯...
如何实现S7-300与S7-200的EM277之间PROFIBUS DP通讯链接_信息与通信_工程科技...插入一个 S7-300 的站: 选中 STEP7 的硬件组态窗口中的菜单 Option 件,安装...
s7-300的profibus-dp通讯
器加上 CBP2 通讯板(Profibus 通讯模块)后作为从站,可带这样的从站 32 个...S7-300 硬件组态 在 STEP 7 软件中创建一个项目 , 再进行硬件组态该项目 ,...
更多相关标签: