串口调试工具在工业传感器数据采集中的参数匹配要点

描述

工业传感器的数据采集,串口通讯是个绕不开的基础环节,温度变送器、压力传感器、流量计,大量设备至今还是靠RS485或者RS232把数据送出来。但传感器这类设备跟PLC、变频器有个明显不同,同一类型的传感器,不同厂商的通讯参数定义可能差异相当大,有些甚至完全是私有协议,没有公开文档。调试工具接上去能不能把数据读出来,很大程度上取决于参数匹配做得准不准,这个环节没做好,后面的采集系统再完善也是空谈。

一、传感器的通讯参数,比PLC更分散更难统一

PLC和变频器这类设备,同一品牌不同型号之间的默认通讯参数通常比较统一,积累了经验之后心里有个大概的预期。传感器就不一样了,市面上做温度变送器的厂家多、型号杂,每个厂家对默认波特率的选择没有统一标准,4800、9600、19200都有,部分高速传感器甚至用到115200。数据帧格式同样参差不齐,有的用Modbus RTU,有的是厂家自定义的帧格式,有的用ASCII码传输而不是二进制。这种分散性意味着每接一款新传感器,都不能靠经验推测,必须找到对应的手册确认具体参数,不存在通用模板。

二、波特率和数据格式,匹配的优先顺序

面对一款通讯参数不确定的传感器,有个比较高效的参数匹配顺序。先试波特率,从最常见的9600开始,数据位8位、无校验、1位停止位固定不动,只改波特率逐个尝试,终端窗口出现有规律的非乱码输出,说明波特率对了。这一步成功之后,再核对数据帧格式,是不是Modbus RTU,帧头帧尾的格式对不对,功能码是不是在可识别的范围内。这个顺序的好处是把变量一个个独立出来排查,而不是同时改多个参数,容易把自己搞混。如果厂家能提供手册,直接按手册设置当然是最快的,手册找不到的情况下,这套逐步试探的方法是比较可行的替代方案。

三、Modbus寄存器地址,传感器数据在哪里是个问题

多数工业传感器支持Modbus RTU协议,但波特率和帧格式对上了之后,还有一个关键问题没解决,传感器的测量数据存放在哪个寄存器地址里。温度值、压力值、状态字,这些数据通常分散在不同的寄存器里,具体地址需要查传感器的Modbus地址映射表,不同厂家的寄存器分配完全不同,没有统一标准。地址读对了,还要注意数据格式,有的传感器把测量值乘以10或者100以整数形式存放,有的用浮点数,数据类型理解错了,采集到的数值会完全不对。这类问题在实际采集系统开发里很常见,靠报文捕获工具直接看原始字节,对照手册里的数据格式说明解析,比猜测要可靠得多。

调试工具

L-com USB至RS422/485端子板转接器,2KV隔离

四、多台传感器总线,参数一致性是基础

RS485总线上挂多台传感器的场合,所有传感器的波特率、数据位、校验位必须完全一致,有一台设置不同,这台的报文在总线上就是乱码,同时可能干扰相邻帧的接收。出现这个问题的时候,串口分析仪监听的报文里能看到周期性的异常帧,跟正常帧混在一起,找出来对照发送时序,能定位到是总线上哪个时间节点开始出现异常,进而判断是哪个地址的传感器在发出不符合格式的信号。另外同一条总线上每台传感器的Modbus地址不能重复,这个要求虽然是常识,但批量安装的时候如果没有专人核对,同一批货出厂默认地址可能一样,装上去之后地址冲突,表现就是查询某个地址的时候偶尔能收到应答,偶尔收不到,规律性不强,排查起来容易绕弯路。

五、采样周期和轮询间隔,影响数据时效性

串口数据采集的效率,跟轮询间隔的设置直接相关。总线上传感器多,每台轮询一次需要一定的时间,轮询间隔设置不合理,要么采样频率不够,数据时效性差;要么间隔太短,上一轮还没跑完下一轮就开始,总线上出现指令堆叠,通讯混乱。合理的轮询间隔,需要根据总线挂载的传感器数量、每次通讯的报文长度、波特率,把一轮完整轮询所需的时间算清楚,再在这个基础上留出足够的余量。串口调试工具在这个场合同样有用,用时间戳记录每次请求和应答之间的间隔,能直接看出现有轮询设置下的实际通讯效率,发现有报文超时或者拥堵的情况,依据这个数据调整轮询参数。

六、工具选型和现场配套,传感器采集的实际需求

传感器数据采集场合对调试工具的要求,跟维护PLC变频器有些不同。传感器数量通常更多,总线可能相当长,对工具的连续监听能力和报文记录容量要求更高,用来应急调试的普通串口适配器往往不够用,需要专门的串口分析仪来处理大量报文的捕获和分析。另外传感器安装位置有时候在现场比较分散,配套的调试线缆长度和屏蔽质量需要匹配实际布线条件,变频器这类强干扰源附近的传感器,线缆屏蔽要求更高。

L-com诺通具备多种串口线缆组件和连接器,包括RS232、RS485等,丰富的转接设备,工业级品质,方便快速进行设备连接转换。产品海量本地库存,行业认证,现货一件起发,当天发货,满足工业设备的紧急连接需求。

七、快问快答

Q:传感器说明书上只有Modbus地址表,没有通讯参数说明,该怎么确定波特率?

A:可以先尝试最常见的几个波特率,9600、19200、38400、115200,每次只改波特率,其他参数保持8-N-1不变,用串口分析仪监听总线,看有没有出现格式正确的Modbus帧,有规律的非乱码输出基本就是波特率对了。如果逐个试了还是找不到,联系传感器厂家技术支持是最直接的途径,说明书不全的情况下厂家通常能提供默认通讯参数,这比盲目穷举要省时间。

Q:采集到的传感器数值跟实际测量值差了10倍,是协议解析错了还是传感器本身的问题?

A:差10倍这个比例很有规律,基本可以判断是数据格式理解偏差,不是传感器硬件问题。很多传感器为了传整数避免浮点运算,把测量值乘以10存入寄存器,比如实际温度25.6度,寄存器里存的是256,读出来直接当作数值就是256,差了10倍。回查传感器的Modbus地址映射表,确认对应寄存器的数据格式说明,看有没有缩放系数或者小数点位数的说明,按说明换算之后数值就对了。

Q:总线上某台传感器偶尔不响应,其他传感器都正常,是这台传感器坏了吗?

A:不一定是坏了,偶发性不响应有几个常见原因。首先确认这台传感器的Modbus地址是否跟其他设备有冲突,地址冲突会导致偶发性的应答混乱。再确认这台传感器的波特率和通讯参数是否跟总线其他设备完全一致,参数稍有偏差会导致偶发性解析错误。如果参数都对,可以把这台传感器单独接到调试工具上,排除总线干扰做单机测试,如果单机正常,问题大概率在总线布线或者这台设备的接线位置有干扰,而不是传感器本身损坏。

Q:RS485总线挂了十几台传感器,轮询一圈感觉比较慢,怎么提高采集效率?

A:几个方向可以优化。首先确认波特率有没有设置到支持的最高值,低波特率每次通讯耗时更长,在不影响通讯稳定性的前提下适当提高波特率能明显缩短单次通讯时间。另外检查轮询程序里两次请求之间的等待时间设置,很多采集程序为了保险会设置比较长的等待时间,根据实际测试的传感器应答速度适当缩短,能减少大量等待浪费的时间。如果传感器支持广播查询或者多寄存器批量读取,一次读取多个数据点,减少请求次数,也是提升效率的有效手段。

审核编辑 黄宇

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分