peilei1031
苏州昆山的电气自动化从业者...
级别: 论坛先锋
精华主题: 0
发帖数量: 375 个
工控威望: 1776 点
下载积分: 954 分
在线时间: 44(小时)
注册时间: 2013-09-24
最后登录: 2024-11-14
查看peilei1031的 主题 / 回贴
楼主  发表于: 2023-08-08 14:12
请教一个问题,看看用PLC能不能实现
扫码枪送过来一串代表载盘编号的数据,存在寄存器D里面,过几分钟再送进来下一个载盘编号, 如此循环.....大约有三十个载盘,  三十个载盘过后第一个载盘会移动到出口,再出口扫码枪会再扫一次数据, 现在问题是如何判断出口扫到的数据是第几次被扫到了,出口如果扫到的数据是第三次扫了,这个料盘就流出去,如果不够就再抓到入口走一遍,有没有好的实现方法
gxtmdb82164
级别: 论坛先锋
精华主题: 0
发帖数量: 755 个
工控威望: 1133 点
下载积分: 369 分
在线时间: 591(小时)
注册时间: 2019-09-22
最后登录: 2024-11-15
查看gxtmdb82164的 主题 / 回贴
1楼  发表于: 2023-08-08 16:24
有编号就能搞,用这个编号作为载盘的索引,再对内存中具体某个索引到的载盘状态进行管理就行了

继续分解就变成了三个子程序
1 接收串口输入的编号数据,这个一般都是ASCII码,在DVP这种低端PLC里面处理比较麻烦,所以最好直接转成对应的数字编号
2 根据索引管理内存中的载盘状态,基本上就是入口减1减到0,出口加1,要注意初始化和异常管理
3 在执行工位根据内存中的托盘状态(if>=3)执行操作

举例:

载盘编号AAAAA-0001,代表编号为1的载盘,前面一坨都不关心,用接收字长做一个基本校验以后取最后两位作为当前托盘的编号,这里是1,将D1000开始的n个连续地址作为托盘状态寄存器,1号对应D1001,直接用变址寄存器操作非常简单
gxtmdb82164
级别: 论坛先锋
精华主题: 0
发帖数量: 755 个
工控威望: 1133 点
下载积分: 369 分
在线时间: 591(小时)
注册时间: 2019-09-22
最后登录: 2024-11-15
查看gxtmdb82164的 主题 / 回贴
2楼  发表于: 2023-08-09 09:18
引用
引用第4楼peilei1031于2023-08-08 19:44发表的  :
感谢指导,但是有个问题,他们的盘子的编号不是从1~几十,后四位乱七八糟的号码,大几百的都有,可能用编号做索引,往索引寄存器中写数值行不通



那只能做预先设定的字符串和扫码得到的字符串比较了
如果指定了PLC那确实不好办,DVP-ES2这个型号作为低端型号,连字符串都不支持,当然非要用可以用数据比较之类的指令自己封装,但是总感觉得不偿失,太麻烦了(是能做的出来的)

这种字符串处理啥的,其实用ST或者脚本之类的编程方式,处理起来不要太简单

所以,你设备上有触摸屏吗?触摸屏能写脚本吗?不要局限在PLC上

如果是我,我会要求更换编号,按我要求的来,这都是可以沟通的事情