SICK LMS511 利用串口数据采集

news/2024/10/18 9:19:05/

引言

应用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自己选择就好了。

指令 ASCII:sRN LMDscandata
指令 HEX:02 73 52 4E 20 4C 4D 44 73 63 61 6E 64 61 74 61 03

连续测量:发送指令后,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 t 


这里写图片描述
MATLAB中获取的实时廓线

通过MATLAB获取数据帧后,提取DIST1后的距离数据,将十六进制的距离数据转化为十进制距离数据,根据扫描角度计算廓线 xy 坐标。


这里写图片描述
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


http://www.ppmy.cn/news/275137.html

相关文章

SICK激光雷达LMS511数据提取与分析

因工作需要,近期对SICK进行了数据提取与分析,将过程描述如下(最后有代码下载地址): 提取:LMS511有网络接口,通过发送命令的方式即可提取数据,提取的数据可以保存到记事本中。具体网上搜一下即可。 推荐使…

华为android强刷系统下载地址,华为Y511官方rom固件刷机包下载_Y511原版系统强刷升级包...

在这里来给大家分享一下华为Y511的官方rom固件包,这些固件包都是官方原版的,虽说现在官方的包不是很多,不过以后有新的发布会一并更新上来的,如果有需要的可以下载下来备用了,同时这些固件包还可以用来救砖用的。 提示…

如和使用matlab进行求导 ,入门级教程

文章目录 问题如图所示运行结果如图代码分析完整代码完结撒花 问题如图所示 运行结果如图 代码分析 % 定义样本数量 n 500;这行代码定义了一个变量 n,它代表样本数量。这个变量在后面的代码中会被用到。 % 将 s 和 z 取值范围分成子区间的个数 num_intervals 40…

【每日一题Day230】LC1240铺瓷砖 | 暴力回溯

铺瓷砖【LC1240】 你是一位施工队的工长,根据设计师的要求准备为一套设计风格独特的房子进行室内装修。 房子的客厅大小为 n x m,为保持极简的风格,需要使用尽可能少的 正方形 瓷砖来铺盖地面。 假设正方形瓷砖的规格不限,边长都是…

儿童睡眠慢波的起源、同步和传播

摘要 目的:使用EEG delta功率(<4Hz)测量的睡眠慢波活动在整个发育过程中发生显著变化,反映了大脑功能和解剖结构的变化。然而,个体慢波特征随年龄的变化尚未被彻底研究。在这里,本研究旨在表征儿童期到成年期的个体慢…

Elasticsearch8.6.0安装

Elasticsearch 8.5.0 安装 Elasticsearch 简介Elasticsearch 8.6.0 安装创建网络拉取镜像运行镜像设置密码修改kibana配置绑定ES代码绑定:手动绑定: 配置ik分词器扩展词词典停用词词典 Elasticsearch 简介 Elasticsearch(ES) 是一…

独立产品灵感周刊 DecoHack #041 - 那些独立开发者是怎么养活自己的

本周刊记录有趣好玩的独立产品设计开发相关内容,每周发布,往期内容同样精彩,感兴趣的伙伴可以点击订阅我的周刊。为保证每期都能收到,建议邮件订阅。欢迎通过 Twitter 私信推荐或投稿。 💻 产品推荐 1. SOCCER STREAM…

Java 进阶 -- 集合(四)

5、算法 这里描述的多态算法(polymorphic algorithms)是Java平台提供的可重用功能。它们都来自Collections类,并且都采用静态方法的形式,其第一个参数是要对其执行操作的集合。Java平台提供的绝大多数算法都在List实例上操作&…