应用方案:
一、传送带上箱子宽度的激光测距传感器的解决方案
现代工业上传送带是随处可见的,传送带大大方便了自动化生产,也大大的节约了人力资源,但是在工业生产中我们经常需要知道传送带上箱子的宽度,用人工进行测量显然与自动化相违背,我们可以使用激光测距传感器进行测量,使用两个激光传感器,在传送带的两侧面对面安装,因为尺寸变化的箱子落到传送带上的位置是不固定的。这样,每个传感器都测量出自己与箱子的距离,设一个距离为L1,一个距离为L2,此信息送给PLC,PLC将两个传感器间总的距离减去L1和L2,从而可计算出箱子的宽度
二、激光测距传感器控制方案
本方案组成:
1:传感器部分,其功能为采集有效数据。可为客户订做,增加其他传感器的数据采集(如温度、湿度、
压力等)
2:同时数据采集器,采集多路传感器数据(目前最大支持 4 路,如有特殊需求,可以订做),而且具有存
储功能,保证数据无丢失
3:数据传输部分,本方案采用了 GPRS 数据传输方式,本方式传输数据稳定,不受距离限制,但速度比
较慢。客户可根据实际要求来更换传输方式,如有线方式,点对点无线方式等。
本方案工作流程:
1:数据采集器,实时读取服务器状态(或由服务器直接发送命令给采集器,具体由数据传输方式而定),
根据服务器状态指示进行连续测量和停止。
2:数据采集期间,数据只是存储到内部存储器,不对数据进行传输。以免数据丢失。
3:当读取到停止状态时,停止传感器工作,同时开始数据传输,直到数据传输完毕,重新进入待机状态。
本方案特点:
1:无数据丢失现像,保证数据的完整性
2:如采用无线传输方式,则结构简单,安装便。而且多路传感器共用一个无线模块,可降低成本,减少数
据传输时间。
3:如采用有线传输方式,则大大减少了所需布线的数量,减少了工作量,降低了成本
三、基于PLC控制器的激光测距系统
随着激光技术的发展,激光测距传感器在检测领域得到了越来越多的应用。本文所说的基于PLC的激光测距系统,对多台激光测距传感器所采集到的数据进行处理,并将数据传送给上位机,实现了对多台激光测距传感器的监控。
PLC控制系统硬件设计
基于小型一体化PLC的激光测距系统的功能结构图如图1所示。系统通过PLC的自由口通信,接收多台激光测距传感器发送过来的数据,根据传感器提供的数据格式解析数据包,计算出测量的距离。系统的功能还包括显示测量距离、在非正常情况下报警、与上位机进行数据交换等。
PLC的CPU模块选用HOLLiAS-LEC G3系列的LM3108模块,其性能价格比很高,广泛应用于工业控制的各个领域。LM3108模块的标准配置包括两个串行通信接口PORT0和 PORT1,其中PORT0为RS485接口,PORT1为RS232接口。采用RS232接口建立PLC与上位机的通信,实现PLC程序的下装和监控。采用RS485接口建立PLC与现场仪表的通信。
PLC控制系统软件设计
PLC采用自由口通信方式接收激光测距传感器的数据,用%MB400~%MB411的12个字节作为通信接收寄存器,存放自由口通信方式下所接收的 数据。所谓自由口通信,是指用户可以通过设置通信模式来改变通信接口的参数,以适应不同的通信协议。在PLC程序中设定的激光测距传感器的通信参数如表1 所示。 PLC控制程序采用和利时公司的编程软件PowerPro完成,下面详细介绍数据解析程序。其它应用程序从略
3.1 数据解析程序的变量定义
PROGRAM PLC_PRG
VAR
SetRS485: Set_COMM2_PRMT; (* RS485自由口通信参数设置 *)
SetRS485Q: BOOL; (* RS485自由口通信参数设置标志 *)
Receive: COMM2_RECEIVE; (* RS485自由口通信数据接收 *)
ReceiveQ: BOOL; (* RS485自由口通信数据接收标志 *)
ReceivedData: STRING; (* 存储ASCII码数据的字符串 *)
Position1: INT; (* 起始字符的位置 *)
Position2: INT; (* 结束字符的位置 *)
ReceivedData_STRING: STRING; (* ASCII码形式的数据 *)
ReceivedData_DWORD: DWORD; (* 十六进制形式的数据 *)
END_VAR
PLC从激光测距传感器接收到的数据是ASCII码形式,所以需要将ACSII码转换成PLC能够操作的十六进制数。
首先在存储ASCII码数据的字符串ReceivedData中找到数据的起始字符“+”,并将其位置存储在变量Position1中。然后再找到 数据的结束字符“$R”,并将其位置存储在变量Position2中。将位置Position2与位置Position1之间的字符取出,存入变量 ReceivedData_STRING中,此即为数据的ASCII码形式。最后将该ASCII码形式的数据ReceivedData_STRING转换 位十六进制形式的数据ReceivedData_DWORD,即完成了数据
|