應用方案:
一、傳送帶上箱子寬度的激光測距傳感器的解決方案
現代工業上傳送帶是隨處可見的,傳送帶大大方便了自動化生產,也大大的節約了人力資源,但是在工業生產中我們經常需要知道傳送帶上箱子的寬度,用人工進行測量顯然與自動化相違背,我們可以使用激光測距傳感器進行測量,使用兩個激光傳感器,在傳送帶的兩側面對面安裝,因為尺寸變化的箱子落到傳送帶上的位置是不固定的。這樣,每個傳感器都測量出自己與箱子的距離,設一個距離為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,即完成了數據
|