聪普对接第三方面板程序“复位”与逻辑块详解

[复制链接]
WSTAR 发表于 2019-2-20 13:20:43 | 显示全部楼层 |阅读模式
本帖最后由 WSTAR 于 2019-3-28 16:51 编辑

对接第三方面板的时候,有时候会出现按按键没反应不动作,那是什么原因呢?
原因有三个:第一,面板发的是其它指令;第二,面板发指令,聪普主机未收到;第三,短时间内,面板发的同一个指令,聪普主机未收到;前两个我们在这里不再考虑,只针对第三种情况详细讲解,这种情况就需要我们对聪普程序做一个“复位”处理。
先了解一下第三方面板发码的情况:一、发码指令1个,无状态反馈;二、发码指令2个,无状态反馈;三、发码指令2个,有状态反馈;四、发码指令1个,有状态反馈;接下来讲三和四有状态反馈的。
现在有一个三键的第三方面板,有三路灯光分别为A、B、C,一个聪普8路继电器,一台聪普机架式主机。
聪普程序对接第三方面板用到的逻辑块介绍一下以及怎样实现复位的,照明开关组合快、Stepper、Serial I/O、OrOscilloter、One Shot等等。如下图
逻辑块.png
Serial I/O中的内容如下图,图片中左侧变量发送的指令为反馈给第三方面板的状态指令;右边是第三方面板发给聪普主机的动作指令,比如开关灯。注意:普及一下知识,带F的变量是不能直接改变它的高电平或者低电平,而且其中有一个变量为高电平1时,其它变量全部为低电平0(后面讲解要用到)

serial.png



Or中的内容如下图,面板操作后Serial I/O中右边的变量就会变为高电平,在这里Or中有一个变量为高电平,输出就为高电平,输出到震荡逻辑块左边变量。


or.png


Oscilloter中的内容如下图,左边的变量处于高电平时,右边变量会0.2秒高电平,0.2秒低电平来回震荡

震荡.png

接上一步,震荡逻辑块输出的变量,就是通过另一个Serial I/O发指令给COM3_RX,然后第一个Serial I/O接收到复位指令,把MB_FW_T变成高电平,这样就实现了复位,如下图


io2.png

这个方法实现复位功能,简单、快捷、方便、有效等,并且不会出现复位丢失。另外一种复位方法是用执行命令的stepper右边变量多加一条复位指令,这种方法程序内容多的时候会出现复位丢失,并且用起来比较繁琐,就不再讲解了。


下面再讲解一下one shot和stepper中的内容,这个内容之前的文章已讲过,我们在温习一下


One Shot中的内容如下图,其实在上一篇文章已经讲过,这里再学习一遍。这个逻辑块在这里的作用是,用继电器状态变量的低电平到高电平触发变量,发开灯状态的指令;用继电器状态变量的高电平到低电平触发变量,发关灯状态的指令。

one.png one1.png


Stepper中的内容如下图,面板发的两条命令我都用stepper输出灯光的clock,这样不管面板发过来的是什么指令,我聪普主机都会执行动作。状态反馈就如one shot逻辑块处理的


step.png
在这里做一个说明:有客户反馈程序误导人了,这里先陪个不是,道个歉。需要说明的一点是程序没问题,“一个按键发一条命令”一般指场景或者一键开关   和  “一个按键发两条命令”一般指灯光的开和关,这两个内容需要删除掉其中一个才是正常程序,因为我这里写的变量名是一样的,这个请注意!




第三方面板复位.rar (5.62 KB, 下载次数: 1972)
13228751750 发表于 2019-2-20 16:18:51 | 显示全部楼层
有点复杂啊  
回复

使用道具 举报

 楼主| WSTAR 发表于 2019-2-20 16:19:45 | 显示全部楼层

不复杂,就是讲解的有点详细而已
回复

使用道具 举报

13228751750 发表于 2019-2-20 16:22:49 | 显示全部楼层
震荡的那个逻辑块编程还没用过
回复

使用道具 举报

小叮当 发表于 2019-2-21 10:20:35 | 显示全部楼层
很详细,点赞
回复

使用道具 举报

喵喵侠作怪 发表于 2019-3-12 14:37:41 | 显示全部楼层
划重点,考试题
综以上所述
回复

使用道具 举报

施宇豪 发表于 2019-3-13 09:08:38 | 显示全部楼层
很详细                             
回复

使用道具 举报

 楼主| WSTAR 发表于 2019-3-28 16:52:26 | 显示全部楼层
在这里做一个说明:有客户反馈程序误导人了,这里先陪个不是,道个歉。需要说明的一点是程序没问题,“一个按键发一条命令”一般指场景或者一键开关   和  “一个按键发两条命令”一般指灯光的开和关,这两个内容需要删除掉其中一个才是正常程序,因为我这里写的变量名是一样的,这个请注意!
回复

使用道具 举报

naoxin 发表于 2020-7-12 10:27:41 | 显示全部楼层
问一下!触发按键背景灯,有两个按键,就是灯亮的时候,A键和B键的背景灯都亮,灯灭的时候两个按键背景灯都灭,如果用4个oneshot,触发按钮背景灯的开关,4个oneshot,左面都是灯的out,右面一个是A键开关灯,一个是B键的开关灯,那么有时候会出现不同步的状态,这种情况该如何解决?
回复

使用道具 举报

admin 发表于 2020-7-20 10:05:23 | 显示全部楼层
naoxin 发表于 2020-7-12 10:27
问一下!触发按键背景灯,有两个按键,就是灯亮的时候,A键和B键的背景灯都亮,灯灭的时候两个按键背景灯都 ...

按键背景灯对应灯的状态,把灯的变量直接填在按键背景灯的上面不就可吗;如果是3方的面板,这个变量触发开灯;取反的NOT触发关灯
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则