首页 理论教育 如何实现S7-1200之间的通信?

如何实现S7-1200之间的通信?

时间:2023-06-24 理论教育 版权反馈
【摘要】:基于连接的通信分为单向连接和双向连接,S7-1200 仅支持S7 单向连接。它们的PN 接口的IP 地址分别为192.168.0.10 和192.168.0.20,子网掩码为255.255.255.0,组态时启用双方的MB0 为时钟存储器字节。使用固件版本为V4.0 及以上的S7-1200 CPU 作为S7 通信的服务器,需要做以下设置才能保证S7 通信正常。PUT 指令每1 s将本机的DB1 中的100 个整数写入PLC_2 的DB4。在S7 通信中,PLC_1 作通信的客户机。

如何实现S7-1200之间的通信?

1.S7 协议简介

S7 协议是专门为西门子控制产品优化设计的通信协议,它是面向连接的协议,在进行数据交换之前,必须与通信伙伴建立连接。面向连接的协议具有较高的安全性。

连接是指两个通信伙伴之间为了执行通信服务建立的逻辑链路,而不是指两个站之间用物理媒体(例如电缆)实现的连接。S7 连接是需要组态的静态连接,静态连接要占用CPU的连接资源。基于连接的通信分为单向连接和双向连接,S7-1200 仅支持S7 单向连接。单向连接中的客户机(Client)是向服务器(Server)请求服务的设备,客户机调用GET/PUT指令读、写服务器的存储区。服务器是通信中的被动方,用户不用编写服务器的S7 通信程序,S7 通信是由服务器的操作系统完成的。因为客户机可以读、写服务器的存储区,单向连接实际上可以双向传输数据。V2.0 及以上版本的S7-1200 CPU 的PROFINET 通信口可以作为S7 通信的服务器或客户机。

2.创建S7 连接

在名为“PLC S7 通信”的项目中,PLC_1 和PLC_2 均CPU 1215C。它们的PN 接口的IP 地址分别为192.168.0.10 和192.168.0.20,子网掩码为255.255.255.0,组态时启用双方的MB0 为时钟存储器字节。

双击项目树中的“设备和网络”,打开网络视图,单击左上角的“连接”按钮,用选择框设置类型为S7 连接。选中PLC_1,右键选择“添加新的连接”,在创建新连接对话框内,选择连接对象“PLC_2”,选择“主动建立连接”后,建立连接,如图8-23所示。用“拖拽”的方法建立两个CPU 的PN 接口之间的名为“S7_连接_1”的连接,如图8-24所示。打开网络视图后,为了高亮(用双轨道线)显示连接,应单击按下网络视图左上角的“连接”按钮,将光标放到网络线上,单击出现的小方框中的“S7_连接_1”,连接会变为高亮显示,出现“S7 连接_1”字样。

图8-23 创建新连接

选中“S7 连接_1”,再选中下面的巡视窗口的“属性>常规>常规”(图8-24),可以看到S7 连接的常规属性。选中左边窗口的“特殊连接属性”,右边窗口可以看到未选中“单向组态”复选框,勾选“主动建立连接”复选框,由本地站点PLC_1 主动建立连接。选中巡视窗口左边的“地址详细信息”,可以看到通信双方默认的TSAP (传输服务站点)。

单击网络视图右边竖条上向左的小三角形按钮,打开从右到左弹出的视图中的“连接”选项卡,如图8-25所示,可以看到生成的S7 连接的详细信息,连接的ID 为100。单击图8-25 左边竖条上向右的小三角按钮,关闭弹出的视图。使用固件版本为V4.0 及以上的S7-1200 CPU 作为S7 通信的服务器,需要做以下设置才能保证S7 通信正常。选中服务器(PLC_2)的设备视图中的CPU 1215C,再选中巡视窗口中的“属性>常规>防护与安全”,在“连接机制”区勾选“允许来自远程对象的PUT/GET 通信访问”复选框。(www.xing528.com)

图8-24 组态S7 连接的属性

图8-25 网络视图中的连接选项卡

3.编写程序

为PLC_1 生成DB1 和DB2,为PLC_2 生成DB3 和DB4,在这些数据块中生成由100 个整数组成的数组,不启用数据块属性中的“优化的块访问”功能。

在S7 通信中,PLC_1 作通信的客户机。打开PLC_1 的OB1 程序编辑区,将右边的指令列表的“通信”选项板的“S7 通信”文件夹中的指令GET 和PUT 拖拽到梯形图中,如图8-26所示。在时钟存储器位M0.5 的上升沿,GET 指令每1 s读取PLC_2 的DB3 中的100 个整数,用本机的DB2 保存。PUT 指令每1 s将本机的DB1 中的100 个整数写入PLC_2 的DB4。PLC_1 的OB1 程序如图8-26所示。PLC_2 在S7 通信中作服务器,不用编写调用指令GET 和PUT 的程序。

图8-26 PLC_ 1 的OB1 程序

在双方的OB100 中,将DB1 和DB3 中要发送的100 个字分别预置为“16#1214”和“16#1215”。选中项目树中的PLC_1,单击工具栏上的“开始仿真”按钮,出现仿真软件的窗口,将保存接收到的数据DB2 和DB4 中的100 个字清零。在双方的OB1 中,用周期为0.5 s的时钟存储器位M0.3 的上升沿,将要发送的第1 个字加1。将PLC_1 和PLC_2 的程序和组态数据下载到仿真PLC,在PLC_1 的SIM 表格中输入DB2.DBW0、DB2.DBW2、DB2.DBW198 变量,在PLC_2 的SIM 表格中输入DB4.DBW0、DB4.DBW2、DB4.DBW198变量。仿真切换到RUN 模式后,观察上述变量的值,DB2.DBW0 和DB4.DBW0 不断增大,DB2 和DB4 中的DBW2 和DBW198 应是通信伙伴首次扫描预置的值,分别为16#1215、16#1214。将程序和组态数据下载到PLC,用PLC_1 和PLC_2 的监控表监控接收到的数据,观察变量的数值,若与仿真结果一致,则说明通信程序调试成功。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈