论文部分内容阅读
可编程逻辑控制器(PLC)是一种被广泛应用于工业控制领域的反应式系统。目前从业人员编写PLC程序主要依靠个人经验,需求漏洞、程序错误等情况难以避免。针对这一问题,本文从系统规约的规范化和程序自动生成两个方面进行进行探索,以提高反应式系统的正确性。使用规范化的语言对系统需求进行描述,可以显著提高开发过程中需求的可读性和准确性。Matthew B.Dwyer等人提出的规约模式系统(SPS)将反应式系统中常见的场景分析归纳,抽取出特定的模式,以接近自然语言的形式对场景进行描述,在时序表达方面有着较强的能力。但对包含大量实时控制需求的PLC系统,目前使用SPS进行规约描述的研究仍不够完善,描述能力较差,缺乏实用价值。在PLC程序生成领域,现有方法大多要求先对系统进行手工建模,再通过模型生成PLC程序,这对PLC从业人员存在较大难度;或虽然可以直接根据规约,通过模型验证和博弈论的方法,自动生成PLC程序,但所生成的代码规模为指数级,且不符合PLC从业人员的开发习惯,可理解和可维护性较差。本文对PLC系统在实际应用中的案例进行归纳分析,抽取出实时场景中出现的控制模式,将SPS进行了针对性的修改和扩展,提出了新的规约模式系统SPS4PLC(Specification Patterns System for PLC)。SPS4PLC采用接近自然语言的表述方式,有能力对包含时序和实时控制需求的PLC系统进行规约描述。本文给出了SPS4PLC的语法定义、语义解释,并提供了一个问题树,用于交互式地引导使用者选择正确的模式,对控制需求进行描述。本文提出了从SPS4PLC规约到PLC程序的生成方法。针对SPS4PLC中的每个模式,本文给出了符合PLC从业人员习惯的程序生成规则,用于生成单条规约的PLC程序片段;再通过组合规则,对复杂命题、控制冲突和规约的依赖关系进行处理,生成符合系统需求的完整PLC程序。对于PLC程序的生成规则和组合规则,本文给出了正确性证明。本文设计并实现了PLC程序生成工具SpsToPlc,可以根据SPS4PLC规约,生成PLC指令表程序,在生成过程中以交互方式消除冲突,并提供了规约书写引导功能。通过对大量实际案例中出现的控制需求进行分析,我们发现SPS4PLC在实际应用中具有良好的表达能力,通过适当的模式选择,以及组合状态的使用,可以表达PLC教材中常见的对布尔量时序和实时控制的典型案例。基于本文提出的方法,PLC程序生成工具SpsToPlc生成的IL代码符合规约所描述的系统需求,代码规模与规约的规模呈线性关系,且符合PLC开发者的编写习惯,易于理解和维护。