在许多应用场合,我们需要PLC控制系统能够实现热插拔功能,所谓热插拔就是在系统通电运行状态下,进行硬件的更换和调整。
1. SIEMENS PLC控制系统关于热插拔功能的定义:
1.带电插拔模块时,确保不造成模块的硬件损坏;2.带电插拔模块时,CPU不停机,并产生报警;3.带电插拔模块时,该模块I/O通道的数值清零;该模块所在站点不会掉站,而其他模块的运行不受影响;4.带电插拔模块时,CPU中触发中断组织块或通过DP诊断程序块,得到模块拔出或插入的事件信息,在用户程序或中断组织块OB**中进行相应控制逻辑和I/O通道的处理;
2.SIEMENS的PLC控制系统对热拔插的支持:
√ S7-200系列PLC不支持热插拔功能;
√ S7-300 CPU直接带I/O模块的方式不支持热插拔;
√ S7-300作为PROFIBUS DP主站下挂DP从站ET200M、ET200S、ET200iS,支持热插拔功能; (需要使用有源总线底板,如下说明)
注: 采用S7-300作为主站的软冗余系统无法实现热插拔全部功能,不具备以上所列第3,4条目中的全部功能。当您将ET200M从站上的模块拔出时,CPU不停机,主CPU、备用CPU上的SF灯亮,BUSF灯闪烁,ET200M从站上的2块IM153-2模块的SF灯亮,BF灯闪烁,该ET200M从站上所有模块的I/O值被清0,S7-300主站失去对该ET200M从站的控制能力。当您再次将模块插入到ET200M站上时,系统从主CPU切换到备用CPU,SF、BUSF、BF灯熄灭,软冗余系统重新回到正常运行状态。(新CPU支持“Startup when expected/actual config. differ.”功能,功能见下文;软冗余系统不支持使用GSD文件组态ET200M站点)
这样的ET200M从站是不支持热插拔功能的。为了实现ET200M从站的热插拔功能,我们需要对ET200M的硬件配置进行一些调整,通用导轨更换成带有有源总线模板的导轨,下图向您展示了1个有源总线导轨和5个有源总线模板组装后的情形:
硬件要求:
使用普通的S7-300导轨和U型总线连接器是不能实现热插拔功能的,您必须购买有源总线底板,才能实现该功能。另外,您在配置时,必须使用MLFB 6ES7 153-1AA02-0XB0版本以上的接口模块,因为它支持DP协议的DPV1版本,而MLFB IM153-1AA00-0XB0模块是不支持该功能的。目前您能够购买到的IM153接口模块都支持热插拔,只有以前的IM153接口模块不支持热插拔。
注意:
如果想知道您的模块是否支持热插拔功能,您可以在STEP7的HW Config硬件组态窗口中的产品目录里选择对应模块,阅读窗口右下角对该模块功能的描述,或直接阅读"SIMATIC Distributed Peripheral Deviced ET 200M"手册中第9章里的描述内容。
软件要求:您必须在STEP7 5.1版本以上进行配置;
如果您采用S7-400 CPU或S7-400 CP作为DP主站,那么您可以直接在IM153的属性窗口的"Operating Parameters"标签页里配置热插拔功能。 如下图所示:
STEP1:在STEP7的硬件组态窗口的PROFIBUS DP目录中选择相应IM153模块,可以看出该模块支持“module exchange in opration”(热插拔);
STEP2:将IM153模块拖到PROFIBUS总线上;
STEP3:选择I/O模块,插入到ET200M站的各个槽位中;
STEP4:双击ET200M站,打开属性窗口,选中“Replace modules during operation“(热插拔)选项;
STEP5:属性窗口中提供了ET200M站热插拔功能所需的有源总线导轨的订货号;
STEP6:属性窗口中提供了该型号IM153,插入的I/O模块对应使用的有源总线底板的订货号;
除了以上的硬件组态之外,还要向S7-400中下载OB82、OB83、OB84、OB85、OB86、OB87、OB121、OB122等组织块。当ET200M从站上进行模块的热插拔时,中断组织块OB83 ,OB85,OB122被调用。
如果您采用老款S7-300 CPU ,那么您只能够通过安装GSD文件的方式将IM153模块组态成DP从站,并双击IM153,打开它的属性窗口,进行设置来实现热插拔的全部功能。否则您在STEP7的硬件组态窗口中直接将PROFIBUS DP目录ET200M文件夹下IM153模块挂在PROFIBUS总线上,如下图:
从上图可以看出,当你从右侧的PROFIBUS DP树型目录中将IM153-2模块拖到PROFIBUS总线上后,双击点开IM153的属性,“Repalce modules during operation”(热插拔功能)选项为灰色,所以在这种方式下,无法实现热插拔的全部功能,只能实现第1、2两条,不能实现第3、4条功能。
新款的S7-300可以支持“Startup when expected/actual config. differ.”,如下图:
此功能表示,当组态和实际不符时是否启动。如果选择此选项,当插拔模块时,可以实现热插拔定义的第3条功能。但是,在插拔模块时,其他模块通道的I/O会有瞬间的清零然后恢复;该站点瞬间掉站,然后恢复。所以仅以此功能,不能称为严格意义上的热插拔功能。
S7-300 CPU要实现热插拔的全部功能,必须通过GSD文件。首先下载IM153的GSD或GSE文件,在STEP7软件中导入该文件,再在IM153模块的属性窗口中选择热插拔选项,如下图所示:
添加IM153-2模块到PROFIBUS总线上,设置热插拔选项
设置IM153-1模块的热插拔功能选项
注意,GSD文件有DPV0和DPV1之分。但是S7-300的组态时,只有用DPV0可以实现热插拔的功能(如上图),如果用DPV1组态只支持“Startup when expected/actual config. differ.”的功能, 如下图,这是因为 DPV1 "Insert/Remove module"功能,是通过OB83实现的,S7-300不支持OB83。S7-400使用DPV0 DPV1均可。
如果您采用CP342-5模块作为DP主站,那么您可以直接在IM153的属性窗口的"Operating Parameters"标签页里配置热插拔功能。 如下图所示。同样如果使用GSD文件组态,要实现热插拔功能也必须使用DPV0。
除了以上的硬件配置之外,还要向S7-300的CPU中下载OB82、OB86、OB121、OB122等组织块,才能保证当您在ET200M站上进行模块热插拔时,S7-300的CPU保持运行,而ET200M站上其他模块的工作不受影响。同时,当您进行ET200M站上模块的拔出或插入,系统都会调用OB82、OB86,您可以获取OB86和OB82中的参数返回值,得知什么时间是哪一个主站下的哪一个从站上的模块被插拔, 您可以根据系统控制逻辑的需要,在组织块OB82,OB86中编写用户程序,调整I、O的数值,确保进行模块热插拔时,生产机构处于安全运行状态。
您可以在S7-300的用户程序中循环调用SFC13(DP总线诊断功能块),不断获取DP网络的诊断信息,当ET200M从站上进行模块的热插拔时,可以从SFC13的返回数据(在DB块中)获取插拔模块的信息,在用户程序中对返回的诊断信息进行判断、评估后,进行相应的逻辑控制和I/O处理,使生产机构处于安全运行状态;
如果您在ET200M站中使用了参数化的模块(如FM354,CP340等非输入输出的模块),在DP主站通电初始化过程中会对这些模板进行参数化和配置。当您带电拔掉可参数化的模块,再插入后,模块原有的参数就会丢失。除非重新启动DP主站,在主站进行初始化过程中,对这些模块在进行一次参数化和配置,否则这类模块在被拔掉,再插入后,只能够以它的默认参数运行。
如果您期望能侦测到系统中存在一个新的需要进行参数化的模块 ,您必须对模块的状态进行分析,可以通过调用诊断系统功能块SFC13 "DPNRM_DG"来实现,在S7-300/400系统软件手册中的16章4节里说明了该SFC13的用法。ET200M的手册中,在6.4.6节中说明了ET200M从站里模板状态信息的内容和分配。
当你在程序中获知是哪一块模块需要进行新的参数化后,您可以通过调用系统功能SFC56 "WR_DPARM",将CPU中保存的参数信息写入到刚刚被插入到ET200站上的模块,可以在S7-300/400系统软件手册中的7章5节里获取SFC56的用法。
,