• {{item.name}}
自动化系统 {{item.name}}
{{item2.name}}
更多

S7-1200 G2 和 S7-1500之间 TCP 通信—S7-1500 主动方

star star star star star
0 分
  • 使用操作
  • 综合介绍
  • 基础理论
  • 产品推广
  • S7-1200 G2
发布时间:2026年02月14日
  • 0
  • 49
本章节讲解 S7-1200 G2 和 S7-1500之间 TCP 通信—S7-1500 主动方

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 所示。

图形用户界面, 应用程序

AI 生成的内容可能不正确。

图1-1 组态 TCP 连接

①如果通信伙伴并非在同一项目,则选择“未指定”;

②设置伙伴方 IP 地址;

③“连接类型”选择为“TCP”;

④连接ID 在 CPU 范围内必须是唯一的。ID 不得被不同通信类型的其他指令同时使用;

⑤“连接数据”选择“新建”时,系统将自动创建一个连接数据块“PLC_1_Send_DB”;

⑥选择本地“主动建立连接”,此时CPU 1是客户端;

⑦本地 CPU 为客户端时,则需要设置服务器侧端口。

表1-1“ TSEND_C”指令的参数

参数声明数据类型说明
REQInputBOOL在上升沿启动发送作业。
CONTInputBOOL控制通信连接: · 0:断开通信连接。 · 1:建立并保持通信连接。
LENInputUDINT要通过作业发送的最大字节数,如果“LEN”=0,则将发送参数 DATA 指定的所有数据。
CONNECTInOutVARIANT指向连接描述结构的指针,图1-1中的⑤。
DATAInOutVARIANT指向发送区指针,该发送区包含要发送数据的地址和长度。
DONEOutputBOOL状态参数,可具有以下值: · 0:发送作业尚未启动或仍在进行。 · 1:发送作业已成功执行。仅显示一个周期。
BUSYOutputBOOL状态参数,可具有以下值: · 0:发送作业尚未启动或已完成。 · 1:发送作业尚未完成。无法启动新发送作业。
ERROROutputBOOL状态参数,可具有以下值: · 0:无错误 · 1:建立连接、传送数据或终止连接时出错。
STATUSOutputWORD指令的状态

本例中,“连接参数”的组态窗口中通信“伙伴”处选择“未指定”,如果通信双方是同一项目中同一子网下的两个设备,则通信“伙伴”处可以选择指定的通信伙伴。

注意:

      TCP 通信时,如果本地 CPU 为客户端则需要指定服务器侧通信端口,本地端口无需指定,此时通信时会自动为客户端分配一个随机端口;

      如果本地 CPU 为服务器则需要指定本地通信端口,无需指定伙伴端口和IP地址,如果不指定伙伴端口和IP地址,则不限定连接客户端的IP地址和端口号。

      3) 因为“TSEND_C”指令为组合指令,包含了建立连接及发送,连接建立后只需要触发“REQ”管脚,即可将 CPU 本地时钟发送出去。

(3)下载组态和程序

CPU 1 的组态配置与编程已经完成,连接PLC并下载组态和程序,如图1-2所示。

图形用户界面, 应用程序

AI 生成的内容可能不正确。

图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 所示。

image.png

图1-3 组态 TCP 连接

①如果通信伙伴并非在同一项目,则选择“未指定”;

②“连接数据”选择“新建”时,系统将自动创建一个连接数据块“TcpConnection”;

③“连接类型”选择为“TCP”;

④设置伙伴方 IP 地址;

⑤选择伙伴 “主动建立连接”,本地CPU为服务器;

⑥本地 CPU 为服务器时,则需要指定本地端口。

   3) 主程序 OB 1 中调用 “TRCV” 指令用于接收 CPU 1 发送过来的实时时钟,如图 1-4 所示。图片包含 日程表

AI 生成的内容可能不正确。

图1-4 调用 TRCV 指令

(3)下载组态和程序

CPU 2 的组态配置与编程已经完成,下载方式与CPU 1一致。

4. 通信状态测试

将两个 CPU 站点组态配置和程序分别下载到 CPU 1 和 CPU 2 后,即可开始对通信状态进行测试。

连接建立后,就可以通过 “TSEND_C” 发送数据,调用 “TRCV” 接收数据,就可以将 CPU 1实时时钟数据传送到 CPU 2,如图1-5所示。

图形用户界面, 应用程序

AI 生成的内容可能不正确。

图1-5 时钟传送

  • 评论
更多
  • 分享

    扫码分享

信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。