新闻
6SL3220-3YE36-0AF0现货西门子代理
2024-05-15 03:23  浏览:8
6SL3220-3YE36-0AF0现货西门子代理西门子 S7-200 SMART 系列十二:实例详解s7-200 smart CPU与CPU之间 TCP通信



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.8SMART CPU固件版本:V2.6通讯硬件:TP电缆(以太网电缆)

硬件配置:

序号名称IP硬件型号功能说明1tcp客户端192.168.0.101ST20 V2.06发送VB0~VB3数据至服务器PLC的VB2000~VB20003中2tcp服务端192.168.0.102ST20 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

注:在建立连接时需先触发服务器端的建立连接指令,再触发客户端。

参数说明

参数声明数据类型描述ENINBOOL使能输入ReqINBOOLReq = TRUE,CPU 启动连接操作。
Req = FALSE,则输出显示连接的当前状态。ActiveINBOOLTRUE  = 主动连接
FALSE = 被动连接ConnIDINWORDCPU  使用连接 ID (ConnID) 为其它指令标识该连接。可能的 ConnID 范围为 0 到 65534。IPaddr1…IPaddr4INBYTE这些是  IP 地址的四个八位字节。例如:192.168.0.101对应IPaddr1=192,IPaddr4=101RemPortINWORDRemPort  是远程设备上的端口号。LocPortINWORDLocPort 是本地设备上的端口号。DoneOUTBOOL当连接操作完成且没有错误时,指令置位  Done 输出。BusyOUTBOOL当连接操作正在进行时,指令置位  Busy 输出。ErrorOUTBOOL当连接操作完成但发生错误时,指令置位 Error  输出。有关详细信息,请参见“开放式用户通信库指令错误代码”。StatusOUTBYTE如果指令置位 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脉冲触发发送请求;

image-20240326135058370

参数说明

参数声明数据类型描述ENINBOOL使能输入ReqINBOOLReq  = TRUE,CPU 启动发送操作。
Req = FALSE,则输出显示发送操作的当前状态。ConnIDINWORD连接  ID (ConnID) 是此发送操作所用连接的编号。DataLenINWORDDataLen  是要发送的字节。DataPtrINDWORDDataPtr  是指向待发送数据的指针。可以指向 I、Q、M 或 V 存储器DoneOUTBOOL当发送操作完成且没有错误时,指令置位  Done 输出。BusyOUTBOOL当发送操作正在进行时,指令置位  Busy 输出。ErrorOUTBOOL当发送操作完成但发生错误时,指令置位  Error 输出。StatusOUTBYTE如果指令置位  Error 输出,Status 输出会显示错误代码。如果指令置位 Busy 或 Done 输出,Status 为零(无错误)。

注意事项:

在一个发送操作中多可以发送 1024 字节的数据,DataLen 发送的字节数范围(1 到 1024)

当发送完成后,指令显示调用一次 TCP_SEND 的 Done 或 Error 状态。此后,TCP_SEND 通过错误代码 24 作出响应)。如果 Req 输入设置为 TRUE,则程序会启动另一个发送操作。

终止通讯连接 可通过DISCONNECT指令终止指定ID的连接。

image-20240326141043985

参数说明

参数声明数据类型描述ENINBOOL使能输入ReqINBOOL如果  Req = TRUE,CPU 启动断开连接操作。ConnIDINWORDCPU  使用连接 ID (ConnID) 标识要终止的连接(连接过程中定义)。DoneOUTBOOL当断开连接操作完成且没有错误时,指令置位  Done 输出。BusyOUTBOOL当断开连接操作正在进行时,指令置位  Busy 输出。ErrorOUTBOOL当断开连接操作完成但发生错误时,指令置位  Error 输出。StatusOUTBYTE如果指令置位  Error 输出,Status 输出会显示错误代码。如果指令置位 Busy 或 Done 输出,Status 为零(无错误)。

分配库存储区 开放式用户通信库需要使用 50 个字节的 V 存储器,需手动分配 ,否则编译会报错;完成后,下载程序,TCP 客户端配置完成;

image-20240326141549207四S7-200 SMART TCP 服务端编程

设置本机IP地址,客户端设置为192.168.0.102

image-20240326142014693

建立TCP连接 调用TCP_CONNECT指令建立TCP连接。设置连接伙伴地址为192.168.0.101,**远端端口为5000(对应客户端本地端口),本地端口为2001(对应客户端远程端口)**,连接标识ID为1。利用SM0.0常闭点使能Active,设置为被动连接。

image-20240326142215117

接收数据 调用TCP_RECV指令接收指定ID连接的的数据。接收的缓冲区长度为MaxLen,数据接收缓冲区以VB2000为起始。

image-20240326142320645

注:VW1000长度与客户端长度一致,否则会出现“丢包现象”

同样不要忘了,需要分配库存储器;库存储器分配完成后,下载程序即配置完成;




相关新闻
联系方式
公司:湖南西控自动化设备有限公司
姓名:徐嘉泉(先生)
职位:经理
手机:17838383235
地区:湖南-长沙
地址:中国(湖南)自由贸易试验区长沙片区开元东路1306号开阳智能制造产业园(一期)4#栋301
QQ:3305575995
微信:17838383235
17838383235 请卖家联系我
拨打电话
微信咨询
请卖家联系我