在微机上模拟电器控制线路的工作过程
约定在上述各逻辑函数及逻辑变量之后可附加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
- 上一篇:网上教学与实践
- 下一篇:计算机基础课程远程教学系统的设计与实现