张绍军 杨 曦
(1.西门子工厂自动化工程有限公司西安分公司 西安710065;2.西门子中国有限公司西安分公司 西安710065)
随着对机床安全性能要求的提高,为了满足ISO13849-1和IEC62061中的规定,越来越多的高端机床开始配备 SINUMERIK840D数控系统的安全集成功能,使用安全集成功能可以在增加很少成本的情况下大幅度地提升机床安全性能。由于安全集成功能存在多路比较关系,出现此类报警后往往报警内容较多,其中又可能包含其它种类的报警,使得报警信息看似复杂,这就需要合理的思路来分析此类问题,理解报警背后的实际含义,找到产生报警的最根本原因和解决方法。本文从安全集成功能原理出发对此进行阐述,为简化叙述控制篇幅,以下以国内常见的840DPL(以下简称840D)安全集成功能为例介绍,840DSL安全集成功能的思路也是基本相同的。
安全集成功能主要分为两大类:安全基本功能Safe Basic Function(以下简称SBF)和安全可编程逻辑功能Safe Programmable Logic(以下简称SPL)。
SBF功能是基于驱动的安全功能。这些功能主要体现在对轴的速度、位置的检测和控制上,依靠伺服驱动来实现。包含:安全刹车(SBR),安全静止(SH),安全操作停止(SBH),安全减速(SG),安全软限位(SE),安全软凸轮(SN),安全刹车管理(SBM)等。
SPL功能是基于NC的安全功能。主要体现在对机床各种安全防护装置的逻辑关系的检测和控制,例如安全锁、驱动使能继电器等,此检测和控制依靠NC-CPU和PLC-CPU的内部逻辑运算来实现。
目前安全集成功能在磨床类、齿轮类机床、高速多轴加工中心类机床上应用越来越多。
具体到不同的机床、不同的轴会有不同的安全功能选择。某类型的机床,完全可以只使用SBF而不用SPL,或者两者都用。而同一台设备的不同的轴,也可以有的轴使用安全集成功能,而有的轴不使用,使用安全集成的若干轴也可以分别选择不同的SBF功能。
对于SBF,这个功能选择就在轴数据MD36901(轴安全功能使能)和驱动数据MD1301(驱动安全功能使能)里设置。例如:某个轴的安全功能参数MD36901=383H(0011 1000 0011)。根据这个不同位的定义,此轴使用了以下安全功能:SG(安全减速),SE(安全软限位),SN(安全凸轮),以及SN1+(安全凸轮正位置)和 SN1-(安全凸轮负位置)。即这个轴必须要受到参数设置的安全软凸轮和安全软限位的限制,在参数规定的位置进行安全减速。由于不同的轴的工艺特点不同,并不是所有的轴都一定会有相同的功能。分析安全集成报警,首先要关注这两个参数的设置含义。
而对于SPL,体现在两个安全程序的独立运行和比较。NC-CPU里运行SAFE.SPF安全子程序,PLC-CPU运行PLC程序对DB18安全数据块和轴数据块进行操作。两者运行结果之间存在交叉比较过程,只有逻辑一致才算安全,逻辑不一致就会发出SPL类的安全报警。
安全功能生效后开始循环检测,当检测到发生上述各种非安全因素,则会触发停止安全停止操作(Safe stopping process),出现诸如“STOP A”,“STOP F”等停止动作,各种“STOP”的目的就是尽快地切断驱动使能使轴尽快停下来,具体含义在此不再赘述。“STOP…”是某不安全因素导致的结果而不是原因,分析报警时不必过多考虑它,直接找引起它的原因。这个原因既可能是来自于SBF,也可能来自于SPL,或者两者兼而有之。
对于SBF类功能,其功能的设计的出发点是:普通NC系统只存在一个生效的速度环和一个生效的位置环,但具有安全集成功能的NC系统存在两个生效的速度环和位置环。分别是 NCK的速度位置环和和驱动的速度位置环,两个环的数据要进行实时比较。对于第二测量系统生效的轴来说,安全集成诊断信息中 NCK位置数值来自于第二测量系统(如光栅尺等),驱动的位置数值来自于第一测量系统(如电机编码器),如图1所示。这两者的绝对位置,以及两者之间的误差必须在一个允许的范围之内,否则就会有SBF类的报警,此类报警一般只和轴的位置速度有关,通俗地说就是“位置和速度的误差变大了”。
图1 安全集成位置诊断信息
一般地,如果机床的机械传动链和位置反馈元件正常,则第一第二测量系统的反馈应该是非常接近的,其误差应在非常小的范围之内。而一旦绝对位置超差,或者两者之间的误差过大,那么基本上可以肯定是上述环节哪里出现了问题。如机械传动链出现较大误差,例如间隙、打滑等,或者测量系统故障,如光栅尺/外置编码器的硬件误差和缺陷等。
举例:某磨床的一个进给轴比较频繁地出现“27001 X1交叉校对错误,代码3,NCK xxxxx 驱动 xxxxx”(xxxxx表示数值)的报警,在安全集成诊断信息的“安全实际位置”中发现 NCK的数值和驱动的数值有比较明显的差异。报警含义即这个误差超过机床数据MD36942和MD1342设定的允许范围。经过检查,发现是电机和丝杠之间的同步齿型带的个别齿有明显地损坏,如此则光栅尺反馈的该轴溜板的实际位置相对给定值移动距离不足,两个测量系统数值之间的误差超过了安全位置公差的设定,于是有“27001”报警,更换齿型带后问题解决。
在没有安全集成功能时,对于全闭环的轴,由于只有第二测量系统反馈位置有效,对于两个测量系统之间的不合理差异是不判为异常的,随着情况的不断恶化,直到传动部分确实出现了较大的缺陷才可能会有报警产生。而由于SBF引入了两个测量系统反馈之间的交叉比较,可以及时地发现 NCK和驱动分别反馈带来的不合理差异,能够提前预警传动链的问题,而这种预警功能对于保护精密传动零部件显得尤为必要,因而提升了机床在传动方面的安全性能,最终可以延长机械部件的使用寿命。
对于SPL类功能,其功能设计的出发点是:对于一个和安全有关的逻辑的判断和执行,如果在PLC里和NC里同时执行,增加冗余设计,将极大地提高安全可靠性。因此,可在PLC里按照传统思路处理某个安全信号的逻辑,同时将这个逻辑完全照搬到NC的SAFE.SPF子程序中里也循环运算,即可保证同一个安全逻辑在PLC和NC里被同时执行。如此,则对于安全装置的信号,就产生了“数字信号双胞胎”的要求。除了传统的PLC输入输出端,再增加一路NCK的输入输出端(简称“NCK I/O”,如图2所示),由PLC和NC分别对安全装置的状态进行逻辑关系运算,运算的内部信号称之为“安全相关输入输出信号”(简称SGE/SGA),逻辑运算后进行两者之间运算结果的对比,逻辑关系对了就认为安全,逻辑关系不对就认为不安全,会发出安全报警,这就是SPL的基本原理。
图2 “NCK I/O”示意图
因为存在“数字信号双胞胎”的要求,那么也就要求这些安全装置(如急停开关,防护门锁,使能继电器等)要求有双路输入输出,信号既接入PLC的I/O端子中,也同时接入NCK I/O端子中(连接在NCU总线上的DMP模块),如图3所示,急停按钮输入既接入了PLC输入模块的I76.0地址,又接入了NCK输入模块的E1地址。
图3 双路输入示意图
NCK I/O端地址在SAFE.SPF程序中被预先定义为NC变量,然后在其中进行变量的逻辑运算,而PLC I/O端的逻辑运算在PLC程序的语句中,如同一般的PLC语句。两者都需要设备制造商根据安全装置的逻辑关系进行编写且两者逻辑关系必须完全相同。
例如:在PLC中如下一条语句
在SAFE.SPF程序中表达为:
N100 IDS=10 DO OUT4 =IN1 and IN2
常用NC逻辑指令和PLC指令对照表见图4。
图4 NC逻辑指令和PLC指令对照表
PLC是循环运行的,运行后产生 PLC方面的SGE/SGA信号,SAFE.SPF是在插补时钟周期内循环运行的子程序,运行后也产生 NCK方面的SGE/SGA信号,系统实时交叉对比这些信号,如果对应的这两个信号不一致,则会出现例如“27004”等报警。
NCK I/O端子中,输入端通过机床数据MD10390、MD36970到MD36979的定义,从一个物理实体端子最终转为NCK内部的SGE/SGA信号。输出端则是通过机床数据 MD10392、MD36980到MD36990的定义,从一个 NCK内部的 SGE/SGA信号最终转化为实体的物理输出端子。SAFE.SPF内的NC变量在这个过程中起到中间桥梁的作用。
PLC的I/O端子中,输入端通过实际的输入端子地址赋值给 PLC 的 DB18数据块的DB18.DBX38.0_DBX45.7以及 DB18.DBX62.0到DB18.DBX69.7转变为驱动内部的SGE/SGA信号,并可以对轴数据块进行操作,输出部分则是通过从DB18.DBX54.0到 DB18.DBX61.7以及DB18.DBX46.0到 DB18.DBX53.7,从一个驱动内部的SGE/SGA信号转化为实体的物理输出端子。
一般当出现如“27004”等SPL报警时,报警信息会提示出现NCK逻辑和PLC逻辑结果不同的SGE/SGA点。必须注意:这个报警并不直接指出实际的物理端子状态的不同,而是指出SGE/SGA内部信号状态的不同,而SGE/SGA信号又是内部SAFE.SPF子程序和PLC程序分别处理得出的结果。分析过程所要做的就是从报警的 SGE/SGA信号找到实际的物理端子。从方便查找的角度,一般从PLC程序中进行查找,这是因为在PLC中查找地址更为方便,当找到对应数据块某位的PLC地址时,再对照电路图纸找另一路NCK I/O的端子就很容易了。
例如:某机床的几个轴同时报警“27004 difference safe input SS, NCK SPL 01.01.05=0,drive DBX22.1=1”,首先从报警含义得知SS表示SGE中的“Safe operating stop(SBH)”,从字面上看NCK的SGE中的“01.01.05”为0,即NCK的SAFE.SPF子程序运行结果是“要求安全停止”,而PLC的SGE中的“DBX22.1”为1,即PLC的逻辑运算结果要求“取消安全停止”,互相矛盾因此报警。查找NCK的SGE中的“01.01.05”要对照机床数据MD10390、MD36970等进行翻译,并查找SAFE.SPF内的逻辑判断语句,这个过程难度较大,为快速查找一般从PLC程序中入手。
在 PLC中轴的“SBH”的接口信号为DB3x.DB22.1,因此在 PLC 程序中搜索DB3x.DBX22.1,搜索出如下语句:
根据此逻辑可以看出,来源可能和 I46.1或者I46.2对应的硬件有关。检查发现是I46.2端子对应安全门锁的中到NCK端(DMP模块的E15端子)的触头接触不良造成 NCK端的输入点没有闭合,NCK端和PLC端两者状态不同造成的报警。
整个过程总结:机床防护门安全门锁的“闭合到位”有两路输入,分别进入NCK的输入端子(E15)和PLC的输入端子(地址I46.2)。NCK端子对应定义了一些NC变量,这些变量在SAFE.SPF子程序中进行逻辑运算,由于E15这个端子信号状态不正确,SAFE.SPF逻辑运算结果是“要求安全停止”,而PLC端的信号状态是正确的,其逻辑运算结果要求“取消安全停止”,两者结果矛盾,于是出现“27004”报警。也由此可见,由于安全集成功能存在可靠性设计中的冗余双路比较,很大程度上防止了安全装置状态已经不好了使用者却浑然不知的情况,机床对于操作人员的安全性能得到了大幅度地提升。
SINUMERIK840D的安全集成功能比较丰富,由于篇幅限制无法更多地展开,本文从安全集成功能原理出发,解析功能本身的设计思路,从案例分析再反推其工作流程,能帮助应用人员快速地找出根本原因。如需更好地理解安全集成功能的含义和具体参数含义,以及编写NC/PLC安全程序,请参考《840D安全集成功能手册》和《840D机床数据和PLC接口信号手册》。