基于有限状态机的PLC程序设计方法

作者:广州业科电气技术有限公司 | 来源:广州业科电气技术有限公司 | 日期:2018-04-12 | 浏览:879

可编程序控制器(Programmable Logic ControllerPLC),其本质是一个微型计算机,在现代化工厂中大量采用PLC完成控制系统的逻辑控制[1]。根据是否与原来的状态有关分为组合逻辑电路和时序逻辑电路,时序逻辑电路的输出取决于当前的输入和原来的状态[2]

 

根据存储电路的状态变化时刻,时序电路分为同步时序电路和异步时序电路。同步时序电路的所有触发器的状态变化都在同一脉冲作用下发生[3]

 

1有限状态机

 

时序电路是状态依赖的,故称状态机[4]。因输入和输出都是有限的,故称有限状态机。有限状态机理论已经形成了一整套完整的体系,根据输出信号是否与输入信号有关,状态机分为Moore状态机和Mealy状态机[5]

 

状态机可以归纳为4个因素:现态、次态、动作、条件[6]。其中,次态是指条件满足后执行动作要迁移的新状态。次态是相对于现态而言的,次态一旦被激活,就转变成新的现态

 

作进一步归纳总结,现态次态可以统一起来为状态条件动作可以统一起来为迁移条件,并可以用函数的表示方法更加直观的认识其中的关系:

状态:{现态×迁移条件次态}

 

状态机采用的表示方法有许多种,在此采用的是表格和图形的表示方法[7]

 

2同步时序电路

 

异步时序电路进行分析就必须考虑每个状态时刻触发器与时钟信号的关系[8],对于复杂性输入的电路来说,其设计的工作量较大,并且各存储单元的状态转换因受到时钟信号触发而存在时间差异从而可能造成输出状态短时间的不稳定,而这种不稳定有时可能是无法预计的,从而电路设计的复杂性以及调试的工作量。

 

时钟同步状态机所有触发器的状态更新是在同一时刻[9],其输出状态变化的时间不存在差异或者差异绩效,在时钟脉冲两次作用的间隔期间,从触发器输入到状态输出的通路被切断,也不会改变个触发器的输出状态,所以很少发生输出不稳定的现象[10]

 

更重要的是,其电路的状态很容易用固定周期的时钟脉冲边沿清楚地分离为序列步进,每一个步进都而已通过输入信号和所有触发器的现态单独进行分析,从而有一套较系统、易掌握的分析和设计方法。

 

对于PLCCPU启动后,系统将循环执行主程序OB1,并可在执行过程中调用其他逻辑功能块如FCFBDBSFBSFC[9]。将有限状态机理论应用于PLC程序设计,关键在于分析整个系统的状态集和迁移条件、现态迁移到次态的具体逻辑、迁移条件与系统的输入之间的关系。

 

状态集包含了PLC系统的起始状态、现态与次态,输入对应于PLC系统的状态转换函数的动作过程,输出对应于整个PLC系统的状态与动作的响应。复杂型输入状态的PLC程序设计的基本思路如图1所示。

 

 

程序状态流程图是程序分析中最实用的分析技术,它是进行程序流程分析过程中最基本的工具。利用程序流程图与状态机视图的相结合可以有效地描述PLC系统中状态、输入、状态转换之间的相互关系。

 

 基于有限状态机的PLC程序设计的应用

 

本文以一个无浮点四则运算的计算器PLC程序设计为例,分析有限状态机理论在复杂PLC程序设计的应用。本计算器包括数字键0~9,操作码+ - * / = 、清零键C在内的16个输入按键。

 

计算器程序的复杂性在于:1、输入操作数的程序设计;2计算时输入按键顺序的随机性强,并且输入的历史有关。而利用有限状态机理论分析该计算器程序的难点是如何合理划分整个系统的所有状态和输入属性从而减少工作量。

 

对于输入操作数的程序,可做个一个FC的函数块,命名为DATA_IN,其输入操作数程序的核心是buff=buff*10+KeyData,其中buff代表按键缓冲区,KeyData为数字键。

 

因输出与输入的历史有关,故只采用组合逻辑电路的设计方法不能解决记忆的问题,同样因异步时序逻辑电路设计的复杂性和不稳定难调试等缺点会给本程序设计增加困难,故采用同步时序逻辑电路的设计方法指导该计算器的程序设计。

 

PLC主程序OB1扫描是自上而下、自左而右循环扫描执行的,故要使得系统的状态在一个扫描周期只改变一次,应在主程序OB1不应设计成一个触点驱动两个状态的情况,避免程序在一个扫描的过程中因一个触点驱动状态寄存器改变引起后面的程序运行的混乱从而减少程序设计的复杂性[11]

 

本文利用有限状态机理论分析整个计算过程的所有状态集和动作输入,能够全面的枚举所有的计算过程。显然,无浮点四则运算的计算过程通常为:ab=c,其中a表示第一操作数OP1,?表示操作OP低压成套设备引弧试验新旧标准的差异研究

下一篇:电机的极数什么意思?2极,4极,6极,8极的区别是什么?
分享到: