2007年度CPA全国统一考试上海考区报名简章
2007-04-18
更新时间:2006-01-14 00:00:00作者:未知
摘要:本文对电器控制线路在微机上模拟运行的核心问题——逻辑表达式分析过程的实现进行论述,简要说明程序设计的主要思路。
关键词:计算机,电器控制,模拟,CAD
一、引言
实现顺序控制的电器控制线路的数学模型是一组逻辑关系表达式,其中逻辑变量代表控制触点,受控元件的电磁线圈为各触点的逻辑函数,逻辑函数值即对应受控元件的工作状态。在电器控制系统运行过程中,各元件及触点状态的变化,使逻辑运算结果随之改变,这种变化的过程实际就是电器控制线路的运行过程。
电器控制系统中元件与控制触点之间的逻辑关系是根据系统控制要求确定的,模拟控制线路的运行过程就是要按一定顺序解算控制系统的数学模型——逻辑代数方程组。在方程组中,以逻辑函数代表运算元件的电磁线圈,以逻辑变量代表元件触点。对同一电器元件来说,其线圈和触点的物理状态是互相关联的,可约定逻辑函数值为“1”时表示线圈得电,同名的原变量取值为“1”,表示动合触点闭合;反之,逻辑函数值为“0”时表示线圈得电,同名的原变量取值为“0”,动合触点断开。
二、电器控制线路模拟运行程序设计的主要思路
1. 表达式分析的基本原理
计算机高级程序设计语言编译系统中,通常配备有字符型变量,一个数学表达式可以以集中或分散的形式存储在这类变量中。将一个具有物理意义或数学意义的函数表达式转换为计算机能够执行的指令的过程,称为表达式句法分析。表达式的分析过程是按严格的代数规则进行的,因为电器控制线路的数学模型是逻辑代数方程,故模拟运行程序中表达式分析依据的即为逻辑代数运算规则。
“递归下降法”是比较常用的表达式句法分析方法,其基本过程就是将一个完整的表达式逐项分解,分解出的成分可以是变量、运算符或子表达式,当根据分解规则识别出被分解出来的某个成分为子表达式时,就要继续进行分解,直至所有被分解出的成分皆为最基本元素为止(所谓最基本元素,即为事先约定的可以直接参与计算的变量和运算符)。
在设计表达式分析程序时,首先要约定变量、运算符及子表达式定界符,笔者根据电器控制线路数学模型——逻辑代数方程的基本运算规则,以及有关电器元件文字符号的标准规定,约定以下一些字符串为合法的逻辑变量:
sb——手动按钮动合触点变量;nsb——手动按钮动断触点变量;
sq——行程开关动合触点变量;nsq——行程开关动断触点变量;
KM——接触器线圈函数;
km——接触器动合触点变量;nkm——接触器动断触点变量;
K——中间继电器线圈函数;
k——中间继电器动合触点变量;nk——中间继电器动断触点变量;
KT——时间继电器线圈函数;
kt——时间继电器瞬时动合触点变量;nkt——时间继电器瞬时动断触点变量;
t——时间继电器延时动合触点变量;nt——时间继电器延时动断触点变量;
YA——电磁铁线圈函数,
约定在上述各逻辑函数及逻辑变量之后可附加0~9数字序号。约定“*”为逻辑“与”运算符,表示线路中的串联连接;“+”为逻辑“或”运算符,表示线路中的并联连接;“=”为逻辑函数赋值符。约定“(”、“)”为子表达式的定界符。
2. 表达式分析的实现过程
设一电器控制线路原理图如图1所示,对应的逻辑关系表达式如下:
K = ( sb1 + k ) * nsb2
其中sb1为K的起始信号,sb2为K的终止信号,k是元件K的自锁触点。当sb1出现时其逻辑值为“1”,在sb2没有出现之前sb2的逻辑值为“0”,nsb2即为“1”,故经逻辑运算K的逻辑值是“1”,即表示元件K得电,随即k的逻辑值由“0”变为“1”,表示自锁触点k自锁闭合。
对这样的逻辑函数表达式的分析过程是从“=”右侧字符串分解开始的,每分解出一个元素就要返回一个记号(称作token),这是表达式分解的核心过程,图2为求取表达式元素分解子程序(get_token)流程图,围绕元素分解过程构成的表达式分析程序(caculate)流程图如图3所示。
图2 表达式元素分解子程序(get_token)流程图
以前面图1为例,进入caculat程序后调用get_token函数,得到函数名K及“=”符号,以下顺序调用level2、level3、leve4子程,判断出得到的是“(”符号时,说明后面是一个子表达式,随即递归调用level2子程,且再依次进入level3、level4子程,这时可得出逻辑变量名sb1极其状态值。其后由level4返回到level3并调用get_token函数,得到“+”运算符后返回。返回到level2后判断出“+”运算符,即要调用get_token函数,得到变量名k及其状态值并执行逻辑或运算,将计算结果存入一暂存变量result中,然后从level2退出。这时会返回到level4子程中且调用get_token函数,得到“)”返回返回到level3子程。在level3中判断出为“*”运算符时调用get_token函数,得到 nsb2及其状态值后执行逻辑与运算,最终将计算结果返回到变量K中,结束表达式分析计算过程。
三、结束语
本文论述了电器控制线路在微机上模拟运行的核心问题——逻辑关系表达式的分解计算。设计这样一个应用软件,可以帮助设计者快速有效地检验设计结果、分析线路潜在问题,可以说是电器控制线路CAD不可缺少的重要环节,同时也是CAD技术大有可为的一个领域。
四、参考文献
卢有杰、吴炜煜,《C语言高级程序设计》,清华大学出版社,1991