[西门子] 怎样理解PROFINET的共享设备功能?

[复制链接]
查看34112 | 回复0 | 2024-11-13 08:10:44 | 显示全部楼层 |阅读模式
在一些大型的分布式系统中,可能存在多个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在同一个网段中,写入设备名称就可以了;


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则