image-20240326145354710
一 | TCP 协议通讯介绍 |
TCP是一个因特网核心协议。在通过以太网通信的主机上运行的应用程序之间,TCP提供了可靠、有序并能够进行错误校验的消息发送功能。TCP 能保证接收和发送的所有字节内容和顺序完全相同。TCP 协议在主动设备(发起连接的设备)和被动设备(接受连接的设备)之间创建连接。一旦连接建立,任一方均可发起数据传送。
TCP协议是一种"流"协议。这意味着消息中不存在结束标志。所有接收到的消息均被认为是数据流的一部分。
二 | s7-200 smart 与 s7-200 smart之间TCP通讯实例 |
S7 200 SMART与之间的TCP通讯可以通过两边调用**OUC(开放式用户通讯)**指令库中的TCP_CONNECT、TCP_SEND、TCP_RECV、DISCONNECT指令来实现。
image-20240326112029520
- 开放式用户通信库需要使用 50 个字节的 V 存储器。
- 开放式的用户通讯连接资源包括8个主动连接和8个被动连接。
- 只可从主程序或中断例程中调用库函数,但不可同时从这两个程序中调用。
测试环境:
- 软件版本:STEP 7-Micro/WIN SMART V2.8
- SMART CPU固件版本:V2.6
- 通讯硬件:TP电缆(以太网电缆)
硬件配置:
序号 | 名称 | IP | 硬件型号 | 功能说明 |
1 | tcp客户端 | 192.168.0.101 | ST20 V2.06 | 发送VB0~VB3数据至服务器PLC的VB2000~VB20003中 |
2 | tcp服务端 | 192.168.0.102 | ST20 V2.06 | 接收客户端VB0~VB3数据并写入到VB2000~VB2003 |
三 | S7-200 SMART TCP 客户端编程 |
设置本机IP地址,客户端设置为192.168.0.101
image-20240326113749026
建立TCP连接 调用TCP_CONNECT指令建立TCP连接。设置连接伙伴地址为192.168.0.102,远端端口为2001,本地端口为5000,连接标识ID为1。利用SM0.0使能Active,设置为主动连接。
image-20240326132644880
注:在建立连接时需先触发服务器端的建立连接指令,再触发客户端。
参数说明
参数 声明 数据类型 描述 EN IN BOOL 使能输入 Req IN BOOL Req = TRUE,CPU 启动连接操作。
Req = FALSE,则输出显示连接的当前状态。Active IN BOOL TRUE = 主动连接
FALSE = 被动连接ConnID IN WORD CPU 使用连接 ID (ConnID) 为其它指令标识该连接。可能的 ConnID 范围为 0 到65534。 IPaddr1…IPaddr4 IN BYTE 这些是 IP地址的四个八位字节。例如:192.168.0.101对应IPaddr1=192,IPaddr4=101 RemPort IN WORD RemPort 是远程设备上的端口号。 LocPort IN WORD LocPort 是本地设备上的端口号。 Done OUT BOOL 当连接操作完成且没有错误时,指令置位 Done 输出。 Busy OUT BOOL 当连接操作正在进行时,指令置位 Busy 输出。 Error OUT BOOL 当连接操作完成但发生错误时,指令置位 Error 输出。有关详细信息,请参见“开放式用户通信库指令错误代码”。 Status OUT BYTE 如果指令置位 Error 输出,Status 输出会显示错误代码。如果指令置位 Busy 或 Done 输出,Status为零(无错误)。 RemPort:远程设备上的端口号
LocPort:本地 CPU 上的端口号
- 有效端口号范围为 1 到 49151。
- 不能使用端口号 20、21、25、80、102、135、161、162、443 以及 34962 至34964。这些端口具有特定用途。
- 建议采用的端口号范围为 2000 到 5000。
- 对于被动连接,本地端口号必须唯一(不重复)。
- 有效端口号范围为 1 到 49151。
- 建议采用的端口号范围为 2000 到 5000。
- 对于被动连接,CPU 会忽略远程端口号(可以将其设置为零)。
调用发送数据指令TCP_SEND 发送以VB0为起始,数据长度为DataLen长度的数据发送到连接ID为1指定的远程设备。使用1HZ脉冲触发发送请求;