本篇我们来讲解S7-1500与ET200分布式IO的Profinet通信配置。
今天我们将通过一个完整的实操案例,带大家一步步完成CPU1511-1PN主站与ET200MP从站之间的Profinet通信配置,并最终实现通过主站控制从站输出模块点灯。
一、硬件准备与概述
咱们先来看看这次要用到的设备:一个CPU1511-1PN模块作为主站控制器,一个IM155-5 PN接口模块作为从站,以及一个SM521输入模块和一个SM522输出模块。我们今天要实现的目标很简单,就是把主站的MB0这个字节的数据,送到从站SM522模块的输出地址上,这样我们就能看到对应输出点的灯闪亮起来,通信就算打通了。
二、软件组态与硬件检测
首先,我们在电脑里打开博途软件,开始进行硬件组态。
1. 新建项目:点击“新建项目”,给项目起个名字,比如“ET200MP_PN”,然后创建。
2. 添加控制器:在设备组态界面,添加一个新设备,选择我们实际使用的CPU1511-1PN。
3. 检测从站:这里有个很便捷的功能。点击“在线”菜单,选择“硬件检测”,然后点击“搜索”。软件会自动搜索到网络上的IO设备。我们今天要添加的是ET200MP从站,所以找到它后,直接点击“添加设备”即可。
4. 建立连接:切换到“网络视图”,我们会看到刚才添加的PLC和从站。用鼠标把它们拖拽到一起,你会发现它们之间的Profinet连接就自动建立好了,非常方便。
三、参数配置与地址分配
连接建立后,我们需要确认并分配一些关键参数。
1. 检查与分配IP地址:在网络视图中,我们双击PLC,可以看到它的IP地址。再双击分布式IO模块,发现它还没有IP地址。我们手动分配一个给它,比如“192.168.0.4”(因为.1、.2、.3可能已被占用),子网掩码保持“255.255.255.0”,点击“分配IP地址”,很快就能看到地址被成功分配。
2. 分配设备名称:Profinet通信依赖于设备名称,而不是IP地址。我们同样给这个从站分配一个设备名称,比如“IO2”,然后点击“分配名称”。注意:这个设备名称必须与实际硬件上(或者通过其他工具)分配的名称完全一致,否则通信会失败。
3. 查看IO地址:配置好之后,我们要知道从站输出模块的地址是多少。切换到“设备概览”视图,找到DQ模块(数字量输出模块),可以看到它的起始地址是“68”。这个地址很关键,我们待会儿编程就要用到它。
四、编写控制程序
现在硬件组态做好了,我们来写一小段程序,实现控制功能。
1. 启用时钟存储器:为了方便测试,我们想用一个会周期闪烁的脉冲信号。在CPU属性中,勾选“启用时钟存储器字节”,比如使用MB0作为时钟存储器,这样MB0里的各个位就会按照固定频率闪烁。
2. 编写MOVE指令:回到程序块,在OB1中编写一条MOVE指令。我们把控制器(主站)的MB0,传送到从站SM522模块的输出地址QB68上。这样,MB0里不断变化的位状态,就会实时反映到远程从站的输出点上。
3. 确认设备名称:在下载程序前,还有最后一步确认。再次切换到网络视图,双击连接线,在属性中查看“设备名称”。必须确保这里的名称和我们刚才分配给实际硬件的“IO2”完全一致。这很重要,如果名称对不上,程序是下载不下去的。
4. 编译下载:确认无误后,点击“编译”,没有错误就可以下载到设备了。下载过程可能需要一点时间,耐心等待。
五、调试与结果验证
下载完成后,我们在线监控一下程序。可以看到,MOVE指令正在执行,数据成功送到了QB68。
此时,我们再看看现场的硬件设备——ET200MP从站上的SM522模块。你会发现,从Q68.0到Q68.7对应的输出指示灯正在有规律地闪烁。这个闪烁的信号,正是从主站CPU的MB0送过来的,说明我们的Profinet通信已经完全成功!
六、进阶应用:智能IO设备(IO Device)
刚才的例子是经典的“控制器+远程IO”模式。其实,Profinet还有一个非常强大的功能,叫做“智能IO设备”。这意味着,一台S7-1500 PLC,既可以作为控制器(Controller),也可以作为另一个控制器的设备站(Device)。
这种通信方式的特点和优势:
· 实时通信:数据交换是实时的。
· 无需编程:只要硬件组态配置好,数据就能自动交换,完全不需要编写任何通信程序(如TCON、TSEND等)。
· 节省硬件:可以省去PN/PN耦合器。
我们来看一个典型应用。假设有两台CPU1511-1PN,我们希望:
· 从设备一的MB10发送一个字节到设备二的MB10。
· 从设备二的MB20发送一个字节到设备一的MB20。
· 要求设备二作为IO设备站。
硬件连接很简单,两台PLC通过交换机连接到同一网络即可。
配置步骤:
1. 设置IO设备站:选中第二台PLC(作为设备站的那个),在它的“设备属性”中,找到“操作模式”,勾选“IO设备”。这样,这台PLC就不再是单纯的控制器了。
2. 配置传输区:同样在“操作模式”下,我们需要配置传输区。简单来说,就是指定哪些数据是控制器发送给设备的,哪些是设备发送给控制器的。例如:
· 控制器 → 设备:控制器站的QB2(输出区)的数据,会自动映射到IO设备站的IB2(输入区)。
· 设备 → 控制器:IO设备站的QB2(输出区)的数据,会自动映射到控制器站的IB2(输入区)。
· 注意:这个映射关系是硬件组态自动完成的,无需编程。
3. 编写简单传送程序:虽然数据交换是自动的,但PLC内部的数据传送还是需要程序来实现。
· 在控制器站(设备一)中,编写一条MOVE指令,将MB10传送到QB2。
· 在设备站(设备二)中,编写一条MOVE指令,将MB20传送到它的QB2。
· 同时,在控制器站(设备一)中,再编写一条MOVE指令,将从IB2接收到的数据(它来自设备二的QB2)传送到MB20。
这样,通过硬件组态的“自动映射”和PLC内部的“简单传送”,就轻松实现了两台设备间MB10和MB20的数据交换。
七、实战操作:配置一个ET200SP智能设备站
理解了原理,我们来实际操作一下。这次我们换一个ET200SP分布式IO站,把它配置为智能IO设备。
1. 新建项目并获取硬件:新建一个名为“ET200SP_PN”的项目。添加设备时,选择“非特定的CPU”,然后通过“获取”功能,在线检测并上传硬件配置(注意:这只会上传硬件组态,不会上传程序)。找到我们的ET200SP站,并将其添加为IO设备。
2. 建立连接:切换到网络视图,将CPU和添加的ET200SP站拖拽连接。
3. 检查参数:双击ET200SP站,查看它的IP地址和设备名称。比如IP是“192.168.0.2”,设备名称是“IO1”。务必确保,我们在项目里给这个站起的名字,和它实际的设备名称(IO1)完全一致。
4. 查看地址:切换到“设备概览”,查看数字量输出模块的起始地址。比如我们看到是“100”。那么,我们的控制目标就是把主站的数据送到这个地址QB100。
5. 编写程序:启用时钟存储器字节,然后编写一条MOVE指令,将主站(S7-1500)的MB0,送到设备站(ET200SP)的QB100。
6. 编译下载:编译无错后,下载到PLC。等待下载和重启完成。
7. 最终验证:在线监控程序,可以看到数据已经正常送出。此时观察现场的ET200SP模块,可以看到输出模块上的指示灯正在有规律地闪烁。这表明,通过Profinet通信,控制器成功控制了智能IO设备站的输出,通信完美成功!
通过以上步骤,相信你已经掌握了S7-1500与ET200系列通过Profinet进行通信的核心方法,无论是作为普通远程IO,还是作为智能设备,都能轻松驾驭。