- {{item.name}}
S7-200 SMART CPU与S7-300 PN口进行ISO on TCP通信
- 0
- 65
S7-200 SMART CPU与S7-300 CPU集成PN口的ISO on TCP通信
S7-200 SMART CPU与S7-300 CPU 集成 PN 口通过ISO on TCP 通信,需要在双方都建立连接。在S7-300调用 T-block 指令(TCON, TDISCON, TSEND, TRCV) 、在S7-200SMART调用Open User Communication库指令(ISO_CONNECT,DISCONNECT,TCP_SEND,TCP_RECV)来实现。通信方式为双边通信,因此双方的发送和接收指令必须成对出现。
注意:
S7-200 SMARTPLC V2.2 版本才开始支持ISO on TCP通信,早期版本的CPU需要升级固件后方可支持ISO on TCP。
硬件和软件需求及所完成的通信任务
本文采用1个S7-300PN CPU,1个S7-200SMART CPU为例,介绍它们之间的ISO on TCP通信。
硬件:
① S7-300PN CPU (IP地址:192.168.0.4 子网掩码:255.255.255.0)
② S7-200 SMART CPU (固件V2.2)(IP地址:192.168.0.2 子网掩码:255.255.255.0)
③ PC (带以太网卡)
④ TP以太网电缆
软件:
① STEP7 V13 SP1
② STEP 7 Micro/WIN SMART V2.2
所完成的通信任务:
① S7-300 将通信数据区 DB11 中的200 个字节发送到 S7-200 SMART的VB 数据区。
② S7-300 读取 S7-200 SMART中的VB数据区存储到S7-1200 的数据区DB12。
S7-300侧硬件组态和编程
1. 使用TIA V13 软件新建一个项目,添加1个S7-300站点并为其分配网络和IP地址 ,如图1.所示
图1.组态S7-300并分配IP地址
为编程方便,使用CPU属性中定义的时钟位,在设备视图双击CPU设置时钟存储器,如图2所示。
图2. 启用时钟位
2.在PLC_1的OB1中调用建立连接指令,进入 "项目树" > " PLC_1" > "程序块" > "OB1" 主程序中,从右侧窗口 "指令"> "通信">"开放式用户通信"下调用 "TCON" 指令,配置连接参数,如图3.所示。
图3.调用"TCON"指令并配置连接参数
表1.TCON 指令参数说明
REQ | // 为1时,开始建立连接 |
ID | // 连接号,在组态窗口配置后自动生成 |
CONNECT | // 连接数据,在组态窗口配置后自动生成 |
DONE | // 为1时,表示已成功建立连接 |
BUSY | // 为1时,正在建立连接 |
ERROR | // 为1时,有故障发生 |
STATUS | // 状态代码 |
3.在PLC_1中创建发送数据块DB11(接收区数据块DB12类似),数据块中定义200个字节的数组,如图4. 所示。
图4.创建发送数据块DB11
4.在PLC_1的OB1中调用"TSEND"指令来发送数据,如图5.所示
图5: 调用TEND发送指令
表2.TSEND 指令参数说明
REQ | // 在检测到上升沿时启动发送作业 |
ID | // 连接号,要与TCON连接参数中的连接ID一致 |
LEN | // 发送的字节数 |
DATA | // 发送区,包含地址和长度 |
DONE | // 为1时,发送完成 |
BUSY | // 为1时,发送作业仍未完成,此时无法启动新作业 |
ERROR | // 为1时,有故障发生 |
STATUS | // 状态代码 |
5.在PLC_1的OB1中调用TRCV指令来接收数据,如图6.所示
图6: 调用TRCV接收指令
表3.TRCV 指令参数说明
EN_R | // 为1时,开始接收 |
ID | // 连接号,要与TCON连接参数中的连接ID一致 |
LEN | // 接收长度 |
DATA | // 接收区,包含地址和长度 |
NDR | // 为1时,接收完成 |
BUSY | // 为1时,正在进行接收作业 |
ERROR | // 为1时,有故障发生 |
STATUS | // 状态代码 |
RCVD_LEN | // 实际接收到的数据量(以字节为单位) |
S7-200 SMART侧编程
1.调用ISO_CONNECT指令建立连接,伙伴TSAP(RemTsap)与本地TSAP(LocTsap)必须与S7-300中的连接配置交叉对应。如图7.所示
图7: 调用ISO_CONNECT建立连接指令
表4.ISO_CONNECT指令参数说明
Req | // 为1时,开始建立连接 |
Active | // 是否主动建立连接,必须与S7-300中的连接配置相反。 |
ConnID | // 连接ID |
RemTsap | // 伙伴TASP |
LocTsap | // 本地TSAP |
DONE | // 为1时,表示已成功建立连接 |
BUSY | // 为1时,正在建立连接 |
ERROR | // 为1时,有故障发生 |
STATUS | // 状态代码 |
2.调用TCP_RECV指令接收数据。如图8.所示
图8: 调用TCP_RECV接收指令
表5. TCP_RECV 指令参数说明
ConnID | //连接号,要与ISO_CONNECT指令中填写的的连接ID一致 |
MaxLen | // 接收长度(超出此长度的消息无法接收) |
DataPtr | // 接收区,包含地址和长度 |
Done | // 为1时,接收完成 |
Busy | // 为1时,正在进行接收作业 |
Error | // 为1时,有故障发生 |
Status | // 状态代码 |
Length | // 接收到的数据长度(字节) |
3.调用TCP_SEND指令发送数据。如图9.所示
图9: 调用TCP_SEND发送指令
表6. TCP_SEND 指令参数说明
Req | // 在检测到上升沿时启动发送作业 |
ConnID | // 连接号,要与ISO_CONNECT指令中填写的的连接ID一致 |
Datalen | // 作业要发送的最大字节数 |
DataPtr | // 发送区,包含地址和长度 |
Done | // 为1时,接收完成 |
Busy | // 为1时,发送作业仍未完成,此时无法启动新作业 |
Error | // 为1时,有故障发生 |
Status | // 状态代码 |
4.为通信指令分配库存储器。如图10所示
监控通信结果
图11 监控结果
剩余80%未阅读,请登录查看大全章节内容
- 评论
-
分享
扫码分享
- 收藏 收藏
- 点赞 点赞
- 纠错 纠错
{{item.nickName}}