S7-1200PLC的TCP/IP通讯

本文详细解释了PLC中的TSEND_C和TRCV_C通讯指令,介绍了PLC作为服务端和客户端的配置方法,并讨论了TCP/IP协议在网络通信中的作用。重点在于设置IP地址、端口和理解OSI七层模型在TCP/IP通讯中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、通讯指令的了解(TSEND_C/TRCV_C)

1. TSEND_C指令

图1 TSEND_C指令

如图是TSEND_C指令,它的作用是建立连接并发送数据。对于其中各个参数的作用如下表:

参数

说明

REQ

在上升沿启动发送作业

CONT

控制通信连接

CONNECT

指向连接描述结构的指针

DATA

指向发送区的指针,该发送区包含要发送数据的地址和长度

DONE

状态参数,可表示发送作业已成功

BUSY

状态参数,可表示发送作业正在进行中

ERROR

状态参数,表示出现错误

STATUS

指令的状态

2. TRCV_C指令

图2 TRCV_C指令

如图是TRCV_C指令,它的作用是通过通信连接接收数据。对于其中各个参数的作用如下表:

参数

说明

EN_R

启用接收功能

CONT

控制通信连接

CONNECT

指向连接描述结构的指针

DATA

指向接收区的指针

DONE

状态参数,可表示是否接收到数据

BUSY

状态参数,可表示作业正在进行中

ERROR

状态参数,表示出现错误

STATUS

指令的状态

RCVD_LEN

实际接收到的数据量

二、PLC作为服务端

       当了解过以上两个指令后,可以对PLC进行TCP/IP通信设置。而在进行TCP/IP通讯时,PLC可以选择作为服务端或客户端进行操作。

       当PLC作为服务端进行通讯时,需要先设置PLC的IP地址以及选择伙伴为客户端,之后还要设置自己的服务端口。在此地方,要注意设置的端口的占用情况,如果这个端口已被占用,则测试时就会出现连接不上的情况。

图3 PLC作为服务端的通讯配置

       当PLC作为服务端配置好以后,仍需要创建一个客户端与其进行连接。在测试时,可以选择用TCP调试助手创建客户端与PLC进行通讯。以下为测试时,连接成功显示:

图4 PLC作为服务端连接测试

三、PLC作为客户端

       PLC除了作为服务端也可以作为客户端,当PLC作为客户端进行通讯时,只需要更改端口配置即可,以下为测试时的端口配置: 

图5 PLC作为客户端通讯配置 

        当PLC作为客户端时,TCP调试助手一端要创建为服务端。以下为PLC作为客户端连接成功测试:

 图6 PLC作为客户端连接测试

四、扩展--TCP/IP通讯解读

       在了解TCP/IP协议之前,大家可以先了解一下OSI七层参考模型。 如果仅仅是为了项目通讯应用,那TCP/IP协议就可以简单的理解为,一个数据发送端通过OSI七层之一的网络层作用,在复杂的网络环境中,为数据要发送到的位置找到一个合适的路径进行传输。更为简单来说,网络层从数据起始地址将数据传输到目标地址。所以,我们在进行TCP//IP通讯时,需要确定好两端的IP和端口,这样才能保证网络层能在复杂的网络环境中,正确的将数据传送到目标地址。

TSEND_C”指令设置并建立 TCP 或 ISO-on-TCP 通信连接。 设置并建立连接后,CPU 会自动保持和监视该连接。 TRCV_C”指令异步执行且具有以下功能: 设置并建立通信连接: "“TRCV_C”设置并建立 TCP 或 ISO-on-TCP 通信连接。 设置并建立连接后,CPU 会自动保持和监视该连接。 参数 CONNECT 中指定的连接描述用于设置通信连接。 要建立连接,参数 CONT 的值必须设置为值“1”。 成功建立连接后,参数 DONE 将被设置为“1”。 CPU 进入 STOP 模式后,将终止现有连接并移除已设置的连接。 要再次设置并建立该连接,需要再次执行“TRCV_C”。 有关可能的通信连接数的信息,请参见 CPU 的技术规格。 通过现有通信连接接收数据: 如果参数 EN_R 的值设置为“1”,则启用数据接收。接收数据(在参数 EN_R 的上升沿)时,参数 CONT 的值必须为 TRUE 才能建立或保持连接。 接收到的数据将输入到接收区中。 根据所用的协议选项,接收区长度通过参数 LEN 指定(如果 LEN <> 0),或者通过参数 DATA 的长度信息来指定(如果 LEN = 0)。 如果在参数 DATA 中使用纯符号值,则 LEN 参数的值必须为“0”。 成功接收数据后,参数 DONE 的信号状态为“1”。 如果数据传送过程中出错,参数 DONE 将设置为“0”。 终止通信连接: 参数 CONT 设置为“0”时,将立即终止通信连接。
小 K 是一个海港的海关工作人员,每天都有许多船只到达海港,船上通常有很多来自不同国家的乘客。 小 K 对这些到达海港的船只非常感兴趣,他按照时间记录下了到达海港的每一艘船只情况;对于第 � i 艘到达的船,他记录了这艘船到达的时间 � � t i ​ (单位:秒),船上的乘客数 � � k i ​ ,以及每名乘客的国籍 � � , 1 , � � , 2 , … , � � , � x i,1 ​ ,x i,2 ​ ,…,x i,k ​ 。 小K统计了 � n 艘船的信息,希望你帮忙计算出以每一艘船到达时间为止的 24 24 小时( 24 24 小时 = 86400 =86400 秒)内所有乘船到达的乘客来自多少个不同的国家。 形式化地讲,你需要计算 � n 条信息。对于输出的第 � i 条信息,你需要统计满足 � � − 86400 < � � ≤ � � t i ​ −86400<t p ​ ≤t i ​ 的船只 � p,在所有的 � � , � x p,j ​ 中,总共有多少个不同的数。 输入格式 第一行输入一个正整数 � n,表示小 K 统计了 � n 艘船的信息。 接下来 � n 行,每行描述一艘船的信息:前两个整数 � � t i ​ 和 � � k i ​ 分别表示这艘船到达海港的时间和船上的乘客数量,接下来 � � k i ​ 个整数 � � , � x i,j ​ 表示船上乘客的国籍。 保证输入的 � � t i ​ 是递增的,单位是秒;表示从小K第一次上班开始计时,这艘船在第 � � t i ​ 秒到达海港。 保证 1 ≤ � ≤ 1 0 5 1≤n≤10 5 , ∑ � � ≤ 3 × 1 0 5 ∑k i ​ ≤3×10 5 , 1 ≤ � � , � ≤ 1 0 5 1≤x i,j ​ ≤10 5 , 1 ≤ � � − 1 ≤ � � ≤ 1 0 9 1≤t i−1 ​ ≤t i ​ ≤10 9 。 其中 ∑ � � ∑k i ​ 表示所有的 � � k i ​ 的和。
07-11
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值