工控肥仔
工控肥仔
级别: 网络英雄
精华主题: 0
发帖数量: 667 个
工控威望: 5659 点
下载积分: 3602 分
在线时间: 761(小时)
注册时间: 2018-11-17
最后登录: 2024-11-22
查看工控肥仔的 主题 / 回贴
楼主  发表于: 2020-07-24 16:24
图片:
大佬们,求帮忙解决一个数据处理问题??
  

    当我用八个光纤一次检测8个产品
                                                            1. 如果第一个光纤检测到不良时,我需要剔除一个不良品
                                                            2. 如果第五光纤检测到不良时,需要从第五个起,后面全部剔除
                                                            3. 假如中间有两个或两个以上不良时,需选择最大的数据处理时,该如何处理数据呢??
龙达工控萌新
级别: 略有小成
精华主题: 0
发帖数量: 185 个
工控威望: 300 点
下载积分: 1122 分
在线时间: 84(小时)
注册时间: 2017-10-25
最后登录: 2024-04-22
查看龙达工控萌新的 主题 / 回贴
1楼  发表于: 2020-07-24 23:44
你这个描述 能有人明白你想表达的意思么
不小心遇见你
自动项目、PLC、视觉、通讯等工控软件开发QQ3515716
级别: 工控侠客

精华主题: 3 篇
发帖数量: 2048 个
工控威望: 2965 点
下载积分: 25189 分
在线时间: 1436(小时)
注册时间: 2014-01-05
最后登录: 2024-11-22
查看不小心遇见你的 主题 / 回贴
2楼  发表于: 2020-07-25 08:26
你是不是想说 1-7  两个或2个以上NG时 剔除 1-7?
不管8?
那简单 M1-M7对应D1-D7 分别OK时赋值0 NG时赋值1  然后max 就知道有几个最大的数值 最大的值=1且数量>=2就是干你要的事情(注意最大值必须等于1且数量>=2)
项目、视觉、通讯QQ3515716
cythyx
级别: 家园常客
精华主题: 0
发帖数量: 452 个
工控威望: 527 点
下载积分: 1634 分
在线时间: 106(小时)
注册时间: 2019-06-27
最后登录: 2024-11-20
查看cythyx的 主题 / 回贴
3楼  发表于: 2020-07-25 16:32
图片:
图片:
这种问题都不是问题,因为有最简单的编程方式,枚举法。
假设不良时对应M0-M7为ON
下面是举例逻辑,实际是做好使用某个信号的上升沿触发M10-M16
工控肥仔
工控肥仔
级别: 网络英雄
精华主题: 0
发帖数量: 667 个
工控威望: 5659 点
下载积分: 3602 分
在线时间: 761(小时)
注册时间: 2018-11-17
最后登录: 2024-11-22
查看工控肥仔的 主题 / 回贴
4楼  发表于: 2020-07-27 08:44
引用
引用第3楼cythyx于2020-07-25 16:32发表的  :
这种问题都不是问题,因为有最简单的编程方式,枚举法。
假设不良时对应M0-M7为ON
下面是举例逻辑,实际是做好使用某个信号的上升沿触发M10-M16




      大哥,你这个时方法是不错,但不是我想要的,
                我要的是m0--m7中有任意一个位置或多个位置不良时,我需要取最大的那个值(假如:检测中只有M2为不良时,我需要剔除M2-M7六个产品,如果是M3.M4,M5.M6都是不良,我需要剔除M3-M7就可以)我想知道有什么办法可以找出不良品中最大那个值就可以了
cythyx
级别: 家园常客
精华主题: 0
发帖数量: 452 个
工控威望: 527 点
下载积分: 1634 分
在线时间: 106(小时)
注册时间: 2019-06-27
最后登录: 2024-11-20
查看cythyx的 主题 / 回贴
5楼  发表于: 2020-07-28 08:36
方法就是这样啊,就8个信号,每种情况列出来不就完了。
mistyke
打工仔
级别: 论坛先锋
精华主题: 0
发帖数量: 143 个
工控威望: 1066 点
下载积分: 6021 分
在线时间: 355(小时)
注册时间: 2018-01-02
最后登录: 2024-10-31
查看mistyke的 主题 / 回贴
6楼  发表于: 2020-07-28 08:57
如果我没理解错楼主的意思的话,那我提供一个思路:
用ENCO指令对M0-M7进行编码,可以得到当中为ON的是第几位存到D0。若当中有不只有一位为ON,那就取最高位(三菱是这样的)。比如M3,M4都为ON,那D0=4,
那么接下来只要把第D0=4之前的位都置ON存起来,即可
工控肥仔
工控肥仔
级别: 网络英雄
精华主题: 0
发帖数量: 667 个
工控威望: 5659 点
下载积分: 3602 分
在线时间: 761(小时)
注册时间: 2018-11-17
最后登录: 2024-11-22
查看工控肥仔的 主题 / 回贴
7楼  发表于: 2020-07-29 08:57
引用
引用第6楼mistyke于2020-07-28 08:57发表的  :
如果我没理解错楼主的意思的话,那我提供一个思路:
用ENCO指令对M0-M7进行编码,可以得到当中为ON的是第几位存到D0。若当中有不只有一位为ON,那就取最高位(三菱是这样的)。比如M3,M4都为ON,那D0=4,
那么接下来只要把第D0=4之前的位都置ON存起来,即可






                             你这个方法也是对的,我现在是用SER指令,把八个光纤编号位置,哪一个置ON就传送对应的D值里面,后面用K值做比较,取最大的位置就可以了
天空流星
SZ-CL
级别: 网络英雄
精华主题: 0
发帖数量: 571 个
工控威望: 6193 点
下载积分: 19793 分
在线时间: 558(小时)
注册时间: 2008-03-17
最后登录: 2024-11-22
查看天空流星的 主题 / 回贴
8楼  发表于: 2020-07-29 13:24
图片:
这个是你想要的吗?
M0-M7   ON为不良标记,
D0为排料数量