S7 通讯的应用与组态方法
2021-08-17庄旭东
庄旭东
现在的自动化设备越来越趋于模块化和多接口化,如果主机与其他辅助设备之间的通讯可以不需要添加过多硬件组态,即插即用,而且主辅机之间的通讯不影响主机程序执行,通讯链接时也不需要主机停机,将明显提高主辅机之间使用的便利性。S7通讯的单边通讯就有以上的优点。
S7 协议是西门子S7 系列产品之间通讯使用的标准协议,其优点是通讯双方在同一个MPI 总线上,同一个Profibus-DP 总线上或者同一个工业以太网总线上,都可以通过S7 协议建立通讯连接,使用相同的编程方式进行数据交换,而与使用何种总线或者网络无关。
S7 通讯按组态的方式可分为基于客户端、服务器的单边通讯和基于伙伴的双边通讯。
单边通讯模式较为常用。在组态S7 单边通讯模式时,只需要在客户端一侧进行配置和编程。由于服务器的“服务”功能是硬件提供的,所以服务器侧只需要准备好需要被访问的数据,不需要用户在该侧的软件进行任何编程。
客户端在S7 通信中是资源的索取者,而服务器则相反,它是资源的提供者。服务器通常是西门子S7 系列的一种CPU,它的资源就是其内部的变量、数据等。客户端通过S7 通信协议,对服务器的数据进行读取或写入的操作。
客户端、服务器模式的数据流动是单向的。也就是说,只有客户端能操作服务器的数据,而服务器不能对客户端的数据进行操作。
在网络中组态一个S7 单边通讯的前提条件是,客户端和服务器两边都是西门子S7 系列的CPU,而且客户端和服务器两边有相同的通讯方式,MPI 通讯、Profibus-DP 通讯、工业以太网通讯都可以。下例使用一个西门子1500 的CPU 和一个西门子1200的CPU 进行S7 单边通讯的组态。
1、S7 通讯客户端CPU 硬件的组态方法
1.1、创建客户端CPU 并设定CPU 的IP,该示例把客户端CPU 的IP 设定为“192.168.3.61”并创建PN 连接;
1.2、单击工具栏左上角连接按钮,并在隔壁的选择框中选择“S7 连接”选项,如图1.2;
图1.2
1.3、选中CPU,单击右键,选择“添加新连接”;
1.4、打开界面右边的“网络视图”,选择“连接”,上一步骤创建的S7 连接将显示在这里,我们将在这里配置S7 连接的相关参数,如图1.4;
图1.4
1.5、选中所创建的S7 连接“S7_连接_1”,单击属性,在显示出来的属性栏中设置服务器的IP,该IP 必须与客户端在同一个网段,并且与将要连接的服务器的IP 一致,该示例把服务器的IP 设置为“192.168.3.70”,如图1.5;
图1.5
1.6、在属性中选择“地址详细信息”,设置伙伴PLC的机架号和插槽号。当通讯伙伴为S7-300/400 的时候,机架号设置为0,插槽号设置为2,TSAP 为03.02。当通讯伙伴为S7-1200/1500 时,机架号设置为0,插槽号设置为1,TSAP 为03.01。该示例伙伴CPU 用的是S7-1200,所以机架号设置为0,插槽号设置为1,TSAP 为03.01,如图1.6;
图1.6
1.7、将硬件设置下载至客户端CPU 中;
至此我们便完成了客户端CPU 的硬件组态,接下来进行软件的组态。
2、S7 通讯客户端CPU 的软件编程方法
2.1、打开“指令任务卡”,并将“GET”指令插入到“OB1”块的程序段1 中,按照指示创建背景数据块。单击新创建的功能块右上角的“开始组态”按钮,在“连接参数”栏中的“连接名称”选择我们上面创建的S7连接“S7_连接_1”,并按确定按钮完成连接选择。该功能块用于读取服务器中指针所指向的数据,并寄存到客户端指定的位置中;
2.2、设置“GET”功能块的参数。“REQ”为控制参数,当该参数上升沿时激活数据交换功能。“ID”为该S7 连接的ID。“ADDR_1”为服务器待被读取的数据的指针,指针远程访问某个数据块时,必须始终指定该数据块。“RD_1”为客户端读取服务器数据所寄存的位置指针,即客服端读取服务器“ADDR_1”所指向的位置的数据信息放置到“RD_1”所指向的区域上。该功能块可同时读取服务器上多个不重复区域的数据,并放置到客户端不重复的区域中。“NDR”为状态参数,0 表示作业尚未开始或仍在运行,1 表述作业已成功完成。“ERROR”和“STATUS”一起提供了功能块是否出现错误及所出现错误的错误代码。
如图2.2 的“GET”功能块,红色框部分为“开始组态”按钮,单击该处选择相应的S7 连接。该功能块是将服务器的MB10-MB14 一共5 个字节的数据读取到客户端的MB20-MB24 中,每个字节的地址一一对应。
图2.2
2.3、打开“指令任务卡”,并将“PUT”指令插入到“OB1”块的程序段2 中,按照指示创建背景数据块。单击新创建的功能块右上角的“开始组态”按钮,在“连接参数”栏中的“连接名称”选择我们上面创建的S7连接“S7_连接_1”,并按确定按钮完成连接选择。该功能块用于发送客户端指针所指向的数据到服务器并寄存在服务器所指定的位置中。
2.4、设置“PUT”功能块的参数。“REQ”为控制参数,当该参数上升沿时激活数据交换功能。“ID”为该S7连接的ID。“ADDR_1”为服务器用于写入数据的区域指针。“SD_1”为客户端所要发送的数据的区域的指针。即客户端将“SD_1”所指定的区域中的数据写入到服务器“ADDR_1”所指向的区域中。该功能块可同时发送多个客户端不重复的区域数据并写入到服务器不重复的位置中。“NDR”为状态参数,0 表示作业尚未开始或仍在运行,1 表述作业已成功完成。“ERROR”和“STATUS”一起提供了功能块是否出现错误及所出现错误的错误代码。
如图2.4 中,该功能块将客户端中的MB150-MB170中共20 个字节的数据写入到服务器的MB100-MB120 中,每个字节的地址一一对应。
图2.4
2.5、将程序下载到客户端CPU 中。
至此客户端关于S7 单边通讯的所有组态已经完成了,接下来进行服务器CPU 的硬件组态。S7 单边通讯中不需要对服务器CPU 的软件进行任何编程。
3、S7 通讯服务器CPU 硬件的组态方法
3.1、创建CPU 并设定CPU 的IP,该示例把CPU 的IP 设定为“192.168.3.70”并创建PN 连接,该IP 地址必须与1.5 中设置的IP 地址一致,否则将无法进行通讯。
3.2、勾选CPU 属性中“防护与安全”选择卡中“连接机制”选项的“允许来自远程对象PUT/GET 访问”内容,如图3.2
图3.2
3.3、编译并将硬件下载至服务器CPU 中。
经过上述示例不难发现,服务器的CPU 只需勾选远程CPU 的通讯访问权限即可,其他的都由客户端CPU 中组态。用这样的通讯方式进行主机和其他辅助设备进行通讯,可以大大减少辅助设备在通讯上的编程时间,加大了编程的灵活性。