西门子CPU之间的以太网通讯协议有多种,S7通讯属于简单易用的一种。
下面介绍S7-1200 CPU使用以太网S7通讯的方法。
以太网S7通讯的介绍
在 ISO-OSI 参考模型中,S7 协议位置。如下图▼
S7协议属于应用层的协议,不管使用的是以太网、MPI还是Profibus网络,都是可以使用S7协议进行通讯的。
S7-1200的put/get指令介绍
1.put/get是一种单边通讯,提供单向的读/写功能,指定一方为服务器,另一方为客户端,客户端中需要进行put/get指令的编程,服务器端只要进行简单的设置以及对应地址分配即可。
2.S7-1200 CPU允许通过S7指令传送的Zui大字节数是160字节。
3.指令位于“通信”->"S7通信"部分。
具体的实现
1)服务器侧的设置。
a. 将S7通讯服务器侧的CPU属性部分进行修改。
将位于“连接机制”下的“允许来自远程对象的PUT/GET通信访问”进行勾选。
b.服务器侧建立读写DB区域。对DB块的属性进行非优化设置。
写DB类似。
此处建立“读DB”和“写DB”,使用固定编号,建立好通讯双方约定好的变量后,即可完成服务器侧的通讯准备。
以下请注意
记住DB块的编号以及数据起始偏移(编译后产生)、数据个数。
2)客户端侧的设置。
a.建立和服务器侧类似的DB块以及相关的变量。此处不再赘述。
b.如果CPU还没有子网,需要在“网络视图”中,右击CPU网口,选择“添加子网”。
c.编写指令。
将GET指令拖入程序中。点击如下图所示的组态按钮,进入组态界面。
此处
1.不论通讯双方的CPU是否在同一个项目中,均可选择“未知”。
2.填入服务器CPU的IP地址。
此处
ADDR是读取的服务器的数据地址指针,RD是服务器读取过来要存放在本地的数据地址指针。数据流向是ADDR->RD。
格式是:P#DB"块号".DB"首数据的起始地址" 数据类型 数据长度。
将PUT指令拖入程序中:
此处
对于同一个服务器的读写操作的ID是一样的,代表着同一个连接。此处可以直接填入GET的ID。
此处
ADDR是写入的服务器的数据地址指针,SD是存放在本地的数据地址指针。数据流向是SD->ADDR。
3)需要额外注意的。
a.对于同一个连接,不能进行PUT/GET通讯,建议使用完成位来进行轮询操作。
b.由于一个CPU可以建立多个S7通讯连接,不同连接 的通讯指令是可以进行的。
c.如上图所示,通过客户端侧CPU的属性中的“连接资源”可以查看CPU允许的Zui大S7通讯连接数以及已经组态的连接数。如果建立连接是直接选择同一个项目中的CPU时,服务器CPU的属性也可以显示已经组态的连接数。如果选择的是“未指定”,则无法显示,需要人工进行核算是否超过Zui大的连接数。
d.CPU网口既可以作为一个连接的服务器,又可以作为另一个连接的客户端。只要在规定的连接数范围即可。