- {{item.name}}
S7-1200 G2 和 S7-1500之间 TCP 通信—S7-1500 主动方
- 0
- 49
TCP 通信示例:
CPU 1 为 CPU 1517-3 PN,其IP 地址为 192.168.0.217;
CPU 2 为 CPU 1214C,其 IP 地址为 192.168.0.214。
通信任务:
CPU 1 作为 TCP 通信客户端,调用“TSEND_C”将 CPU 1实时时钟数据传送到 CPU 2。
CPU 2作为 TCP 通信服务器,调用“TCON”、“TRCV”建立连接并接收 CPU 1发送过来的数据。
同一项目中两个 CPU 之间 TCP 通信与不同项目中两个 CPU 之间通信相比组态步骤更为简单,故本文只介绍不同项目中两个 CPU 之间 TCP 通信。
1. CPU 1编程组态
(1)设备组态
使用 TIA 博途软件创建新项目,并将 CPU 1517-3 PN 作为新设备添加到项目中。在设备视图的巡视窗口中,将 CPU 属性作如下修改:
“PROFINET 接口”属性中为 CPU“添加新子网”,并设置IP 地址(192.168.0.217)和子网掩码(255.255.255.0)。
“系统和时钟存储器”属性中激活“启用时钟存储器字节”,并设置“时钟存储器字节的地址(MB0)”。
“时间”属性中“本地时间”设置为“(UTC + 08:00)北京,重庆,中国香港特别行政区,乌鲁木齐”。
(2)编程
1) 在程序块添加一个数据块“MyTcp”,并在数据块中定义一个数据类型为 DTL变量 “localTime”,该变量用于存储本地 CPU 的实时时钟,建议数据块“MyTcp”为标准访问的数据块。在主程序 OB 1 中调用 “RD_LOC_T” 指令,读取 CPU 本地时间并存储在 “MyTcp”.localTime 变量中。
2) 主程序 OB 1 中调用 “TSEND_C” 指令,建立 TCP 连接。指令管脚介绍如表1-1所示,点击 “TSEND_C” 指令右上角“开始组态”按钮,在巡视窗口中选择“TSEND_C”指令的“属性 ﹥ 组态 ﹥ 连接参数”,并配置 TCP 连接属性,如图 1-1 所示。

图1-1 组态 TCP 连接
①如果通信伙伴并非在同一项目,则选择“未指定”;
②设置伙伴方 IP 地址;
③“连接类型”选择为“TCP”;
④连接ID 在 CPU 范围内必须是唯一的。ID 不得被不同通信类型的其他指令同时使用;
⑤“连接数据”选择“新建”时,系统将自动创建一个连接数据块“PLC_1_Send_DB”;
⑥选择本地“主动建立连接”,此时CPU 1是客户端;
⑦本地 CPU 为客户端时,则需要设置服务器侧端口。
表1-1“ TSEND_C”指令的参数
| 参数 | 声明 | 数据类型 | 说明 |
| REQ | Input | BOOL | 在上升沿启动发送作业。 |
| CONT | Input | BOOL | 控制通信连接: · 0:断开通信连接。 · 1:建立并保持通信连接。 |
| LEN | Input | UDINT | 要通过作业发送的最大字节数,如果“LEN”=0,则将发送参数 DATA 指定的所有数据。 |
| CONNECT | InOut | VARIANT | 指向连接描述结构的指针,图1-1中的⑤。 |
| DATA | InOut | VARIANT | 指向发送区指针,该发送区包含要发送数据的地址和长度。 |
| DONE | Output | BOOL | 状态参数,可具有以下值: · 0:发送作业尚未启动或仍在进行。 · 1:发送作业已成功执行。仅显示一个周期。 |
| BUSY | Output | BOOL | 状态参数,可具有以下值: · 0:发送作业尚未启动或已完成。 · 1:发送作业尚未完成。无法启动新发送作业。 |
| ERROR | Output | BOOL | 状态参数,可具有以下值: · 0:无错误 · 1:建立连接、传送数据或终止连接时出错。 |
| STATUS | Output | WORD | 指令的状态 |
本例中,“连接参数”的组态窗口中通信“伙伴”处选择“未指定”,如果通信双方是同一项目中同一子网下的两个设备,则通信“伙伴”处可以选择指定的通信伙伴。
注意:
TCP 通信时,如果本地 CPU 为客户端则需要指定服务器侧通信端口,本地端口无需指定,此时通信时会自动为客户端分配一个随机端口;
如果本地 CPU 为服务器则需要指定本地通信端口,无需指定伙伴端口和IP地址,如果不指定伙伴端口和IP地址,则不限定连接客户端的IP地址和端口号。
3) 因为“TSEND_C”指令为组合指令,包含了建立连接及发送,连接建立后只需要触发“REQ”管脚,即可将 CPU 本地时钟发送出去。
(3)下载组态和程序
CPU 1 的组态配置与编程已经完成,连接PLC并下载组态和程序,如图1-2所示。

图1-2 下载界面
2. CPU 2 编程组态
(1)设备组态
使用 TIA 博途软件创建新项目,并将 CPU 1214C 作为新设备添加到项目中。在设备视图的巡视窗口中,将 CPU 属性作如下修改:
- “PROFINET 接口”属性中为 CPU“添加新子网”,并设置IP 地址(192.168.0.214)和子网掩码(255.255.255.0)。
- “时间”属性中“本地时间”设置为“(UTC + 08:00)北京,重庆,中国香港特别行政区,乌鲁木齐”。
(2)程序编程
1)在程序块添加一个数据块“MyRcvTcp”,并在数据块中定义一个数据类型为 DTL变量 “RemoteTime”,该变量用于接收 CPU 1 发送过来的实时时钟。
2)主程序 OB 1 中调用 “TCON” 指令,建立 TCP 连接。点击 TCON 指令右上角“开始组态”按钮,在巡视窗口中选择“TCON”指令的“属性 ﹥ 组态 ﹥ 连接参数”,并配置 TCP 连接属性,如图 1-3 所示。

图1-3 组态 TCP 连接
①如果通信伙伴并非在同一项目,则选择“未指定”;
②“连接数据”选择“新建”时,系统将自动创建一个连接数据块“TcpConnection”;
③“连接类型”选择为“TCP”;
④设置伙伴方 IP 地址;
⑤选择伙伴 “主动建立连接”,本地CPU为服务器;
⑥本地 CPU 为服务器时,则需要指定本地端口。
3) 主程序 OB 1 中调用 “TRCV” 指令用于接收 CPU 1 发送过来的实时时钟,如图 1-4 所示。
图1-4 调用 TRCV 指令
(3)下载组态和程序
CPU 2 的组态配置与编程已经完成,下载方式与CPU 1一致。
4. 通信状态测试
将两个 CPU 站点组态配置和程序分别下载到 CPU 1 和 CPU 2 后,即可开始对通信状态进行测试。
连接建立后,就可以通过 “TSEND_C” 发送数据,调用 “TRCV” 接收数据,就可以将 CPU 1实时时钟数据传送到 CPU 2,如图1-5所示。

图1-5 时钟传送
- 评论
-
分享
扫码分享
- 收藏 收藏
- 点赞 点赞
- 纠错 纠错



西门子官方商城


{{item.nickName}}