西门子S7-1200与扫码枪自由口通讯应用案例,很实用!
在一个大型超市中,需要定期对商品进行保质期的复检,传统的方式是通过人工核对条码然后进行分拣。现在引入了一条扫码自动分拣产线,通过输送带将产品进行输送,到达扫码位时,让扫码枪工作,扫码成功的信息存入PLC中,扫码失败则通过气缸推出。到达分拣位时,将扫码的结果进行判断,保质期内的产品流转到下一个工位,已过期产品通过气缸进行剔除。设备示意图,如图1所示。
图 1设备示意图
1、设备核心硬件介绍
这个案例中,使用了Honeywell OH430型扫描枪,接口为RS232类型,PLC使用1个1215C的PLC。由于扫码枪的接口为RS232,PLC需要增加一个通讯模块。在库存产品中有一个CB1241 RS485的通讯板,可通过一个RS232转RS485的转换器中转实现。使用到的核心硬件清单如表1所示。
表格 1 核心硬件清单
2、设备IO变量表
设备的IO变量,如图2所示。
图 2 IO变量表
3、扫码枪和PLC硬件连接
扫码枪与PLC的硬件连接如图3所示。
图 3 硬件连接图
4、扫码枪和PLC设置
1)扫码枪设置
对于扫码枪而言,需要进行一些简单的参数设置,简单的方式是通过扫码枪扫码来设置参数。常见的设置码如图4所示。
图 4 扫码枪常见设置码
2)PLC设置
在PLC这边,需要对模块的通讯参数同样进行设置,如图5所示。
图 5 PLC通讯板参数设置
5、设备控制程序
在整个程序中,主要有三个程序块。1个主程序,1个扫码枪的子程序,1个自动分拣的子程序。详细的程序如下所示。
1)主程序
图 6 主程序
2)扫码枪数据收发子程序
图 7 数据收发
在图7的程序中,指令中PORT是通讯板的硬件标识符。"全局".RCV_String使用的字符串数据类型,"全局".SEND_Buffer使用的Byte的数组用于发送对应的指令,在本案例中触发扫码的命令如图8所示。
图 8 用于扫码触发的数据
图 9 数据处理
在图9中,是接收的数据类型的转换,扫码枪返回的数据是日期,为了便于比较,将其转换整数,然后再进行比较。
1)扫码自动分拣
图 10 分拣程序-1
图 11 分拣程序-2
图 12 分拣程序-3
在图12中的程序,使用了两次接收完成信号,这是PLC给扫码枪发送触发扫码命令时,扫码枪会先返回1条命令,表示扫码枪已经收到该命令。当扫码枪扫码成功后会将结果发送给PLC,如果2秒钟没有返回结果,则说明扫码失败。
图 13 分拣程序-4
图 14 分拣程序-5
图 15 分拣程序-6
总结
本文介绍了S7-1200与扫码枪自由口通讯的应用案例,程序相对比较简单,需要注意的是对扫码枪数据的处理。如果接收的字符串,可以转换成便于处理的数据类型。如果接收的是十六进制数据类型,则还需要转换成便于理解的数据类型,具体情况。根据现场要求来处理。如果你有更多关于通讯的应用,欢迎留言交流。