未来索引
开启左侧

浅谈逻辑的应用(转载自九把言)

  [复制链接]
麦逗芽 发表于 2017-6-13 11:57:54 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
如果我用三个独立按键,分别打开了三个回路的灯光。那么这时,如果我去按总控按键,会产生什么效果?

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

如何解决这个问题呢?

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

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

0?wx_fmt=png.jpg 具体做法
我们还是以海格的面板和驱动器为例,看看具体在ETS里具体实现这个简单逻辑控制的步骤是怎样的。

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


0?wx_fmt=png.jpg

0?wx_fmt=png.jpg

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

0?wx_fmt=png.jpg

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

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

小结一下

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


该会员没有填写今日想说内容.
高级模式
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

发布主题
推荐阅读 更多
阅读排行 更多
广告位
!jz_fbzt! !jz_sgzt! !jz_xgzt! 快速回复 !jz_sctz! !jz_fhlb! 搜索

智能技术共享平台 - 未来论

关注服务号

进入小程序

全国服务中心:

运维中心:天津

未来之家:天津 青岛 济南 郑州 石家庄

                商务邮箱:xy@mywll.com

Copyright © 2012-2021 未来派 未来论 (津ICP备16000236号-5)