『7x24小时有问必答』
本篇我们来讲解如何让西门子S7-1200 PLC与200SMART PLC通过ISO-on-TCP协议实现数据交换。这种通信方式非常实用,尤其适用于不同系列PLC之间需要进行可靠数据交互的场景。我会一步步带你完成从硬件配置到程序调试的全过程。

首先,我们要在S7-1200这一侧进行组态和编程。

第一步:配置S7-1200的硬件与网络

打开博途软件,新建项目并添加你的S7-1200 CPU。在设备组态中,确保为CPU分配一个与你的局域网环境相匹配的IP地址,比如192.168.0.10。这一步是通信的基础,务必保证后续200SMART的IP地址与它在同一网段。

第二步:创建数据块并定义数据缓冲区

在程序块中新建一个全局数据块(DB),用于存放待发送和已接收的数据。为了便于管理,我们可以在这个DB中创建两个数组:

· SendData:数组类型为Array[0..7] of Int,起始地址为DB4.DBX0.0。这个数组将存放我们要发送给200SMART的8个整数。
· ReceiveData:数组类型为Array[0..7] of Int,起始地址为DB4.DBX16.0。这个数组用来存储从200SMART接收到的8个整数。

这样,发送区和接收区在数据块中就有了清晰的划分,方便我们监控和调试。

第三步:配置TSEND_C通信发送功能块

接下来,从指令库的“通信”->“开放式用户通信”中拖拽出TSEND_C功能块。这个功能块集成了连接建立与数据发送的功能。

我们需要在它的背景数据块中配置连接参数:

· 连接类型:选择“TCP”或“ISO-on-TCP”,因为我们这里用的是ISO-on-TCP协议。
· 伙伴端点:填入200SMART PLC的IP地址,比如192.168.0.20。
· 本地TSAP:设置为一个唯一的值,例如1200。
· 伙伴TSAP:设置为与200SMART侧约定好的值,例如2000。
· 数据发送配置:在DATA引脚,将指针指向我们之前定义的发送区,即P#DB4.DBX0.0 INT 8,表示从该地址开始发送8个INT类型的数据。
  

第四步:配置TRCV_C通信接收功能块

同样,拖拽出TRCV_C功能块用于数据接收。它的连接参数应与TSEND_C保持一致,确保是同一个连接。在DATA引脚,将指针指向接收区,即P#DB4.DBX16.0 INT 8,表示接收到的数据将从这里开始存储。

第五步:编译并下载到S7-1200

完成以上配置后,编译整个项目,并将程序下载到S7-1200 CPU中。下载时注意,如果CPU在运行状态,可能会提示是否启动模块,选择“是”即可。

接下来,我们转战200SMART PLC的编程软件——STEP 7-Micro/WIN SMART。

第六步:配置200SMART的连接

1. 在Micro/WIN SMART中,打开“向导”->“TCP/IP”或直接使用“开放式用户通信”指令。
2. 配置一个连接。这里有一个关键点:为了实现与S7-1200的ISO-on-TCP通信,我们需要确保两端的TSAP配置一致。在200SMART中,我们需要在连接参数里设置本地和远程TSAP,务必与S7-1200侧设置的(如本地1200,伙伴2000)相对应。
3. 在IP地址设置上,我们可以将“远程IP地址”设为0.0.0.0,这表示该连接可以接受来自任意IP地址的连接请求。这在调试初期非常方便。连接ID我们设置为1。

第七步:编写TCP_SEND发送程序

使用TCP_SEND指令来实现数据发送。

· 连接ID:填写我们刚刚在连接配置中设置的ID,这里是1。
· 发送数据区:定义发送数据的起始地址和长度。例如,我们可以将VB1000开始的16个字节(即8个整数)发送出去。200SMART中数据以字节为单位,发送16字节等同于8个INT数据。

第八步:编写TCP_RECV接收程序

使用TCP_RECV指令来实现数据接收。

· 连接ID:同样填写1。
· 接收数据区:指定接收数据的存储位置。例如,我们可以将从S7-1200接收到的数据存放在从VB2000开始的16个字节中。

第九步:编译并下载到200SMART

完成编程后,编译项目并将其下载到200SMART CPU中。

第十步:运行与监控,验证通信成果

现在,我们将两台PLC都切换到运行模式。在博途软件中,我们可以打开之前创建的DB4数据块,在“监视”模式下观察SendData和ReceiveData数组的值。同时,在Micro/WIN SMART的状态图表中,分别监视VB1000开始的16个字节和VB2000开始的16个字节。

你会发现,在S7-1200的发送区写入的值,会立刻出现在200SMART的接收区;反之,在200SMART发送区写入的值,也会立刻出现在S7-1200的接收区。

1200端发送与接收的数据

200SMART端接收的数据

200SMART端发送的数据

原理小课堂:关于TSAP

看到这里,你可能对反复出现的“TSAP”有些好奇。在普通的TCP通信中,我们通过IP地址和端口号来识别通信伙伴。但在ISO-on-TCP协议中,引入了“传输服务访问点”(TSAP)的概念。你可以把TSAP理解为在同一个IP地址下,为不同通信任务指定的“门牌号”。当PLC的IP地址确定后,不同的TSAP值就对应了不同的通信端点。因此,建立连接时,除了IP地址必须匹配,本地的TSAP和伙伴的TSAP也必须一一对应,并且在网络中是唯一的。

写在最后

至此,我们就成功实现了S7-1200与200SMART PLC之间的ISO-on-TCP通信。整个过程的核心在于:

1. 正确配置双方的IP地址和TSAP,确保连接参数匹配。
2. 在S7-1200侧,使用TSEND_C和TRCV_C指令,并正确指定发送和接收的数据指针。
3. 在200SMART侧,通过TCP指令和连接ID,实现数据的收发。

通过这样的配置,两台PLC就能像一对默契的搭档,稳定、高效地交换数据了。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

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

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

本版积分规则

上一主题上一主题         下一主题下一主题
QQ手机版小黑屋粤ICP备17165530号

关于我们·投诉举报· 用户帮助· 联系我们 · 本站服务 · 版权声明· 隐私政策 · 投搞指南

法律保护:PLC技术网,plcjs.com,plcjs.net等字样
Copyright 2010-2030. All rights reserved. 


微信公众号二维码 抖音二维码 百家号二维码 今日头条二维码哔哩哔哩二维码