[西门子] 西门子 S7-1200 系列十九:干货!通过TCP调试助手仿真测试...

[复制链接]
查看859 | 回复0 | 2024-6-13 19:06:28 | 显示全部楼层 |阅读模式
前面两期内容,我们详细介绍了如何使用西门子 s7-1200 T-block(TCON,TSEND,TRCV)指令实现CPU与CPU之间的TCP通讯。在实际应用中,我们往往需要与第三方设备或者软件(例如:MES)等通讯,西门子s7-1200/1500均支持标准TCP协议,可以作为客户端和服务器与其他设备或软件进行TCP通信,同样是通过T-block指令实现。本期内容将分享使用网络调试助手在PC上模拟实现与s7-1200/1500 建立TCP通讯,实现TCP简单调试;
TCP客户端和服务端的区别
TCP客户端(TCP Client)和TCP服务端(TCP Server)是网络通信中的两个基本角色,它们在网络通信中扮演不同的角色,并具有不同的行为和功能。以下是它们之间的主要区别:
  • 连接的发起者:
    • TCP客户端:是连接的发起者。它会主动向服务器发起连接请求。
    • TCP服务端:等待来自客户端的连接请求。在收到请求后,它会接受连接并开始与客户端通信。
  • 端口号:
    • TCP客户端:通常使用临时端口号,这些端口号由操作系统随机分配。
    • TCP服务端:使用预先定义的端口号(熟知端口号),以便客户端知道连接到哪个端口。例如,HTTP服务通常监听80端口,FTP服务监听21端口。
  • 通信模式:
    • TCP客户端:在需要与服务器通信时发起连接,通信完成后断开连接。
    • TCP服务端:持续监听指定的端口,等待客户端的连接,可以同时与多个客户端通信。
  • 设计和实现:
    • TCP客户端:通常实现较为简单,因为它只需要知道服务器的IP地址和端口号,然后发起连接。
    • TCP服务端:实现较为复杂,需要处理来自客户端的连接请求,管理多个并发连接,以及可能的并发控制。
  • 状态
    • TCP客户端:在通信过程中,客户端通常处于较短的活动状态,一旦通信完成,客户端可能会关闭连接。
    • TCP服务端:通常处于长时间运行的状态,以便不断地接受新的客户端连接。
  • 资源消耗:
    • TCP客户端:通常消耗较少的资源,因为它只需要在发起连接时消耗资源。
    • TCP服务端:可能需要更多的资源,因为它需要持续监听端口,并可能同时处理多个连接。

测试环境说明
硬 件:
  • CPU 1515-2 PN,固件版本V 2.9.4((S7-1200使用一致)(手头没有实物1200,使用1500测试)(IP:192.168.0.80)
软件:
  • TIA Portal V17
  • TCP/UDP Socket调试工具 或 NetAssist(网络调试助手)(IP:192.168.0.64)
需要完成的通信任务:
  • S7-1500作为客户端和调试助手进行数据通信
  • S7-1500作为服务器和调试助手进行数据通信
S7-1500作为客户端和调试助手进行数据通信
s7-1500作客户端程序配置,需要使用TCON,TSEND,TRCV三条指令,配置方式可参见上两篇内容(本处不再赘述),配置结果如下:
  • 调用TCON指令,并配置CONNECT参数,及状态参数;
    vmware_a97WAwK8j3注:客户端,即主动发起连接一侧,因此需要PLC勾选“建立主动连接”
  • 调用TSEND指令,并配置接口参数
    image-20240613164000001注:程序中使用1HZ脉冲发送数据(REQ),实际应用中根据需求发送;
  • 调用TRCV指令,并配置接口参数
    image-20240613164055520注:一般TRCV中EN_R接口时钟置一,随时接收服务端数据,也可根据需求使用;
  • 打开NetAssist软件,配置TCP Server,并点击开始监听;
    image-20240613165042483
  • TCP Server配置完成后,在TIA Portal中触发TCON请求,建立通讯连接;在TSEND激活数据发送,NetAssist中即可接收PLC数据;
    image-20240613165343026注:NetAssit中显示数值以ASCII和16进制两种类型显示;
  • 从NetAssist中发送数据,并监控TRCV中数据存储区的值;
    image-20240613170616205注:细心的朋友可能会发现,发送出去的字节与接收到的字节存在错位,小编没搞懂什么原因,有知道的朋友可以留言;
  • S7-1500作为客户端和调试助手进行数据通信,配置及测试完成;
S7-1500作为服务端和调试助手进行数据通信
s7-1500作服务端程序配置,需要使用TCON,TSEND,TRCV三条指令,配置方式可参见s7-1500作客户端程序配置;只需要将主动连接修改为被动连接即可;
  • 调用TCON指令,并配置CONNECT参数,及状态参数;
    image-20240613171916021注:同一项目中不能有相同的连接ID,因此本处连接ID修改为2,同理TSEND和TRCV同样修改为2;
  • 激活TCON中REQ请求,打开NetAssist并配置TCP 客户端,建立通讯连接如下:
    vmware_nHTldUvrIw
  • 激活TSEND(REQ上升沿触发)发送数据,NetAssist接收区接收数据如下所示:
  • 激活TRCV(EN_R=1)接收收据,并再NetAssist发送数据,结果如下所示:
    image-20240613180726950
总结
通过上面配置,可以看出对于西门子S7-1200 、1500 PLC来讲TCP通讯客户端和服务端差别实际并不大,主要看谁主动(客户端),谁被动(服务端);实际应用中,字节错位的问题影响较大,所以在应用时会约定起始字符和结束字符;
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则