西门子S7-1200与S7-1200之间的TCP通信

 2024-02-22 04:03:09  阅读 0

S7-1200 与 S7-1200 之间的 TCP 通信

S7-1200与S7-1200之间的以太网通讯可以通过TCP协议实现。 所使用的通信指令是通过调用两个 CPU 上的 T 块(、、TCON、、TSEND、TRCV)指令来实现的。 通信方式是双边通信,所以TSEND和TRCV必须成对出现。

硬件和软件要求以及执行的通信任务

硬件:

① S7-

② PC(带以太网卡)

③ TP 电缆(以太网电缆)

软件:

STEP7 V11 或

完成的通讯任务:

① 将PLC_1 的通讯数据区DB3 块中的100 字节数据发送到PLC_2 的接收数据区DB4 块。

② 将PLC_2 的通讯数据区DB3 块中的100 字节数据发送至PLC_1 的接收数据区DB4 块。

通讯编程、连接参数和通讯参数配置

1.打开STEP7 v11软件,新建一个项目

STEP7 v11的“视图”中选择“新建”,创建一个新项目

2.添加硬件并命名PLC

然后进入“视图”,双击“树”下的“添加新”,在对话框中选择所使用的S7-1200 CPU添加到机架中,并命名为PLC_1,如图1所示。

以同样的方式添加通讯伙伴的S7-1200 CPU,并将其命名为PLC_2。

发送数据失败_数据发送未成功_tsend c无法发送数据

图 1. 添加新设备

为了编程方便,请使用CPU属性中定义的时钟位。 定义方法如下:

在“tree”>“PLC_1”>“ ”中,选择CPU,然后在下面的属性窗口中的“”>“和时钟”下,在MB1中定义系统位,在MB0中定义时钟位,如图2 显示。

对于时钟位,我们主要使用M0.3,它是以2Hz的速率在0和1之间切换的位。 可用于自动激活发送任务。

发送数据失败_数据发送未成功_tsend c无法发送数据

图 2. 系统位和时钟位

3. 为通讯端口分配以太网地址

在“View”中,单击代表 CPU 上通信端口的绿色小方块。 界面的属性将显示在下面。 在“ ”下,将IP地址指定为192.168.0.1,子网掩码指定为255.255.255.0,如图3所示。

发送数据失败_数据发送未成功_tsend c无法发送数据

图 3. 分配 IP 地址

以同样的方式,将另一个新设备S7-1200 CPU添加到同一项目中,并为其分配IP地址192.168.0.2

4. 创建CPU之间的逻辑网络连接

在项目树“树”>“&”>“视图”视图中,为两个设备创建连接。 用鼠标点击PLC_1上通讯口的绿色小框,然后向另一个PLC_2上的通讯口拖一条线,松开鼠标,连接建立,如图4所示。

tsend c无法发送数据_发送数据失败_数据发送未成功

图 4. 在两个 CPU 之间建立逻辑连接

在 PLC_1 中调用并配置“TCON”、“TSEND”、“TRCV”通讯指令 1.在 PLC_1 的 OB1 中调用“TCON”通讯指令

① 在第一个CPU中调用发送通讯命令,进入“树形”>“PLC_1”>“ ”>“OB1”主程序,从右侧窗口“”>“”>“OPEN User”命令调用“TCON”创建连接,如图5所示。

发送数据失败_tsend c无法发送数据_数据发送未成功

图 5. 调用“TCON”通讯命令

② 创建DB2并分配连接参数,如图6

发送数据失败_数据发送未成功_tsend c无法发送数据

图 6. 创建连接数据块 DB2()

③ 定义PLC_1的“TCON”连接参数

PLC_1的TCON指令的连接参数需要在该指令下方的属性窗口“>”>“”中设置,如图7所示。

数据发送未成功_tsend c无法发送数据_发送数据失败

图 7. 定义 TCON 连接参数

连接参数说明:

终点

:可以通过单击选择按钮来选择伙伴 CPU:PLC_2

类型

:选择通讯协议为TCP(也可以选择ISO on TCP或UDP协议)

ID

:连接地址ID号。 该ID号将在后续编程中使用。

数据

:创建连接时生成的块。见图2

设置

:选择本地PLC_1作为活动连接

:定义通讯伙伴的端口号为:2000; 如果选择ISO on TCP协议,则需要设置TSAP地址(ASCII形式)。 本地PLC_1可设置为“PLC1”,伙伴PLC_2可设置为“PLC2”。

2.定义PLC_1的“TSEND”发送通讯块接口参数

①在OB1中调用“TSEND”发送100字节数据到PLC2

进入“tree”>“PLC_1”>“ ”>“OB1”主程序,从右侧窗口“”>“”>“OPEN User”调用“TSEND”指令,如图8所示。

发送数据失败_tsend c无法发送数据_数据发送未成功

图 8. 调用 TSEND

②创建并定义PLC_1的发送数据区DB块。

通过“树”>“PLC_1”>“添加新块”创建DB块,选择“数据块”,选择绝对寻址,点击“确定”按钮,定义发送数据区为100的数组字节。 如图9和图10所示。

发送数据失败_数据发送未成功_tsend c无法发送数据

图 9. 创建发送数据区 DB 块

注:对于双边编程通信的 CPU,如果通信数据区使用 DB 块,则 DB 块可以定义为符号寻址或绝对寻址。 对于指针寻址,必须创建绝对寻址的 DB 块。

图 10. 定义发送数据区域为字节类型的数组图

③定义PLC_1的“TSEND”发送通讯块接口参数,如图11所示。

数据发送未成功_发送数据失败_tsend c无法发送数据

图 11. 定义 TSEND 接口参数

参数说明:

输入接口参数:

要求

:= M0.3

//使用2Hz时钟脉冲,在上升沿激活发送任务

ID

: = 1

//创建连接ID

:= 100

//发送数据长度

数据

:= P#DB3.DBX0.0 字节 100

// 当在数据区发送数据并使用指针寻址时,DB 块必须使用绝对寻址。

输出接口参数:

完毕

:= M300.0

//任务执行完成且无错误,该位置为1

忙碌的

:= M300.1

// 该位为1,表示任务未完成,无法激活新任务。

错误

:= M300.2

//通信过程中发生错误,该位置为1

:=MW302

//发生错误时,会显示错位信息编号。

3.在PLC_1的OB1中调用接收指令T_RCV并配置基本参数

为了实现PLC_1接收PLC_2的数据,需要调用PLC_1中的接收指令T_RCV并配置基本参数。

①创建并定义PLC_1的接收数据区DB块。

通过“树”>“PLC_1”>“添加新块”创建DB块,选择“数据块”,选择绝对寻址,点击“确定”按钮,定义发送数据区为100的数组字节。 如图12和图13所示。

数据发送未成功_发送数据失败_tsend c无法发送数据

图 12. 创建接收数据区 DB 块

注:对于双边编程通信的 CPU,如果通信数据区使用 DB 块,则 DB 块可以定义为符号寻址或绝对寻址。 对于指针寻址,必须创建绝对寻址的 DB 块。

数据发送未成功_tsend c无法发送数据_发送数据失败

图13. 定义接收数据区域为byte类型的数组

②在OB1中调用“TRCV”

进入“tree”>“PLC_1”>“OB1”主程序,从右侧窗口“”>“”>“OPEN User”调用“TRCV”命令配置界面参数,如图14 。

数据发送未成功_发送数据失败_tsend c无法发送数据

图14. 调用TRCV指令并配置接口参数

参数说明:

输入接口参数:

EN_R

:= 正确

//准备接收数据

ID

:= 1

//连接号使用TCON的连接参数中的ID号

:= 100

//接收到的数据长度为100字节

数据

:= P#DB4.DBX0.0 字节 100

//接收数据区的地址

输出接口参数:

国家报告

:= M310.0

// 该位为1,接收任务成功完成

忙碌的

:= M310.1

// 该位为1,表示任务未完成,无法激活新任务。

错误

:= M310.2

// 通讯过程中发生错误,该位置置1

:=MW312

//发生错误时,会显示错误信息编号

:=MW314

//实际接收到的数据字节数

注意:LEN 设置为 65535 以接收可变长度数据。

在 PLC_2 中调用并配置“TCON”、“TSEND”、“TRCV”通讯指令 1.在 PLC_2 的 OB1 中调用“TCON”通讯指令

① 在第一个CPU中调用发送通讯命令,进入“树形”>“PLC_2”>“ ”>“OB1”主程序,从右侧窗口“”>“”>“OPEN User”命令调用“TCON”创建连接,如图 15 所示。

发送数据失败_tsend c无法发送数据_数据发送未成功

图 15. 调用“TCON”通讯命令

② 创建DB2并分配连接参数,如图16

发送数据失败_数据发送未成功_tsend c无法发送数据

图 16. 创建连接数据块 DB2()

③ 定义PLC_2的连接参数“TCON”

PLC_1的TCON指令的连接参数需要在该指令下方的属性窗口“>”>“”中设置,如图17所示。

tsend c无法发送数据_发送数据失败_数据发送未成功

图 17. 定义 TCON 连接参数

连接参数说明:

终点

:可以通过单击选择按钮来选择伙伴 CPU:PLC_2

类型

:选择通讯协议为TCP(也可以选择ISO on TCP或UDP协议)

ID

:连接地址ID号。 该ID号将在后续编程中使用。

数据

:创建连接时生成的块。见图2

设置

:选择通讯伙伴 PLC_1 作为活动连接

:定义通讯伙伴的端口号为:2000; 如果选择ISO on TCP协议,则需要设置TSAP地址(ASCII形式)。 本地PLC_2可设置为“PLC2”,伙伴PLC_1可设置为“PLC1”。

2、在PLC_2中调用OB1中的“TRCV”通讯指令

接收PLC_1发送到PLC_2的100字节数据

① 创建并定义接收数据区DB块。

通过“树”>“PLC_2”>“添加新块”创建DB块,选择“数据块”创建DB块,选择符号寻址,点击“确定”按钮,定义接收数据区域作为 100 字节的数组。 如图18和图19所示。

数据发送未成功_发送数据失败_tsend c无法发送数据

图 18. 创建接收数据区 DB 块

数据发送未成功_tsend c无法发送数据_发送数据失败

图 19. 将接收区域定义为 100 字节的数组

② 定义调用“TRCV”的程序

tsend c无法发送数据_数据发送未成功_发送数据失败

图 20. TRCV 模块参数配置

参数配置:

输入接口参数:

EN_R

:= 正确

//准备接收数据

ID

:= 1

// 建立连接并保持连接

:= 100

//接收到的数据长度为100字节

数据

:= P#DB4.DBX0.0 字节 100

//接收数据区,DB块使用符号寻址

输出接口参数:

完毕

:= M310.0

// 任务执行完成且无错误,该位设置为1

忙碌的

:= M310.1

// 该位为1,表示任务未完成,无法激活新任务。

错误

:= M310.2

// 通讯过程中发生错误,该位置置1

:=MW312

//当发生错误时,会显示错误信息编号

:=MW314

//实际接收到的数据字节数

3、在PLC_2中调用并配置“TSEND”通讯指令

PLC_2将向PLC_1发送100字节的数据。 如何创建发送数据块DB3与创建接收数据块的方法相同,不再详细描述。 调用发送命令并配置PLC_2中的块参数。 发送命令和接收命令使用相同的连接,如图 21 所示。

数据发送未成功_发送数据失败_tsend c无法发送数据

图 21. 调用 TSEND 指令并配置块接口参数

参数说明:

输入接口参数:

要求

:= M0.3

//使用2Hz时钟脉冲,在上升沿激活发送任务

ID

:= 1

// 连接ID号,通过TCON创建的连接

:= 100

//发送数据长度为100字节

数据

:= P#DB3.DBX0.0 字节 100

//发送数据区的符号地址

输出接口参数:

完毕

:M300.0

// 任务执行完成且无错误,该位设置为1

忙碌的

:M300.1

// 该位为1,表示任务未完成,无法激活新任务。

错误

:M300.2

// 通讯过程中发生错误,该位置置1

:MW302

//当发生错误时,会显示错误信息编号

下载硬件配置和程序并监控通信结果

下载两个CPU中的所有硬件配置和程序。 从监控表中可以看出,PLC_1的TSEND指令发送数据:“66”、“55”、“44”数据,PLC_2接收数据:“66”、“55”、“44”。 PLC_2发送数据“11”、“22”、“33”,PLC_1接收数据“11”、“22”、“33”,如图22所示。

数据发送未成功_tsend c无法发送数据_发送数据失败

图 22. PLC_1 和 PLC_2 监控表

标签: 通信 指令 接收

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码