1.S7协议
S7协议是专门为西门子控制产品优化设计的通信协议,它主要用于S7 CPU之间的主-主通信、CPU与西门子人机界面和编程设备之间的通信。S7-1200/1500所有的以太网接口都支持S7通信。
S7通信协议是面向连接的协议,在进行数据交换之前,必须与通信伙伴建立连接。面向连接的协议具有较高的安全性。S7通信可以用于工业以太网和PROFIBUS-DP。这些网络的S7通信的组态和编程方法基本上相同。
连接是指两个通信伙伴之间为了执行通信服务建立的逻辑链路,而不是指两个站之间用物理媒体(例如电缆)实现的连接。连接相当于通信伙伴之间一条虚拟的“专线”,它们随时可以用这条“专线”进行通信。一条物理线路可以建立多个连接。
S7连接属于需要用网络视图组态的静态连接。静态连接要占用参与通信的模块(CPU、通信处理器CP和通信模块CM)的连接资源,同时可以使用的连接的个数与它们的型号有关。
2.单向连接与双向连接
S7连接分为单向连接和双向连接,S7 PLC的CPU集成的以太网接口都支持S7单向连接。单向连接中的客户机(Client)是向服务器(Server)请求服务的设备,客户机是主动的,它调用GET/PUT指令来读、写服务器的存储区,通信服务经客户机要求而启动。服务器是通信中的被动方,用户不用编写服务器的S7通信程序,S7通信是由服务器的操作系统完成的。单向连接只需要客户机组态连接、下载组态信息和编写通信程序。
V2.0及以上版本的S7-1200 CPU的PROFINET通信口可以作S7通信的服务器或客户机。因为客户机可以读、写服务器的存储区,单向连接实际上可以双向传输数据。
双向连接(在两端组态的连接)的通信双方都需要下载连接组态,一方调用指令BSEND或USEBD来发送数据,另一方调用指令BRCV或URCV来接收数据。S7-1200 CPU不支持双向连接的S7通信。
BSEND指令可以将数据块安全地传输到通信伙伴,直到通信伙伴用BRCV指令接收完数据,数据传输才结束。BSEND/BRCV最多可以传输64KB的数据。
使用USEND/URCV的双向S7通信方式为异步方式。这种通信方式与接收方的指令URCV执行序列无关,无需确认。例如可以传送操作与维护消息,对方接收到的数据可能被新的数据覆盖。USEBD/URCV指令传输的数据量比BSEND/BRC少得多。
对于带有1~4个地址区的指令,S7通信可以确保的用户数据的最小字节数见表6-1。关于用户数据容量的详细信息参见相应CPU的技术数据。也可以在博途的在线帮助的“S7通信指令的常见参数”中查阅详细的信息。
表6-1 S7通信可以确保的用户数据最小字节数
博途有很强的防止组态错误的功能,它会禁止建立那些选用的硬件不支持的通信连接组态。S7-PLCSIM支持S7-1200/1500对S7单向连接通信的仿真。
3.创建S7连接
在名为“1200_1200IE_S7”的项目中(见随书光盘中的同名例程),PLC_1和PLC_2均为CPU 1215C。它们的PN接口的IP地址分别为192.168.0.1和192.168.0.2,子网掩码为255.255.255.0。组态时启用双方的MB0为时钟存储器字节。
双击项目树中的“设备和网络”,打开网络视图(见图6-26)。单击按下左上角的“连接”按钮,用选择框设置连接类型为S7连接。用“拖拽”的方法建立两个CPU的PN接口之间的名为“S7_连接_1”的连接。
图6-26 组态S7连接的属性
在打开网络视图后,为了高亮(即用双轨道线)显示连接,应单击按下网络视图左上角的“连接”按钮,将光标放到网络线上,单击出现的小框中的“S7_连接_1”,连接变为高亮显示(见图6-26),出现“S7_连接_1”小方框。
选中“S7_连接_1”,再选中下面的巡视窗口的“属性>常规>常规”(见图6-26),可以看到S7连接的常规属性。选中左边窗口的“特殊连接属性”(见图6-27的上图),右边窗口可以看到未选中“单向组态”复选框(不能更改)。勾选复选框“主动建立连接”,由本地站点(PLC_1)主动建立连接。选中巡视窗口左边的“地址详细信息”(见图6-27的下图),可以看到通信双方默认的TSAP(传输服务访问点)。
图6-27 组态S7连接的属性(www.xing528.com)
单击网络视图右边竖条上向左的小三角形按钮,打开从右到左弹出的视图中的“连接”选项卡(见图6-28),可以看到生成的S7连接的详细信息,连接的ID为100。单击图6-28左边竖条上向右的小三角形按钮,关闭弹出的视图。
图6-28 网络视图中的连接选项卡
使用固件版本为V4.0及以上的S7-1200 CPU作为S7通信的服务器,需要做下面的额外设置,才能保证S7通信正常。选中服务器(PLC_2)的设备视图中的CPU 1215C,再选中巡视窗口中的“属性>常规>保护”,在“连接机制”区勾选复选框“允许从远程伙伴(PLC、HMI、OPC、…)使用PUT/GET通信访问”。
4.编写程序
为PLC_1生成DB1和DB2,为PLC_2生成DB3和DB4,在这些数据块中生成由100个整数组成的数组。不要启用数据块属性中的“优化的块访问”功能。
在S7通信中,PLC_1作通信的客户机。打开它的OB1,将右边的指令列表的“通信”窗格的“S7通信”文件夹中的指令GET和PUT拖拽到梯形图中(见图6-29)。在时钟存储器位M0.5的上升沿,GET指令每1s读取PLC_2的DB3中的100个整数,用本机的DB2保存。PUT指令每1s将本机的DB1中的100个整数写入PLC_2的DB4。
图6-29 GET/PUT指令
单击指令框下边沿的三角形符号或,可以显示或隐藏图6-29的“ADDR_2”“RD_2”“SD_2”等灰色的输入参数。显示这些参数时,客户机最多可以分别读取和改写服务器的4个数据区。发送端和接收端使用的SD_i和RD_i参数的个数必须相互匹配,发送端和接收端彼此协同工作的参数SD_i和RD_i的数据类型和字节数也必须相互匹配。
选中PUT指令或GET指令,再选中巡视窗口中的“属性>组态>连接参数”,可以组态连接参数。选中巡视窗口中的“属性>组态>块参数”,可以在右边窗口设置指令的输入参数和输出参数。
PLC_2在S7通信中作服务器,不用编写调用指令GET和PUT的程序。
与项目“1200_1200_ISO_C”相同,双方均采用验证通信是否实现的典型程序结构。在双方的OB100中,将DB1和DB3中要发送的100个字分别预置为16#2151和16#2152,将保存接收到的数据的DB2和DB4中的100个字清零。在双方的OB1中,用周期为0.5s的时钟存储器位M0.3的上升沿,将要发送的第1个字加1。
5.通信实验
将通信双方的用户程序和组态信息分别下载到CPU,用电缆连接它们的以太网接口。它们进入运行模式后,从图6-30中双方的监控表可以看到双方接收到的第一个字DB2.DBW0和DB4.DBW0不断增大,DB2和DB4中的DBW2和DBW198是通信伙伴在首次扫描时预置的值。
图6-30 PLC_1与PLC_2的监控表
6.仿真实验
选中项目树中的PLC_1,单击工具栏上的“开始仿真”按钮,出现仿真软件的精简视图。单击工具栏上的按钮,将程序和组态数据下载到仿真PLC,后者被切换到RUN模式。选中PLC_2,单击工具栏上的“开始仿真”按钮,出现仿真软件的精简视图。将程序和组态数据下载到仿真PLC,后者被切换到RUN模式。用两台PLC的监控表监控接收到的数据(见图6-30),操作方法和观察到的结果与硬件实验的相同。
7.S7-1500和S7-1200CPU之间的GET/PUT通信
随书光盘中的例程“1500_1500IE_S7”中的CPU为CPU 1511-1PN和CPU 1516-3PN/DP,例程“1500_1200IE_S7”的CPU为CPU 1516-3PN/DP和CPU 1215C。
这两个项目的S7连接的组态方法、程序和监控表与例程“1200_1200IE_S7”相同,调试的方法也完全相同。例程“1500_1500IE_S7”可以仿真。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。