SICK LMS511 利用串口数据采集
引言
應用LMS511或其它版本施克激光雷達時,可以通過SOPAS ET軟件對LMS511進行設置,測量數據輸出。更多的時候為了定制化產品,我們需要通過串口技術發送命令對LMS511進行設置和數據的輸出。此時官方提供的Developers Guide手冊對于開發者是重要的,手冊涵蓋了串口通訊、數據處理、參數設置等大量命令介紹。這篇博文就從如何利用串口進行數據采集進行講解,博文里涉及的電文/命令都來源于Developers Guide。
(Telegrams)電文介紹
電文/電報/報文,通過終端以ASCII(也以十六進制)或二進制文件的形式向LMS511發送命令,傳感器總是用他的語言進行反饋。我們可以用二進制、十六進制、ASCII,這里就建議使用ASCII,因為更直觀、更容易記憶一些。
這里給出了基礎的ASCII、Hex和Binary的命令和描述。
發送指令的步驟
(1)登陸設備(2)設置掃描頻率和分辨率(3)設置掃描輸出內容(4)存儲參數(5)運行并接受掃描數據
登陸設備
LMS511 內有三個權限的賬戶可供使用。”Maintenance”,在此權限下,用戶不可以更改 LMS 參數,但可通過指令獲取測量數據。”Authorised client”在此權限下,用戶可更改 LMS 的大部分參數如掃描頻率、角度分辨率、輸出內容等。“service”在此權限下,用戶 可更改 LMS 的所有參數,但不建議客戶使用,(存在由于參數設置錯誤而導致系統故障, 如需使用,請在 SICK 專業人員指導下進行使用)。
此時,若 LMS 返回值為“1“則代表登陸成功。LMS 前面板的”STOP”燈亮,表示停止測量 并開始準備接受參數修改指令。
設置掃描頻率與分辨率
這里修改的 LMS 掃描頻率為 50Hz,角度分辨率為 0.5(這里的的例子是LMS1xx的)。LMS511點開始角和終止角可以按照上述例子設置。
這里是LMS511反饋的角度分辨率與掃描頻率電文。
設置掃描輸出電文
修改 LMS 掃描頻率為 50Hz,起始角度為 0 度,結束角度為 90 度。
存儲參數
存儲數據
返回數據
運行并接受掃描數據
注銷并啟用設備,輸入此指令后,LMS 前面板指示燈變綠,提示此時 LMS 處于正常測量狀態。
返回狀態
看到這里你肯定了解基礎電文的用途,記不下來沒關系,用到的時候翻開開發者手冊查詢一下就好了。 講了那么多,了解了一些電文的作用功能,但是如何使用這些電文,甚至在哪里輸入上面這些電文你肯定還不知道,下面內容如何利用電文獲取數據幀的兩種方式與數據幀的含義一定是你想要的。
LMS511返回數據幀及含義
TCP/IP
在講解發送指令獲得數據之前,有必要了解一下TCP/IP的概念,因為在基于MATLAB對LMS設置讀取數據時候使用的就是這個技術。
網絡由下往上分為物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層和應用層。 IP協議對應于網絡層,TCP協議對應于傳輸層,也可以說,TPC/IP協議是傳輸層協議,主要解決數據如何在網絡中傳輸。有時候也會看到Socket的概念,實際上Socket是對 TCP/IP協議的封裝和應用。Socket本身并不是協議,而是一個調用接口(API)。 通過Socket,才能使用TCP/IP協議。Socket編程接口在設計的時候,就希望也能適應其他的網絡協議。所以說,Socket的出現只是使得程序員更方便地使用TCP/IP協議棧而已,是對TCP/IP協議的抽象,從而形成了我們知道 的一些最基本的函數接口,比如create、listen、connect、accept、send、read和write等等。
數據獲取發送指令過程
LMS 可通過指令返回單次測量和連續測量的數據。
單次測量:發送指令后 LMS 會返回當前 LMS 的測量數據,執行后只返回一幀數據,具體用ASCII還是HEX自己選擇就好了。
連續測量:發送指令后,LMS 會實時返回其測量數據
指令 ASCII:sEN LMDscandata 1 指令 HEX:02 73 45 4E 20 4C 4D 44 73 63 61 6E 64 61 74 61 20 31 03連續測量停止:發送指令后,LMS 停止向外發送測量數據
指令 ASCII:sEN LMDscandata 0 指令 HEX:0273454E204C4D447363616E64617461203003數據幀含義
單次測量和連續測量所返回的數據數據結構相同例如。
sRA LMDscandata 1(版本號) 1(設備號) 89A271(序列號) 0 0(設備狀態) C44(指令 計數) 5CA(掃描計數) E1CED(開始時間) E2775(發送時間) 0 0(數字量輸入) 7 0(數字量輸出) 0(保留) 9C4(2500HZ) 168(每次掃描頻率) 0(沒有編碼器) 1(輸出通 道 1) DIST1(輸出內容) 3F800000(系數) 00000000(系數偏移量) FFF92230(開始角 度) 9C4(角度分辨率) 43A(掃描點個數) 44F(第一個掃描點:1103mm) 445 451 440 451 450 44F 459 45B 474 45B 47B 46E 470 483 49B 481 48C 4A3 49D 4B3 4B7 4B1 4C7 4C1 4C2 4D4 4DD 4E4 4EB 4FA 511 505 504 50E 522 529 544 537 53C 54F 55A 564 56C 586 587 583 5A1 5B2 5A4 5AD 5C9 5CE 5ED 5FB 5F6 5FF 609 … … 48 56 4D 4D 3C 43 45 44 44 46 4C 56 39 48 41 4B 43 52 50 3E 60 73 66 88 88 9F AA B2 B3 CD E6 105 10D 12D 145 196 1A1 1C1 1B1 1E3 1E3 1E4 1DE 1E7 1EB 1F0 1E4 1F1 1F7 1FE 206 1F5 1FA 206 1F9 200 203 20A 21C 210 20C 20D 205 21D 219 21A 222 217 22E 229 225 237 22D 22D 0 0 0 0 0 0
通過終端獲取數據幀
通過MATLAB獲取數據幀并顯示
有關TCP/IP的例子
使用 instrhelp tcpip命令,可以看到tcpip函數的及參數的完整介紹。
% MATLAB example using TCP/IP (matlab_tcpip_example.m) % This simple code example demonstrates how you can use MATLAB to exchange data % with a remote application not developed in MATLAB. This code example is taken % from a MATLAB Digest technical article written by Edward J. Mayhew from % George Mason University. While HTTP was used as the higher-level protocol in % this example, you can use other protocols, as was the case in the project. % MATLAB supports TCP/IP using Instrument Control Toolbox. Requires MATLAB and % Instrument Control Toolbox. % % On line 14, substitute "www.EXAMPLE_WEBSITE.com" with an actual website with % which you wish to communicate.% Create TCP/IP object 't'. Specify server machine and port number. t = tcpip('192.168.1.1', 80); % Set size of receiving buffer, if needed. set(t, 'InputBufferSize', 30000); % Open connection to the server. fopen(t); % Transmit data to the server (or a request for data from the server). fprintf(t, 'GET /'); % Pause for the communication delay, if needed. pause(1) % Receive lines of data from server while (get(t, 'BytesAvailable') > 0) t.BytesAvailable DataReceived = fscanf(t) end % Disconnect and clean up the server connection. fclose(t); delete(t); clear tMATLAB中獲取的實時廓線
通過MATLAB獲取數據幀后,提取DIST1后的距離數據,將十六進制的距離數據轉化為十進制距離數據,根據掃描角度計算廓線x,y坐標。
SOPAS ET中實時獲取的廓線信息。
總結
可以看到MATLAB中通過電文實時獲取的廓線與SOPAS ET中實時廓線一致,說明幀數據獲取、解算的正確性。
參考
http://blog.csdn.net/guomutian911/article/details/41206663
http://blog.csdn.net/u012736279/article/details/41479123
http://www.cnblogs.com/qq78292959/archive/2009/09/22/2077085.html
http://www.cnblogs.com/rouwawa/p/6959009.html
http://www.cnblogs.com/fuyuanming/articles/4848250.html
總結
以上是生活随笔為你收集整理的SICK LMS511 利用串口数据采集的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: XCP实战系列导读
- 下一篇: 英汉词典c语言实验报告,大学课程英汉电子