倔强的小白
级别: 略有小成
精华主题: 0
发帖数量: 120 个
工控威望: 229 点
下载积分: 884 分
在线时间: 94(小时)
注册时间: 2017-06-14
最后登录: 2024-10-31
查看倔强的小白的 主题 / 回贴
楼主  发表于: 2023-09-04 10:55
如题用PLC怎么计算,例如,D0-D100,有100个数值,我设定了一个K999的数,怎么能调选出来D0-D100中10个寄存器数值等于999,可以允许有一个偏差,偏差自己设定。有偿
1151847703
级别: 论坛先锋
精华主题: 0
发帖数量: 128 个
工控威望: 1331 点
下载积分: 1770 分
在线时间: 125(小时)
注册时间: 2016-11-17
最后登录: 2024-11-15
查看1151847703的 主题 / 回贴
1楼  发表于: 2023-09-06 15:34
以设定K999为例,先999/N取个平均数,然后用For~Next检索与平均值接近的寄存器,剔除一个最大的一个最小的,然后以此多筛选几次,最后选比较接近的寄存器
1151847703
级别: 论坛先锋
精华主题: 0
发帖数量: 128 个
工控威望: 1331 点
下载积分: 1770 分
在线时间: 125(小时)
注册时间: 2016-11-17
最后登录: 2024-11-15
查看1151847703的 主题 / 回贴
2楼  发表于: 2023-09-06 17:28
图片:
大概写了下,还有待优化地方,讲下我的思路,不知道对不对,欢迎指正
1:给100个寄存器赋值
2:算出10组寄存器的平均值
3:检查取平均值较接近的10组
4:检索出10组的寄存器地址
5:10组相加与目标值比较
1151847703
级别: 论坛先锋
精华主题: 0
发帖数量: 128 个
工控威望: 1331 点
下载积分: 1770 分
在线时间: 125(小时)
注册时间: 2016-11-17
最后登录: 2024-11-15
查看1151847703的 主题 / 回贴
3楼  发表于: 2023-09-08 09:38
图片:
还有个办法用随机,取余数,限制数字范围,余数结果给变址Z0,例如
D400:=D0Z0+D0Z1+D0Z2........;
当D400的值在目标范围内,将10个变址保存起来,
变址的编号得出寄存器,用随机总会有相等的时候,要注意下10组变址不能重复
如图