在接下来的一段时间,会重点分享关于S7-200SMART通信应用的案例,包括串口通信应用案例、以太网通信应用案例等,希望有兴趣的朋友们持续关注该公众号
一、 导读
在上一篇文章中分享了S7-200SMART系列PLC之间的Modbus通信,后台有兄弟私信问我,两个S7-200SMART的PLC通信为啥要用Modbus,而不用以太网通信呢?当然这篇文章主要是为了给大家分享S7-200SMART系列PLC的Modbus从站通信的应用而已。那么本篇文章就来分享下S7-200SMART系列PLC之间通过以太网方式实现的S7通信(S7通讯)。
S7通信协议是西门子S7系列PLC内部集成的一种通信协议,是S7系列PLC的精髓所在。它是一种运行在传输层之上的(会话层/表示层/应用层)、经过特殊优化的通信协议,其信息传输可以基于MPI网络、PROFIBUS网络或者以太网。
二、通信案例描述
现有三台S7-200SMART系列的PLC,分别为1#PLC、2#PLC和3#PLC,其中1#PLC作为本地站,2#PLC和3#PLC作为远程站。
本案例实现的数据交换情况如下所示:
1.1#PLC的VB0~VB9的数据传输给2#PLC的VB0~VB9中。
2.读取2#PLC的MB0~MB4的数据,放入到1#PLC的VB100~VB104中。
3.1#PLC的VB0~VB9的数据传输给3#PLC的VB0~VB9中。
4.读取3#PLC中的MB10~MB14的数据,放入到1#PLC的VB110~VB114中。
三、通信案例的实施
(1) 组态CPU的IP地址
本案例中有一个本地站的PLC和两个远程站的PLC,可通过交换机或是路由器的方式把三者进行连接,然后分别为每个PLC组态对应的IP地址,并确保三者的IP地址均处于同一个网段,三个PLC的IP地址设置,如下图所示:
在编程软件的项目树下双击CPU型号,打开系统块,在CPU块中的“通信”选项下,组态CPU的IP地址,如系统所示。
(2) 在Get/Put向导中组态数据交换
Ø添加PUT/GET操作项
启用GET/PUT向导后,在Get/Put向导的操作项中添加4个操作项,如下图所示,其中2个GET操作项,2个PUT操作项,GET操作表示读取远程站数据,PUT操作表示写数据到远程站。
Ø组态数据交换
本地站(1#PLC)的VB0~VB9的数据传输给远程站(2#PLC)的VB0~VB9中,数据交换区的组态如下图所示:
读取远程站(2#PLC)的MB0~MB4的数据,放入到本地站(1#PLC)的VB100~VB104中,数据交换区的组态如下图所示。
本地站(1#PLC)的VB0~VB9的数据传输给远程站(3#PLC)的VB0~VB9中,数据交换区的组态如下图所示:
读取远程站(3#PLC)中的MB10~MB14的数据,放入到本地站(1#PLC)的VB110~VB114中,数据交换区的组态如下图所示
组态完数据交换区后,需要为期分配库存储器,分配时,确保分配的存储器地址在程序中未被使用,在Get/Put向导组态数据交换地址时未被使用,本例中分配如下所示:
Ø编写程序
通信程序的编写只需要再本地站中编写,远程站中无需编写任何的通信程序,在本地站中调用NET_EXE 的子例程序即可。
四、应用经验总结
1.S7通信不仅可实现S7-200SMART系列PLC之间的通信,也可以和西门子其他S7系列的PLC进行通信
2.S7通信为单边通信,只需要在本地站中编写对用的通信程序即可,在原远程站中无需编写任何的通信程序,通信时就算远程站的CPU处于停止模式下,本地站也可对远程站进行数据的读写操作。
3.一个PLC可作为其他8个PLC的本地站使用,也可做为其他8个PLC的远程站使用,执行主动连接的同时也可以被动地被其他远程 CPU 进行通信读写。
4.判断S7通信是否有断线情况,除了采用示例中的心跳信号判断法外,还可以采用通过判断操作状态字中的bit6位来判断,该位表示通信已经激活标志位,正常情况下是0 1不断变换,当某一个远程通信伙伴方线路断开后,该位会一直保持为1。操作状态字节的查询在NET_EXE子例程中可查询,如下图所示,VB7030和VB7070为往两个远程站中写入数据时的操作状态字节。
5. GET 指令可从远程站点读取最大 222 个字节的用户数据,PUT 指令可向远程站点写入最大 212 个字节的用户数据;大数据量的用户数据通信可以调用多个 GET/PUT 指令来实现。采用 GET/PUT 向导时每个操作的读写用户数据的最大个数为 200 个字节。


返回顶部
刷新页面
下到页底