(二)、背景技术
在数字电子技术的有关文献中,一般都要介绍逻辑代数的基础知识。其中的主要内容为逻辑代数的公式、定理、表示方法,和十分重要的逻辑函数的化简。对于逻辑代数的运算,只是借助人们熟悉的十进制运算,解释二进制数的编码和计算方法,非常易于理解和掌握。对于数字电路而言,电路本身就包含了“计算”的全过程。例如,在组合逻辑电路中,输出(即:逻辑运算结果)仅取决于当时的输入信号;在时序逻辑电路中,输出不仅取决于当时的输入信号,还取决于电路原来的状态。所以逻辑代数的主要目的是分析、设计(高效率、高质量的)数字电子电路的数学工具,也就是说,逻辑代数的“计算”在逻辑代数和数字电子技术中基本没有涉及。
根据实际问题整理出的逻辑函数表达式往往不是最简或最易实现的形式。即,实现逻辑功能的计算方法或其电路结构有需要优化的必要,这本身也包含着对高效率,高质量的算法的追求。于是,逻辑函数的化简方法的研究就成为了重要的一个方面。继而出现了众所周知的公式法、卡诺图法、列表法(增项消项法和奎恩-麦克拉斯基法)等。但,公式法化简需要一定的技巧和经验,没有固定的步骤可循,不易掌握,还特别(是)难于判断运算结果是否已简化成项数最少、每项变量数目也最少的最简式,尤其是化简一些较复杂的逻辑函数时更是如此。卡诺图化简法有简单、直观、有一定的规律可循、易于掌握的优点,但,在逻辑变量超过五个时,将完全失去简单、直观的优点,甚至变得没有什么太大的使用价值。列表法(Quine-Mcluskey法)对于解决多变量逻辑函数化简具有显著的优越性,这种方法有严格的规则和步骤,便于计算机操作,但对大规模的逻辑函数化简,则需要很大的存储容量,进而将严重影响化简的速度。由此可以得出结论:到目前为止,利用化简追求“运算”的高质量、高效率的方式,有待于新的突破。
编译器是将一种语言翻译为另一种语言的计算机程序。编译器将源程序编写的程序作为输入,而产生用目标语言编写的等价程序。通常地,源程序为高级语言,而目标语言则是目标机器的目标代码,也就是写在计算机机器指令中的用于运行的代码。编译器是一种相当复杂的程序,编写甚至读懂这样的一个程序都非易事,绝大多数的计算机科学家和专业人员也从来没有编写过一个完整的编译器。编译算法的产生,为软件的方便开发和目标代码的精练与执行速度找到了一个较好的平衡点。但是,对硬件资源极其有限的控制器而言,是不可能再将编译器和高级语言环境集成在一起的。一般是在另一个开发环境中,将编译好的目标代码下装到控制器中运行。小型以上的PLC就是采用这种工作模式,所产生的目标代码基本上也都在数十千字节以上,甚至达兆字节。
解释程序也是如同编译器的一种语言翻译程序。它与编译器的不同之处在于:它不产生目标程序,而是接受某高级语言的一个语句输入,进行解释并控制计算机执行,马上得到这句的执行结果,然后再接受下一句:一边解释一边执行。从原理上讲,任何程序设计语言都可被解释或被编译。一般而言,当执行的速度是最为重要的因素时就使用编译器,这是因为执行被编译的目标代码比被解释的源代码要快得多,有时要快10倍或更多。现在,随着CPU速度的提高和价格的下降,在微型甚至小型控制器中,也有采用解释算法实现的,但对硬件配置要求依然较高,对操作软件也有一些要求与限制。
一般的测控型仪器仪表多处理单变量的输入输出,只要由普通微处理器为核心,就能够较出色地完成其功能。但存在如下问题值:1)、输入输出的关系过于简单,不能较好地适应实际情况的复杂性要求。2)、一般不能充分发挥微处理器的作用与潜力。
PLC制造技术基本上被国外垄断着。我国在PLC应用上非常活跃,而开发、制造技术则非常薄弱。所以,每年都要花费数十亿元进口PLC。为此,国家也有专门政策,大力支持PLC的国产化。
(五)、具体实施方式
本发明的数据处理部分包括无括号运算单元和有括号运算单元,如图1、3所示。
逻辑代数或称布尔代数是分析、设计数字电子电路的数学工具。因为最基本的逻辑关系只有与、或、非三种,所以在逻辑代数中,相应的最基本的逻辑运算也只有三种:与运算(逻辑乘法运算)、或运算(逻辑加法运算)、非运算(逻辑求反运算,简称求反运算)。其它的运算,例如与非、或非运算、与或非运算、异或运算等,都可以用这三种最基本的运算等效地表示。
在本方法中,要求将逻辑表达式整理成单逻辑变量的“与”、“或”运算形式。当然,可以包含单逻辑变量的逻辑非即反变量。
在逻辑表达式中,有如下的基本关系存在:
1+A=1 (公式1)
0+A=A (公式2)
1*A=A (公式3)
0*A=0 (公式4)
其中,A可以是任何形式的逻辑表达式。在本方法中,特指“与”、“或”运算形式的逻辑表达式。
1、依据从左到右的运算顺序和上述四个公式,便有无括号逻辑代数结果的搜索方法如下:
1)、先将第一个逻辑变量值存入运算结果变量Val中。
2)、判断后边的运算符是“与”或者“或”运算符。
3)、当后边的逻辑运算符是“与”,且运算结果变量的逻辑值为假(0)时,就向后搜索,不用运算,因为运算的结果仍然是0,直到搜索到“或”运算符,或者表达式的末尾,得出运算结果。因为只有“或”逻辑运算才有可能改变当前逻辑运算的结果,将“或”逻辑运算符后边的逻辑变量的值直接存入运算结果变量Val中,再从第2)步开始。
例1:Val=ABCD,首先将将A赋与Val,如果A=0,根据公式4,Val=0。
例2:Val=ABCD+EF,如果A=0,根据公式(4和)2,得:Val=0+EF=EF,即只有“或”运算符后边的EF有可能改变Val的逻辑值,再后边的运算参考例1。
4)、后边的运算符是“与”,且运算结果变量的逻辑值为真(“1”)时,也向后搜索,不用运算,直到搜索到下一个逻辑变量,并将它的值存入运算结果变量Val中,再从第2)步开始。当然,如果搜索到了表达式的末尾,就可以结束运算,将运算结果变量的值直接输出。
例3:Val=ABCD,首先将A赋与Val,如果A=1,根据公式3,得Val=BCD,再将B赋与Val,继续搜索。
5)、当后边的运算符是“或”,且运算结果变量的逻辑值为假时,也向后搜索,不用运算,直到搜索到下一个逻辑变量,并将它的值存入运算结果变量中,再从第2步开始。当然,如果搜索到了表达式的末尾,就可以结束运算,将运算结果变量的值直接输出。
例4:Val=A+BCD,首先将将A赋与Val,如果A=0,根据公式2,得Val=BCD,再后边的运算参考例1。
6)、当后边的运算符是“或”,且运算结果变量的逻辑值为真时,就直接输出逻辑结果“真”,结束运算。不会再有其它结果。
例5:Val=A+BCD,首先将将A赋与Val,如果A=1,根据公式1,得Val=1,结束运算。
2、逻辑代数运算中括号问题的处理原则和解决方法如下:
1)、在利用本方法时,依然要求将表达式表示成单逻辑变量的“与”、“或”运算形式。可以包含单逻辑变量的逻辑非即反变量和括号。括号中的逻辑表达式可以等效成一个逻辑变量。括号的“对”数没有限制。但,要将括号分为左括号和右括号。
2)、括号部分出现在表达式的中、后部位置时,应优先考虑最外层括号内的逻辑值对运算结果的影响。
例6:Val=A(BCD+EF(·····)G),当A=0时,可输出Val=0。
3)、当需要进行括号内部的逻辑运算时,即括号部分出现在表达式的开始(称为外层括号)。例7:Val=(BCD+EF(·····)G)A,或者a)、在搜索的过程中,当前记录的逻辑结果为0,后边搜索到“或”运算符,再后边为括号结构。例8:Val=A+(BCD+EF(·····)G)=(BCD+EF(·····)G)。b)、在搜索的过程中,当前记录的逻辑结果为1,后边搜索到“与”运算符,再后边为括号结构,例9:Val=A(BCD+EF(·····)G)=(BCD+EF(·····)G)。显然,这些表达式相当于括号部分出现在表达式的开始。此时,须记录括号的嵌套数目:遇到一个左括号时做加“1”计数;遇到逻辑变量就使用上述的搜索方法;遇到一个右括号时做减“1”计数,逐层退去括号,直到将括号处理完毕,即计数值为0。
在例6中,表达式中的括号称为内括号。在它的搜索过程中,已经没有运算的价值,只搜索内括号的数目即可,遇到一个左内括号时做加“1”计数,遇到一个右内括号时做减“1”计数,逐层退去括号,直到将括号处理完毕,即计数值为0。
4)、表达式经适当化简等处理后,应尽可能地不用或少使用括号。
5)、在逻辑代数的求解流程图中,图1、2表示在逻辑表达式中没有使用括号的情况,可见,其流程图要简单很多。在逻辑表达式中,括号并不是必须的,即便使用了括号,经过适当的整理,也可以将括号脱去。图2、3、4的求解流程图是有括号的时情况。图中,I表示第I个变量的值,K表示外层括号的计数器,m表示内层括号的计数器,Val表示逻辑表达式的计算结果,end表示逻辑表达式的结束符号。
3、主要的应用实例
1)、开发PLC
在一般的PLC控制系统中,都要处理很多逻辑运算,在中小型的PLC中更是如此。因为本方法的数据处理部分的简短、精练,所以,对软、硬件资源要求很低,特别适合利用较普通的单片机开发中小型的PLC。当然,高档次配置,效果更好。
具体方法为:将采集到的数据和表达式地址形式的用户控制流程等存放到相应的数据区,再用本方法的数据处理部分搜索输出。用户控制程序的编制方法类似“设置参数”的方法,易学易用,对微、小型PLC尤其如此。这与传统的PLC相比是其最显著的特点。另外,“与—或”表达式形式非常接近继电器逻辑控制图和PLC的梯形图,也为广大工程技术人员所熟悉。所以,采用本方法开发的PLC,用户可以免培训,直接使用。
对于采集到的模拟量,可以将它们利用带回滞的比较器转换成数字状态量。当然,也可以有其它方式的运算与输出。
另外,PLC制造业基本上被国外垄断着,本方法的成功应用将有助于独具特色的国产PLC的产生。作为本方法的验证与一个具体应用,本人利用很普通的单片机89C51开发了一种16点输入/8点输出的微型PLC,集输入/输出、显示、通讯、编程等操作于一体,使用非常方便,无须对用户进行应用技术培训。12MHZ的时钟,用户程序的最大扫描周期约20毫秒,总程序量约3K字节。硬件成本也极其低廉。
2)、开发DCS
利用本方法可以开发PLC、智能仪器仪表等电气控制设备,并可以组网构成低成本、高效率的集散控制系统。
3)、开发智能仪器仪表
智能测控仪器仪表中大量使用了单片机,利用本方法可以在原有硬件基础上,开发出可编程输出的高档控制型智能仪器仪表,硬件成本基本保持不变,从而大幅度提高其性能价格比。
4)、巨大的开发利用潜力
PLC与仪器仪表本属于不同的技术领域,本发明开辟了小型PLC与智能型测控仪器仪表结合带的应用产品区域,即利用本方法可以研制、开发PLC化的各种智能型测控仪器仪表,也可以研制、开发各种智能型测控仪器仪表化的PLC。本方法的推广利用,必将产生独具特色的新一代PLC和仪器仪表,为我国乃至世界的控制领域带来巨大商机与价值。
5)、数字仿真或数字逻辑计算机辅助分析
利用本方法也可以开发出高效率的数字仿真或数字逻辑计算机辅助分析软件。
6)、其它方面的应用
作为一种新型的、工具式的数据处理方法,由于发明人知识、水平等的限制,不可能充分地预计它的应用价值。很多历史上的发明,其应用价值远远超出了当初发明人的想象,例如555集成电路。对本方法而言,同样希望广大相关技术人员了解它、掌握它,创造性地应用它,开发出各具特色的优秀产品。