在一些大型的分布式系统中,可能存在多个PROFINET控制器。这些控制器,有时候需要从同一个分布式子站中获取传感器的信号,比如,两个控制器可能都需要某个接近开关的状态,也可能都需要知道某个电机有没有运行。这种情况下,一种解决方案是安装两套硬件分别传给两个控制器,这显然会增加成本和工作量;另一种解决方案就是将这些信号放在同一个分布式子站中,然后共享给两个控制器。这种方案硬件只有一套,却能传送出两套信号,这就是PROFINET的共享设备功能;
要实现设备共享功能,需要控制器和IO设备都支持设备共享功能才可以。举个例子,硬件环境如下:
CPU1513-1PN:读取输入和写入输出;
CPU1516-3PN:读取输入和输出;
ET200SP(IM155-6),接口模块;
DI 8x24VDC HF,数字量输入模块;
DQ 4x24VDC/2A HF,数字量输出模块
功能要求:
ET200SP作为共享设备,给CPU1513-1PN和CPU1516-3PN提供信号;CPU1513可以读取数字量输入和写入数字量输出;CPU1516只能读取数字量量输入和输出;
说明:
数字量输入模块DI 8x24VDC HF可以组态为带有内部共享输入(MSI)模式。在这种模式下,输入通道的信号值可以复制到最多三个子模块中。每个子模块可以分配给一个IO控制器,加上基本子模块,总共支持4个IO控制器;复制出来的子模块是虚拟的模块,但是会占用输入缓存区的地址。具体来看下:
先来看基本子模块,它的值占用一个字节(8个位)的输入缓存区;系统同时还为各个值预留了一个位用来标志其状态(0=值错误),因此值的状态占用一个字节(8个位);这样基本子模块会占用两个字节的输入缓存区;
启用一个内部共享输入子模块后,该模块会复制基本子模块的值及状态值,因此会也会占用两个字节的输入缓存区;
启用第二个MSI子模块和第三个MSI子模块也类似,如下图所示:
类似的,DQ 4x24VDC/2A HF有可以组态内部共享输出(MSO)模式,它把模块的输出复制到输入缓存区中,如下图所示:
有了这些基础知识,接下来我们开始在博途V14中组态:
添加设备CPU1513-1PN和CPU1516-3PN;
添加ET200S接口模块IM155-6,在其中添加数字量模块DI 8x24VDC HF和DQ 4x24VDC/2A HF;
设置DI 8x24VDC HF的属性,在【模块参数】-【DI组态】中,设置共享设备的模块副本为【1个输入副本作为输入】,如下图所示:
设置DQ 4x24VDC/2A HF的属性,在【模块参数】-【DQ组态】中,设置共享设备的模块副本为【1个输入副本作为输入】,如下图所示:
设置IM155-6的IP地址,并取消自动【自动生成PROFINET设备名】,如下图所示:
在网络视图中,复制一个新IM155-6,将其与CPU1516连接;原来的IM155-6与CPU1513连接。确保两个IM155-6有相同的IP地址和设备名称,如下图所示:
分配CPU对IM155-6的访问权限。CPU1513可以访问基本子模块,CPU1516可访问MSI和MSQ模块;
在IO device_1的【模块参数】-【共享设备】中,将MSI_1和MSO_1选择【—】,不将其分配给当前控制器,如下图所示:
在IO device_2的【模块参数】-【共享设备】中,将基本子模块 DI 8x24V DC HF_1和DQ4x24VDC/2A HF_1选择【—】,不将其分配给当前控制器,如下图所示:
注意接口模块在两个项目设置中都要设置成【—】,即不要分配给任何指定的控制器;
这样保存分别下载到两个CPU中,确保两个CPU及子站的IP在同一个网段中,写入设备名称就可以了;
好了,关于PROFINET的共享设备功能就先介绍到这里。如果你有任何问题欢迎留言。我最近开通了微信视频号,以视频的形式分享工控小知识,欢迎扫描下方的二维码关注:
发表评论