菜鸟提问:
有下面的工况:
在某个设备(姑且称之为A)监测范围内存在N个信号,A有能力识别到这N个信号。控制器(PLC)与A串口通讯,接收到某个寄存器中是1就表示1#信号存在;是2就表示2#信号存在;是3就表示……这样就可以判断监测范围内存在有哪些信号,问题是PLC怎样判断监测范围内已有的信号真正离开了检测范围?
目前想到的办法是PLC只要检测到某个信号就马上置位一个M位,表明此信号已经出现在监测范围内(这个逻辑要求已经写了出来,没有问题)。
置位M位后马上启动一个时间继电器,启动条件中间串联一个此信号消失的节点(某寄存器不等于N的节点),时间到后复位M。即就是在一个时间段内通讯一直没有接收到某信号数据就认为这个信号已经离开了此检测区域。
这样的处理办法,如果需要检测的信号是海量的话,逻辑要写太多程序段,岂不是PLC无法完成这样的任务了?大家有什么好的处理办法?有没有简单指令能实现以上要求?
以下是我以5个信号为例子用非200PLC写的逻辑(供参考理解要求)。
侠客:
没看明白:某寄存器表示N个信号状态?还是某寄存器表示一个信号的N个状态?
要求似乎并不复杂。
菜鸟:
表示N个信号。
因为是串口过来的数据,所以PLC接收寄存器(图片中的D113)接收到的是不断变化的N个数据信息。
可以理解成无线***,在覆盖监测区域内有1#卡存在就接收到1;有2#卡存在就接收到2……,存在很多卡的话,D113中就会接收到不断变化的数据1、2……,检测区域内没有任何卡存在,那么D113中接收到的数据就是0。
现在要使用PLC判断监测区域内有那些卡存在(例如人员身份信息),这个都不是问题,关键是那些卡离开了监测区域不好判断,使用图片中的逻辑,一个个写的话就有点力不从心了。(以上都需要给出一个时间段,用某个时间点判断是不可能的)
至圣:
比较奇怪的方案。
A闭着眼睛推送信息吗?N有多大?串口传送字节流不至于太紧张,16个字节含有256个位,每一个位若是表示一个信号的有无,就可以表示256个信号。传送效率远比你使用一个单元编码方式高。
以上就是那个A设备(相当于无线***)在串口调试软件中的数据。当时设备附近有1#——5#卡存在
注:这个A设备只提供一个CAN接口,与串口连接是通过转换的。
以下是我分析的数据意义:
**个字节:A设备ID4(固定不变)
**个字节:02:水灾;03:火灾;04:援助(一些求助信息)
第三四个字节:00 00 (检测范围内无卡);00 01(有1#卡);00 02(有2#卡)
NO.5~ NO.9 不知道啥意思。
之所以这样我估计大概是为了解决**个字节——求救信号是由谁发出的问题而设计。按照你的方案,假如**个字节有数据(例如02:火灾信号,这是由卡的使用者人为发出的),你无法判断到底是由那个人发出的,这样人为故意乱发信息就无法控制。
其实我们买的这个A设备就是人家人员定位系统中的一个采集分站
菜鸟:
我整理一下。
把你的事情微缩一下,形成下面的情况。
有一个字节。不断的在变化,变化的值不确定。目前要登记变化中所有数值,并考勤。当某一个值,一定时间内不再出现的话,要反映一个标识信号。
是不是这样的说?