智能家居

标题: 浅谈逻辑的应用(转载自九把言) [打印本页]

作者: 麦逗芽    时间: 2017-6-13 11:57
标题: 浅谈逻辑的应用(转载自九把言)
如果我用三个独立按键,分别打开了三个回路的灯光。那么这时,如果我去按总控按键,会产生什么效果?

首先,因为现在所有的灯都是打开的状态,我按总控按键,肯定是希望把灯关掉。可是,由于总控按键的功能是”Toggle”,所以按照我们上周文章里提到的,第一次按下“toggle”功能的按键,它实际上是发出一个开灯的指令(组地址值为1),所以在我第一次按这个总控按键的时候,我看不到任何变化(因为现在灯已经都开了),我只有再按一次这个总控按键,灯光才会被关闭。

如何解决这个问题呢?

按照之前我们谈到的关于反馈的使用思路,我们需要把三个回路灯光的实际状态通知总控按键。但是,不同的是,只有在三个回路的灯都处于打开的状态下,总控按键的状态才能被更新为“1”,而只要有一个回路还没有打开,那么总控按键的状态都应该为“0”。也就是说,只有所有灯光都打开了,我去按总控按键才应该是全关的指令,只要有一个回路还没开,那么我去按总控按键,都是发出一个全开的指令。在这种情况下,单纯的状态反馈就不能解决问题了,我们需要另外一个重要的功能,那就是——逻辑。

根据我们在中学课本上所学,上述要求实际上是一个“与”逻辑(AND)。三个回路的状态反馈作为输入,逻辑计算之后输出的结果用来更新总控按键的状态。大致上的思路是这样的:

(, 下载次数: 4) 具体做法
我们还是以海格的面板和驱动器为例,看看具体在ETS里具体实现这个简单逻辑控制的步骤是怎样的。

首先,海格的驱动器本身就内置了逻辑功能。我们需要在参数设定里面把逻辑功能打开,并设定该逻辑功能为“AND”,输入条件的个数为3个。


(, 下载次数: 5)

(, 下载次数: 10)

于是我们在对象列表里得到了4个新的对象,分别是“logic input 1”“logic input 2”“logic input 3”和“logic result”。根据我们在之前文章《如何快速识别对象功能》所讲的,根据这几个对象的名称、数据类型和所带有的flag标识,我们可以很容易分别出,前三个对象是用于逻辑的输出,而最后一个是用于逻辑的输出。那么,根据我们的思路,用三个回路的状态反馈来做为输入,输出则用来控制总控按键的状态更新。

(, 下载次数: 6)

这样,总控按键就可以随着三个回路的状态变化而更新自身的状态,在需要的时候发出正确的控制指令了。

关于逻辑的一些基本概念,例如逻辑的常见分类,每种逻辑的内在算法,输入与输出的关系等等,小伙伴们都可以通过复习中学课本或者网上查询进行学习,在这里就不加赘述了。在KNX系统中,常见的几种逻辑实现途径包括:个别元件自身内置的逻辑功能(例如上述例子中海格的驱动器),或者是专用的逻辑处理模块,还有就是大部分中央控制软件都具备逻辑处理功能。关于内置逻辑功能,每个厂家的产品设定各有不同。其中,海格驱动器的逻辑能力是我见过最强的。

小结一下

连续两篇文章,我们通过一个很简单的面板设定举例,分别讨论了反馈和逻辑的应用以及实现方式。这两个都是很重要,但是有时会被忽略的功能。反馈功能,一方面可以用来作为控制指令执行之后的状态显示,一方面可以用在有需要连锁反应的控制中,后一个控制需要以前一个控制的实际状态为依据。逻辑功能,则是在需要对多个条件进行判断,来共同决定执行指令的情况下使用。在实际项目中,有时看似很简单的一个功能需求,如果没有完善的设定,在反馈或者逻辑上存在疏漏,就会给用户带来不好的体验,从而影响用户对整个系统的信心。







欢迎光临 智能家居 (https://bbs.mywll.com/) Powered by Discuz! X3.4