湖南 长沙 西门子 6ES7431-7KF10-0AB0 湖南代理商
S7 协议是 SIEMENS S7系列产品之间通讯使用的标准协议,其优点是通信双方无论是在同一 MPI 总线上、同一 PROFIBUS 总线上或同一工业以太网中,都可通过 S7 协议建立通信连接,使用相同的编程方式进行数据交换而与使用何种总线或网络无关。S7 通信按组态方式可分为单边通信和双边通信,单边通信通常应用于以下情况:
本文档简要介绍在STEP7 V5.5环境下,S7-300 集成PN口的CPU基于工业以太网的S7单边通信的组态步骤,用于实现与S7-300/400/1200/1500 CPU之间的S7 通信。
设备 | 数量 | 订货号 | 注释 |
CPU 315-2 PN/DP | 2 | 6ES7317-2EH14-0AB0 | V3.2 |
表 1主要硬件列表
设备 | 数量 | 订货号 | 注释 |
STEP 7 Professional V5.5 | 1 | 6ES7511-1AK00-0AB0 | V1.8 |
CPU 1212C | 1 | 6ES7212-1AE40-0XB0 | V4.2 |
表 2软件环境
2.1 通过如下的步骤配置编程电脑的IP地址:
选择电脑的“ 控制面板 > 网络和共享 > 本地连接>属性”打开 Internet Protocol Version 4(TCP/IPv4),设置PC的 IP 地址,本例中为192.168.0.131。
图1.设置PC地址
2.2 在STEP7 中组态315-2PN/DP CPU,双击X2卡槽,再点击属性按钮以设置IP地址。(具体步骤请参见文档:CPU硬件组态入门)
图2.S7-300硬件组态
图3.PN-IO属性
2.3 设置好IP地址后(本例中为192.168.0.1),点击New按钮添加一条子网Ethernet(1),如果已经存在子网,也可选中该子网直接点OK按钮即可。
图4.添加IP地址和子网
2.4 点击快捷菜单中的Configure Network按钮进入Netpro视图。
图5.点击Configure Network按钮
2.5 在Netpro视图的CPU上点右键选择Insert New Connection添加新连接。
图6.添加新连接
2.6 通讯伙伴选择非指定(Unspecified),通讯类型选择S7 connection。
图7.选择通信伙伴和通信类型
2.7 点击OK后在弹出的属性窗口中勾选单端组态(Establish an active connection),并填写通信伙伴的IP地址,注意Local ID编号,本例保持默认值1。点击详细按钮。
图8.S7连接属性
2.8 在地址详细信息对话框中填写通信伙伴CPU的机架号和槽号,如通信伙伴是S7-300/400 CPU则槽号为2,如通信伙伴是S7-1200/1500 CPU则槽号为1。点击OK。
图9.S7地址详细
2.9 选中CPU,先编译再下载
图10.编译下载
注:如不熟悉下载方法,可参考如下链接:
http://www.ad.siemens.com.cn/productportal/Prods/published\Soft\Soft_3.5\Soft_3.5.html
2.10 下载完成后,可点击“激活连接状态”按钮,查看连接状态,如下图所示,则表示组态的连接已经成功建立。
图11.连接已建立
2.11 如果出现如下图所示的情况,则说明连接没有建立,请检查网线的连接、IP地址等。
图12.连接未建立
3.1 组态连接建立成功后,需要调用通讯功能块PUT和GET进行数据交换。S7-300用于通讯连接的功能块位于标准库中,如下图所示:
图13.PUT GET指令位置
3.2调用PUT指令,本例中本地S7-300 CPU将DB10.DBB0开始的10个字节写入通信伙伴CPU 的DB11.DBB0开始的10个字节中。
图14.PUT指令
参数 | 说明 |
REQ | 上升沿触发,一次上升沿发送一次数据 |
ID | 连接ID(参看图8) |
ADDR_1 | 指向伙伴CPU接收地址区域 |
SD_1 | 指向本地CPU发送地址区域 |
DONE | 发送完成(上升沿) |
ERROR | 有故障发生(上升沿) |
STATUS | 故障代码 |
表 3 PUT管脚说明
3.3调用GET指令,本例中将通信伙伴CPU的DB20.DBB0开始的10个字节读入到本地S7-300 CPU的DB21.DBB0开始的10个字节中。
图15.GET指令
参数 | 说明 |
REQ | 上升沿触发,一次上升沿读取一次数据 |
ID | 连接ID(参看图8 |
ADDR_1 | 指向伙伴CPU发送地址区域 |
RD_1 | 指向本地CPU接收地址区域 |
DONE | 接收完成(上升沿) |
ERROR | 有故障发生(上升沿) |
STATUS | 故障代码 |
表 4 GET管脚说明
3.4 S7-300 CPU做S7通讯的客户端时,伙伴CPU无需组态编程,准备好相应的数据区即可,如本例中的DB10和DB20。如果伙伴方是S7-1200(固件版本V4.0以上)或是S7-1500 CPU,需要在CPU属性的连接机制中勾选"允许来自远程对象的PUT/GET通信访问",如下图所示:
S7单边通信,仅需在客户端侧进行组态编程;服务器侧CPU无需组态编程。
所以在编程组态和建立连接方面,S7-300PN口做客户端,只需要在 S7-300CPU 侧建立单边连接,使用单边编程方式 PUT,GET 指令进行通信。
所完成的通信任务:
S7-300 集成PN口CPU 作为客户端读取 对方S7 CPU中 DB1 的数据到 S7-300 的 DB3 中。
S7-300 集成PN口CPU 作为客户端将本地 DB4 中的数据写到 对方 S7 CPU中 DB2 中。
项目创建环境:TIA V13 SP1
新建项目并完成硬件配置(具体步骤请参见文档:CPU硬件组态入门)
图1. 组态设置子网
网络组态
打开 “Network View(网络视图)” 配置网络,首先点中左上角的“Connections(网络)”图标,选择“S7 Connection(S7连接)”,然后选中300 CPU,右键选择“Add new connection(添加新连接)”如图所示。
图2. 添加连接
然后在“Create new connection(连接)”窗口中,选择“Unspecified”,然后点击“Add”建立 S7 连接,如图2.所示。
图3.建立 S7 连接
“S7_Connection_1(S7_连接_1)”为建立的连接,选中连接,在属性的“General(常规)”条目中填写对方设备的IP地址,如下图4.所示。
图4. 定义连接对方的 IP 地址
图5. 定义通讯双方的 TSAP 号
注意:
通信的对方设备为
图6. 连接 ID 号
注意:此处的ID号,将在编程的PUt,GET块中填写(16进制)
配置完网络连接,编译保存并下载。
图7. 通讯连接状态
指令块编程
在 OB1 中,从“Instruction(指令)” >“Communication(通信)” >“S7 Communication(S7通信)”下,调用Get、Put通信指令,创建接收和发送数据块 DB3 和 DB4,定义成 101 个字节的数组,程序调用如下图8.所示。
图8. 程序调用功能
功能块管脚说明:
CALL “GET” | DB1 | //调用 GET,使用背景DB块:DB1; |
REQ | M10.0+P沿 | //上升沿触发或使用系统时钟 ; |
ID | W#16#0001 | //连接号,要与连接配置中一致,创建连接时的连接号,如图5.所示; |
NDR | M30.0 | //为1时,接收到新数据; |
ERROR | M30.1 | //为1时,有故障发生; |
STATUS | MW32 | //状态代码; |
ADDR_1 | P#DB1.DBX0.0 BYTE 10 | //从通信伙伴数据区读取数据的地址; |
RD_1 | P#DB3.DBX0.0 BYTE 10 | //本地接收数据地址; |
CALL “PUT” | DB2 | //调用 PUT,使用背景DB块:DB2; |
REQ | M10.0+P沿 | //上升沿触发或使用系统时钟 ; |
ID | W#16#0001 | //连接号,要与连接配置中一致,创建连接时的连接号,如图5.所示; |
DONE | M30.2 | // 为1时,发送完成; |
ERROR | M30.3 | // 为1时,有故障发生; |
STATUS | MW34 | // 状态代码; |
ADDR_1 | P#DB2.DBX0.0 BYTE 10 | // 发送到通信伙伴数据区的地址; |
SD_1 | P#DB4.DBX0.0 BYTE 10 | // 本地发送数据区。 |
监控结果
通过在 S7-300 侧编程进行 S7 通讯,实现两个 CPU 之间数据交换,以S7-1200为例,结果如下图。
图9. 监控结果
当通信的对方CPU为S7-1200或S7-1500时,有如下步骤必须设置。
1. S7-1200,S7-1500用于通信存放数据的DB块,必须设置为“非优化”(即默认的勾选取消掉)如图10所示:
图10. S7-1x00的数据块非优化设置
2. S7-1200CPU固件V4.0以上和S7-1500CPU,在CPU属性--->保护--->连接机制中,
勾选“允许从远程伙伴...”,如图11所示,
湖南 长沙 西门子 6ES7431-7KF10-0AB0