基于逻辑分析的分布式PLC设计

2011-05-21 00:42陈文芗
电子设计工程 2011年13期
关键词:运算符表达式总线

高 琛,陈文芗

(厦门大学 物理与机电工程学院,福建 厦门 361005)

可编程控制器(Programmable logic Controller,PLC)是为工业控制应用而设计制造的,是一项实用性很强的成熟技术,然而,PLC也有一些不足,如:生产商之间的产品不兼容,造成难以构建开放的硬件体系结构;各厂商的编程方法差别很大,技术专有性较强,开发人员须专业培训才能掌握某种产品的编程方法[1]。实际生产中常碰到这样的情况:1)不需要PLC的全部功能,同时要求逻辑控制器的成本较低,这时若采用现成的PLC很难实现低成本的要求;2)要求配置控制器的输入和输出关系比较简单,普通的操作人员就可以就进行输入和输出关系的配置。在碰到这类情况时,如果能有一种新型的逻辑控制能具备结构简单,不需要复杂编程就能工作的话,传统PLC有各自的编程方法,有其技术专有性,普通的操作人员比较难掌握,所以传统的PLC难以到达要求。

本文以工控领域的一些低成本、分布式、易操作应用场合的需求为基础,研究一种基于逻辑分析的分布式PLC实现方案。通过对工业设备信息流数学模型的分析,本系统采用逻辑表达式解析算法实现了PLC[2]的可编程逻辑功能;采用CAN总线拓展了网络功能,实现分布式结构;采用向导式界面,增强其易操作性;通过强化软件功能,裁剪硬件,降低成本以及系统的复杂性。控制器的开关量输入输出配置简单方便,不需要掌握梯形图等编程语言,只需了解输入输出的逻辑关系,即可进行相关的配置。

1 基本原理

一个控制系统可以看成由若干个节点通过总线连接形成的,每一个节点带有若干个输入和若干个输出,图1表示了分布式PLC基本拓扑图。

图1 分布式PLC基本拓扑图Fig.1 Basic topology of distributed PLC

图中编程机是作为编程用的,编程结束后可脱离系统。假设任意一个节点的任意一个输出都能响应任意一个节点的任意一个输入,则这些输出可表达为一个逻辑关系式:

Ujk=fjk(IN11,IN12, … IN1m,IN21,IN22, … ,IN2m, … ,INn1,INn2,INnm)

对于任意一个节点,只要能够完成对该节点输出的逻辑关系式的解析,就能完成他的编程。这样,在设计一个实用的控制系统时,所要做的就是对每一节点的每一个输出的逻辑解析式进行解析,我们称这个逻辑解析程序为该输出点的驱动程序。

为了实现这个思想,节点可按图2设计。

图2 节点设计框图Fig.2 Diagram of node design

如图,节点的工作任务可分为3大块:

1)本节点输入采集,并把采集到的数据打包后通过CAN通讯总线广播到系统的其它节点。

2)CAN通讯管理[3-4],按照一定的节拍将本节点的输入数据广播道CAN总线,接收其它节点广播的数据,定期刷新输入列表。

3)根据输入列表进行输出逻辑解析,解析结构经由驱动电路输出。

2 系统数学模型分析

工业设备信息流模型如图3所示。

图3 工业设备信息流Fig.3 Information flow of industrial equipment

工业设备有各种形式的输入和输出,最典型的就是开关量的输入和输出,我们把输入抽象成INi,输出抽象成OUTi,输入和输出之间必然有某种函数关系。

如图4所示,以某机床为例:此机床主轴由一台笼型电动机带动,润滑油泵由另一台电动机带动。主轴需要在总开关按下并且油泵开动后才能开动;油泵需要在总开关按下后才能开动。逻辑表示为:

主轴电机=总开关+主轴开关+油泵开关;

油泵开关=总开关+油泵开关。

图4 主轴控制器示意图Fig.4 Schematic diagram of spindle controller

若将主轴电机定义为y1,润滑油泵电机定义为 y2,总开关定义为x1,主轴开关定义为x2,润滑油泵开关定义为x3,则:根据以上分析,任何一个输出yi都是输入xi的函数,即

扩展到多个设备联网的系统,此时每个设备都有一组输入和一组输出,则所有输入构成一个输入矩阵X,所有输出构成一个输出矩阵Y,此时的系统数学模型变成如图5结构。

图5 系统数学模型Fig.5 Mathematical model of system

即:

假设有m个设备,每个设备有n个输入,n个输出,则展开变成:

3 运行过程设计

分布式PLC系统在运行过程中的主要功能是完成自诊断、输入处理、执行解析程序和输出处理等工作,实现最终的控制功能。运行过程中,节点间需要保持CAN通信的正常,所以需要进行自诊断判断CAN通信是否正常,如果通信出现异常则停止系统的运行,并发出警报。节点扫描开关量输入的状态,并把采集到的数据打包后通过CAN通讯总线广播到系统的其它节点。为减少CAN总线的通信量,节点只有在检测到开关量的输入状态发生变化时才向其他节点发送新的开关量输入的状态。当输入状态发生变化时,节点根据新的输入列表进行逻辑解析,更新输出状态。

系统的运行流程如图6所示。

图6 运行流程图Fig.6 Flow chart of operation

系统的运行流程包括初始化、自诊断、输入采样、执行解析程序和输出更新等部分。

1)初始化 初始化的主要功能是初始化中断系统、定时器和IO系统等,在内存中规划出程序存储区和数据存储区,设定好正确的运行环境,为运行操作奠定基础。

2)自诊断 自诊断的功能是节点之间的CAN通信是否正常。节点按顺序向CAN总线广播带有本节点地址的标识帧。如果每个节点收到了全部其他节点的标识帧,就说明系统的通信正常。否则,说明CAN通信出现异常,系统就会发出警报,同时停止运行系统。

3)输入采样 输入采样的功能是采集开关量的输入状态,并与前一次采样结果进行比较,如果输入状态发生变化,则将新的输入状态打包后通过CAN通讯总线广播到系统的其它节点。

4)执行解析程序 解析程序其实就是根据控制需要所设置的开关量输入输出逻辑关系。当节点收到新的输入状态时,就表示出状态需要更新。节点就会调用解析程序函数,根据新的输入状态计算输出要求,然后按照新的输出要求更新输出状态。

5)输出更新 当解析程序执行完后,节点会根据执行结果更新输出状态,然后通过隔离电路,向外输出24 V控制信号,从而驱动外部设备完成相应的控制功能。

4 输入采集设计

输入采集的功能是采集I/O端口的输入状态,采集的是开关量信号,如按钮、转换开关、行程开关、继电器触点等开关量的输入信号。在节点的存储器内开辟了I/O映像存储区,用于存放I/O信号的状态,分别称为输入映像表和输出映像表。I/O映像区的大小由PLC的系统程序确定,对于系统的每一个输入点总有一个输入映像表的某一位与之相对应,对于系统的每一个输出点也都有输出映像表的某一位与之相对应。在输入采集阶段,节点将采集到的输入信号状态存放在输入映像表对应的位上,经过逻辑解析之后将,运算结果存放到输出映像表对应的位上。

I/O映像区的建立使PLC工作时只和存储内有关地址单元内所存的状态数据发生关系,而系统输出也只是给内存某一地址单元设定一个状态数据。这样加快了程序执行速度,而且使控制系统与外界隔开,提高了系统的抗干扰能力。

输入采集按一定的周期循环采集I/O端口的输入状态,并把采集到的数据打包后通过CAN通讯总线广播到系统的其它节点。为了减少CAN总线的通信量,节点只有在检测到输入状态发生变化时才将新的输入状态数据打包,通过CAN总线广播给其他节点,通知其他节点I/O输入状态有发生变化,要进行输入映像表的更新。

5 输出逻辑解析

5.1 逻辑表达式的转换及求值

表达式有3种表示形式:前序式、中序式和后序式。人们已经习惯了的表达式是中序式,即运算符放在两个操作数之间,用户进行用户程序编程时所用逻辑表达式就是中序式[5]。

但对于计算机而言,中序式并不适合于求值计算,所以在编译系统中往往将中序式转化为前序式或后序式,然后对转化后的前序式或后序式进行求值。本文是将中序的逻辑表达式转化为后序式,然后将后序式进行存储。在执行用户程序时,根据开关量输入状态,对后序式进行求值,得出开关量输出状态。

中序式转化为后序式[6-7]是基于堆栈进行的。转化过程需要用到一个工作栈OPERATOR,用来存放操作符。和一个数组RESULT,用来存放转化结果。中序式转化为后序式的算法是:

1)创建并初始化工作栈和数组:OPERATOR和RESULT;

2)从左到右逐个字符的读入中序表达式;

3)如果字符是数字,将数字字符存到RESULT中;

4)如果是“(”,直接存放到 OPERATOR 中;

5)如果是“)”,在遇到“(”之前,循环弹出 OPERATOR 中的运算符,并存放到RESULT中;

6)如果是运算符,循环将OPERATOR中的运算符弹出,直到该运算符比OPERATOR栈顶的运算符优先等级高或OPERATOR为空时,将该运算符存入OPERATOR中;

7)如果中序表达未扫描完成,则跳到3)继续执行;

8)如果中序表达扫描完成,OPERATOR中还有运算符,则依次将运算符弹出,存入RESULT中,直到OPERATOR为空。此时,中序表达式就转化为后序表达式。

如表1所示的就是将中序逻辑表达式 (1&2|3)&4转化为后续表达式的过程。

表1 中序式转后序式实例Tab.1 Instance of infix expression into postfix expression

中序表达式转化为后序表达式后,将后序表达式进行存储。在执行用户程序时,对相应的后序式进行求值,即可得出开关量输出状态。对后序表达式求值只需要一个运算数栈OPERAND,后序表达式求值的算法是:

1)创建并初始化运算数栈OPERAND;

2)使用循环从左往右逐个扫描后序表达式;

3)如果是运算数,则存入到OPERAND中;

4)如果是运算符,则从OPERAND中弹出所需的运算数,执行相应的逻辑运算,将运算结果再存入OPERAND中;

5)后序表达式扫描完成后,OPERAND中的值就是后序表达式求值的结果。

如表2所示的是对后序表达式123&|4&进行求值的过程,设各个运算数的逻辑状是:1=1,2=0,3=1,4=0。

表2 后序式求值实例Tab.2 Instance of postfix expression evaluation

5.2 解析程序的执行

跟解析程序紧密相关的有两张关键的表:输入映象表和任务表(如表3和表4)。输入映象表记录了系统所有开关量输入的状态,任务表则映射了每个开关量输出跟所有开关量输入的逻辑关系,每个开关量输出都有一张跟自己相对应的任务表,表里存储的是已经转化成后序表达式的用户程序。

表3 任务表Tab.3 Task table

表4 输入映象表Tab.4 Input image table

任务表和输入映象表中,OUT1,OUT2,……,OUTn表示对应编号的开关量输入,IN1,IN2,……,INn表示对应编号的开关量输入,OP1,OP2,……,OPn表示逻辑运算符。编号为n的开关量输入和所有输出的关系可用表达式表示为:

OUTn=F(IN1,IN2,……INn)

式中F()表示的开关量输出和开关量输入的逻辑关系。

对开关量输入输出的逻辑关系进行配置时,是通过输入相应的逻辑表达式实现的。如想设置OUT1的状态由IN1和IN2相与的结果决定的,则可输入表达式OUT1=IN1&IN2,设IN1=1,IN2=0,则OUT1=0。如图7所示为用户程序的执行的框图。

图7 解析程序执行框图Fig.7 Implementation block diagram of analysis procedure

6 结束语

本文针对传统PLC的一些局限性,提出一种以工控领域的一些低成本、分布式、易操作应用场合的需求为基础的基于逻辑分析的分布式PLC实现方案[8-9],实现了开关量输入/输出、模拟采集和输出控制等功能。基于对工业设备信息流数学模型的分析,本系统采用逻辑表达式解析算法实现了PLC的可编程逻辑功能;提供向导式界面,增强其易操作性;采用CAN总线拓展了网络功能,实现分布式结构。在一些要求成本低和操作简便的工业控制场合,具有广阔的应用前景。

[1]朱贤德.基于ARM嵌入式系统软PLC的研究[D].北京:北京工业大学硕士论文,2006

[2]高春霞,张磊.基于C8051F单片机的嵌入式PLC系统研究[J].电气自动化,2009,31(3):55-65.GAO Chun-xia,ZHANG Lei.Research on embedded PLC system based on C8051F[J].Electrical Automation,2009,31(3):55-65.

[3]高红玉,徐建成,曾成奇.基于ARM的CAN总线智能节点的设计[J].电子应用技术,2005(4):24-26.GAO Hong-yu, XU Jian-cheng,ZENG Cheng-qi.The design of CAN bus intelligence node based on ARM[J].Application of Electronic Technique,2005(4):24-26.

[4]曹晓丽.将中缀表达式转换为前缀表达式的三种方法[J].甘肃科技,2006,22(5):72-74.CAO Xiao-li.Three methods of converting infix expression to prefix expression[J].Gansu Science and Technology,2006,22(5):72-74.

[5]何云东,黄旭.复杂表达式解析和计算的研究实现[J].中国科技信息,2009(8):35-38.HE Yun-dong,HUANG Xu.Research on analysis and calculation of complex expression[J].China Science and Technology Information,2009(8):35-38.

[6]廖常初.PLC应用技术问答[M].北京:机械工业出版社,2006.

[7]资讯小组.数据结构C语言版[M].北京:中国铁道出版社,2002.

[8]张明.PLC控制系统在火力发电厂的应用及注意事项[J].现代电子技术,2010(23):177-180.ZHANG Ming.Application and Precautions of PLC Control System in Power Plant[J].Modern Electronics Technique,2010(23):177-180.

[9]孙德辉,任振东,史运涛.基于研华WebAccess热力系统优化控制与远程监控的实现[J].现代电子技术,2009(04):50-52.SUN De-hui, REN Zhen-dong, SHI Yun-tao.Implementation of optimal control and remote monitoring system of the thermal system based on WebAccess[J].Modern Electronics Technique,2009(04):50-52.

猜你喜欢
运算符表达式总线
老祖传授基本运算符
一个混合核Hilbert型积分不等式及其算子范数表达式
表达式转换及求值探析
用手机插头的思路学习布尔运算符
浅析C语言运算符及表达式的教学误区
基于PCI Express总线的xHC与FPGA的直接通信
机载飞控1553B总线转以太网总线设计
CAN总线并发通信时下位机应用软件设计
多通道ARINC429总线检查仪
表达式求值及符号推导