APP下载

基于PLCopen Safety的数控系统安全PLC软件系统*

2022-04-26刘武垚朱志红吕晓凡刘东辉

组合机床与自动化加工技术 2022年4期
关键词:功能块状态机数控系统

刘武垚,朱志红,,吕晓凡,刘东辉

(1.华中科技大学国家数控系统工程技术研究中心,武汉 430074;2.武汉华中数控股份有限公司,武汉 430223)

0 引言

现代数控系统的功能越来越复杂,对电气系统的依赖程度越来越高,在带来高效益的同时也带来了更多的失效风险。安全相关系统监视生产过程的状态,在危险事件发生时执行相应的安全功能,避免危险事件对人身、设备和环境造成伤害或减轻其后果造成的伤害。安全PLC负责处理安全设备的逻辑功能,是安全相关系统的核心单元。安全PLC的失效率分为硬件随机失效和系统性失效。硬件随机失效的降低主要在进行硬件设计时采用自诊断和冗余技术来降低,系统性失效主要需要合理的系统设计来避免。

目前国际上西门子数控系统配备了符合功能安全SIL2等级的安全系统,其安全系统的开发工具和开发平台都闭源,使用需要授权;国内针对功能安全的研究还处于理论追踪阶段,国产数控系统的安全系统还没有产品问世[3]。

为了规范和简化符合功能安全标准的PLC开发流程,国际组织PLCopen 定义了以IEC61131-3编程规范为基础的安全标准—PLCopen Safety[2]。本文在Beremiz开源开发平台中使用顺序功能图实现了PLCopen Safety规定的安全功能块并将其集成到Beremiz中,方便后续安全PLC的开发工作。针对数控机床设计了安全PLC的软件系统,最后对系统的功能进行了实验验证。

1 PLCopen Safety 安全标准

1.1 Beremiz开发平台

IEC61131-3标准是软PLC技术的基础,规范了PLC编程中的编程语言和公共要素,公共元素部分规定了软件模型、数据类型和变量、程序组织单元等[5]。目前市场上符合IEC61131-3标准的软PLC商业开发软件有CoDeSys,TwinCAT、MultiProg和STEP7等。其中CoDeSys和TwinCAT中集成了PLCopen Safety功能块库(SFB),可以用来开发符合功能安全的软PLC,但其是商用软件并不开源,使用需要授权。Beremiz是免费的开源软PLC开发平台,用户可以在其基础上进行定制和拓展,相对于其他PLC编程软件具有很好的开放性和可拓展性[5]。所以选用Beremiz作为开发平台,使用SFC实现PLCopen Safety所定义的功能块,并集成到Beremiz开发环境中。

1.2 PLCopen Safety标准

图1 集成安全应用的 系统软件架构

IEC61131-3标准只涉及到功能应用方面,并没有定义安全应用相关的编程规范,为了将功能安全方面应用集成到IEC 6131-3编程环境的开发平台,PLCopen定义了以IEC 61131-3编程规范为基础的安全标准——PLCopen Safety[1]。PLCopen Safety标准建议的集成安全功能应用软件架构见图1。

标准为了实现不同的功能将应用分为安全应用和功能应用,功能应用实现控制系统的正常任务,安全部分负责对功能应用监控实现安全相关控制。标准为了明确区分安全信号和标准信号定义了一种安全数据类型(safety data type)。功能应用的输入输出变量使用IEC61131-3定义的变量类型,安全应用的输入输出变量则采用安全数据类型。

1.3 安全功能块

图2 功能块Equivalent接口参数

PLCopen Safety定义了20个安全相关的功能块,每个功能块可以实现不同的安全功能,例如IEC 61800规定的安全速度监控(SLS功能)、三种急停等等。下面以较简单的功能块Equivalent为例描述安全功能块的架构[1]。功能块Equivalent用来监控两路输入信号的状态是否一致;若两路输入一致时输出信号为真,两路信号输入不一致时输出为假,分别对应安全与不安全状态,这与安全设计的“负逻辑”观念相符合。会开启一个定时器,两路输入信号不一致时,时间溢出时两者还不一致则认为系统处于不安全状态,输出为假,同时设置Error信号和DiagCode代码。该功能块的接口参数如图2所示。

Equivalent功能块的状态机图如图3所示, Equivalent功能块共有Idle、Init等8个状态,在状态机中用大圆圈表示,圆圈中的4位状态码用来标志不同状态。

各个状态之间的有向带箭头曲线表示状态之间的转移,曲线上的变量表达式表明转移条件。带有数字的小圆圈则表示转移的优先级,其中“0”级优先级最高。状态机图根据输出值和状态转移划分为三部分(以虚线隔开),位于顶部状态时功能块不活动,没有安全输出;位于中间状态时位于功能块属于安全状态,安全输出为FALSE,表明此时功能块有安全请求;位于底部时功能块属于正常状态,安全输出为TRUE。

图3 功能块Equivalent状态机图

2 安全PLC软件系统的开发

2.1 安全功能块库实现

安全PLC的安全完整性很大程度上收受到软件质量的影响。系统的安全完整性涵盖硬件安全完整性和系统安全完整性,其中软件错误或者缺陷是影响系统安全完整性的重要因素之一。IEC61508标准建议安全PLC的应用软件采用有限可变语言(limited variability language,LVL)实现安全系统的应用程序。顺序功能图(SFC)编写的程序逻辑清晰直观,便于调试,只对活动步进行扫描,可缩短程序执行时间,因此SFC适合用来开发安全功能块。

由PLCopen Safety功能块内部状态机图可知,其具体实现应该包括状态代码和转移两部分,状态代码对输出变量赋值,转移代码实现变量的判断和跳转功能。SFC编程语言包括步、转移、动作、跳转分支等基本元素,很合适用来实现安全功能块的逻辑。SFC基本元素如图4所示。

图4 SFC基本元素

步元素和图5中的状态相对应,每一步的动作也和状态机中每个状态的动作对应,转移分支和转移条件与图3中的有向箭头对应,表明了不同状态间的转移,每个分支上的数字对应了转移的优先级。

使用SFC实现的Equivalent功能块如图5所示,其逻辑功能和图3一致,其他功能块的实现类似。

图5 Equivalent功能块实现细节

2.2 安全PLC软件设计与实现

2.2.1 软件架构和模块划分

为了降低系统耦合,保证安全系统的安全完整性,将数控机床的工作模块系统和安全模块系统分开,为了隔离安全信号和普通信号,并未将安全PLC接入总线系统,双方通过IO板卡实现数据交互。安全模块与数控系统的示意图如图6所示,其中灰色部分即为安全相关部分。安全模块系统一般由安全相关传感器,安全PLC和执行器组成。

图6 系统的总体框架

由图6可知安全PLC的工作是负责处理机床运行过程中的安全请求,对机床的正常工作并不干涉。安全PLC的软件部分使用PLCopen Safety功能块实现,配合驱动器中集成的安全程序一起实现对机床的安全控制,处理的手段是让设备处于安全运行状态或者停止运动设备以保证工人的安全。本文依据PLCopen Safety定义的安全软件架构进行安全应用和功能应用隔离设计,其架构如图7所示。

图7 安全PLC软件架构

由图7可知数控系统安全PLC软件主要由4个模块构成,其中Model Manage模块主要负责处理读取处理外部传感器信号结合机床的运行状态对安全PLC进行整体的管理;Positon Monitor模块负责对机床各轴的位置进行监控,当发生非期望的位移时对机床进行操作;Speed Monitor模块负责对在运行中对机床各轴的速度进行监控,针对不同的运行运行状态设置了不同的最大速度,发生超速时进入安全停模块;Safestop模块负责机床的安全停止操作,包括三种安全停止操作。

2.2.2 安全PLC软件系统设计与实现

为了降低硬件失效带来的危险,安全系统外接的安全设备多数是两路输入,例如急停按钮信号,在系统中需对两路信号进行监控,表中的信号接口只是最基础的信号接口,还可根据需要附加其他安全设备。

本文设计的系统安全系统的功能状态机图如图8所示,安全系统通过读取输入信号进入不同的工作状态,对急停按钮和安全门的两路输入使用Equivalent模块进行监控,当急停信号输入为真并且系统运行正常时,会进入速度监控模式,根据不同的模式会有不同的速度极限值;当速度监控模式发现速度超限并且在规定时间内不能减速到目标速度时,会触发急停模式;当急停信号输入为假时,例如工人按下急停按钮时,会进入急停模式,外部急停信号会直接触发安全停止0;内部急停信号会触发安全停止2;机床安全门的开关信号和操作模式的不同都会影响模式变换。

图8 系统状态机图

安全停功能是安全系统应对危险状况的常用手段,依据IEC61800将安全停功能分为三等级,本文设计的安全停功能的状态机图如图9所示,将三种安全停止功能配合使用实现安全控制。安全停止2和安全停止1可以通过复位信号自动恢复,STO则需要手动重启。安全停止2正常会触发位置监控,如果此时位置超出规定阈值则会触发安全停止1;当安全停止2功能发生错误,例如Reset信号错误或者监控时间内未得到反馈信号时也会直接触发安全停止1。安全停止1最终会触发STO功能,使轴处于自由状态。

图9 安全停功能的状态机图

基于安全功能块库实现上述逻辑功能的部分程序如图10所示。

3 实验测试

图11 安全功能测试软件

由于支持安全功能的驱动器尚在开发流程中,故采用LabVIEW开发上位机软件用来测试安全PLC的功能。LabVIEW是美国国家仪器(national instrument,NI)推出的专为测量、测试和控制应用而设计的系统软件,采用图形化的编程语言代替文本进行编程,使仪器的数据采集和测试更加简单,快捷,是计算机测控领域常用的工具,能够显著缩短开发周期。本文采用LabVIEW开发的测试软件如图11所示。

上位机测试软件与安全PLC通过串口通信下发指令对安全PLC进行功能测试。执行器未在规定时间内反馈信号,此时系统会触发安全停止2,执行器返回安全停止2的反馈信号后系统进入位置监控的安全状态。图12的测试时序图如图13所示,安全PLC能够根据信号做出正确的反馈,其它测试环节不再赘述。

图12 测试用例顺序图

图13 测试用例时序图

图10 安全系统部分程序

4 结论

本文基于PLCopen Safety标准在Beremiz平台中开发了安全功能库。针对数控系统设计了安全PLC的软件系统架构,并基于安全功能块库实现了该系统。最后对安全PLC的功能进行了测试,验证了安全PLC软件的功能。为基于PLCopen Safety标准开发安全PLC软件系统提供了思路,后续将继续研究安全总线在安全PLC的应用,实现安全系统与基础功能系统的集成化。

猜你喜欢

功能块状态机数控系统
基于FPGA的高性能电离层测高仪数控系统设计
FPGA状态机综合可靠性探究 ①
基于有限状态机的交会对接飞行任务规划方法
如何编写200SMART程序
基于PLCopen的六轴工业机器人运动控制功能块设计
基于Spring StateMachine的有限状态机应用研究
自定义功能块编程在反渗透膜自动清洗设备中的应用
Ovation系统FIRSTOUT和FIFO跳闸首出比较
基于以太网的计算机与数控系统通信技术研究
华中数控在CIMT 2015上展示3C钻攻生产线