设为首页
收藏本站
PLC技术网
开启辅助访问
切换到宽版
登录
注册哦
只需一步,快速开始
微信扫码登录
门户
Portal
论坛
BBS
导读
Guide
排行榜
Ranklist
搜索
搜索
本版
文章
帖子
用户
PLC论坛-全力打造可编程控制器专业技术论坛
»
论坛
›
工控技术交流区
›
『国外:三菱/西门子/欧姆龙/松下』
›
西门子 S7-200 SMART 系列十二:实例详解s7-200 smart C ...
返回列表
发新帖
[西门子]
西门子 S7-200 SMART 系列十二:实例详解s7-200 smart CPU与CPU之...
[复制链接]
45168
|
0
|
2024-4-10 08:28:16
|
显示全部楼层
|
阅读模式
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
硬件型号
功能说明
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脉冲触发发送请求;
image-20240326135058370
参数说明
参数
声明
数据类型
描述
EN
IN
BOOL
使能输入
Req
IN
BOOL
Req = TRUE,CPU 启动发送操作。
Req = FALSE,则输出显示发送操作的当前状态。
ConnID
IN
WORD
连接 ID (ConnID) 是此发送操作所用连接的编号。
DataLen
IN
WORD
DataLen 是要发送的字节。
DataPtr
IN
DWORD
DataPtr 是指向待发送数据的指针。可以指向 I、Q、M 或 V 存储器
Done
OUT
BOOL
当发送操作完成且没有错误时,指令置位 Done 输出。
Busy
OUT
BOOL
当发送操作正在进行时,指令置位 Busy 输出。
Error
OUT
BOOL
当发送操作完成但发生错误时,指令置位 Error 输出。
Status
OUT
BYTE
如果指令置位 Error 输出,Status 输出会显示错误代码。如果指令置位 Busy 或 Done 输出,Status 为零(无错误)。
注意事项:
在一个发送操作中最多可以发送 1024 字节的数据,DataLen 发送的字节数范围(1 到 1024)
当发送完成后,指令显示调用一次 TCP_SEND 的 Done 或 Error 状态。此后,TCP_SEND 通过错误代码 24 作出响应)。如果 Req 输入设置为 TRUE,则程序会启动另一个发送操作。
终止通讯连接 可通过DISCONNECT指令终止指定ID的连接。
image-20240326141043985
参数说明
参数
声明
数据类型
描述
EN
IN
BOOL
使能输入
Req
IN
BOOL
如果 Req = TRUE,CPU 启动断开连接操作。
ConnID
IN
WORD
CPU 使用连接 ID (ConnID) 标识要终止的连接(连接过程中定义)。
Done
OUT
BOOL
当断开连接操作完成且没有错误时,指令置位 Done 输出。
Busy
OUT
BOOL
当断开连接操作正在进行时,指令置位 Busy 输出。
Error
OUT
BOOL
当断开连接操作完成但发生错误时,指令置位 Error 输出。
Status
OUT
BYTE
如果指令置位 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长度与客户端长度一致,否则会出现“丢包现象”
同样不要忘了,需要分配库存储器;库存储器分配完成后,下载程序即配置完成;
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
注册哦
x
回复
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册哦
本版积分规则
发表回复
回帖后跳转到最后一页
shenchen115
回复楼主
返回列表
『国外:三菱/西门子/欧姆龙/松下』
『国产:台达/汇川/信捷产品交流区』