找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 382|回复: 4
收起左侧

细节,一个触摸屏RS485通信数据延迟的“治疗”

[复制链接]
ID:63113 发表于 2024-3-13 20:25 | 显示全部楼层 |阅读模式
本文介绍一个触摸屏在RS485通信时遇到数据延时的一个解决方法。
前段时间做单片机系统、电路板、控制器、仪器、物联网、工控、电子产品、软件开发项目(Q:2531二六3726)时“接诊”了一个“病人”:是一台装置,它的主控板实现了控制3台泵,采集传感器信息,主控板的一个串口用TTL电平与自带的一个触摸屏A通信,主控板的另一个串口用485 & Modbus RTU协议与触摸屏B通信,触摸屏B带2台装置,出现问题是其中一台装置的一个数据在触摸屏B上显示延迟。
1.png

1、        系统详细信息
主控板处理器是STC单片机,触摸屏A是淘晶驰7寸屏,触摸屏B是昆仑通态10寸屏,泵是直流12V/13W的隔膜泵,系统电源用的是12V/5A的电源适配器。
2、        出现了什么问题?
在启动装置后,各个装置与自带的触屏A参数显示与控制正常,各个装置与连接的触摸屏B控制功能正常,但是在触摸屏B上参数显示有一个装置(如装置2)的一个数据不正常,出现很长时间数据不更新的情况。
3、        可能的原因
怀疑泵的电机导致485信号干扰:
由于在每一台装置里布置了3台12V直流电机,电机在运行时可能产生电磁干扰导致485电平错误。
那么,先采取的解决方法是将装置内外的485电缆由并线改为双绞线,并串磁珠,这在理论上是可以降低电磁干扰对485信号的影响。
那就试一试,不过尽管采取了换双绞线串磁珠的的措施,但是数据不更新的现象依然存在,那么把485芯片和单片机也换了,但是问题也没解决。
既然不是硬件问题,那么看看程序:
由于在昆仑通态触摸屏组态Modbus RTU协议时数据更新是查询反馈法,就是触摸屏发送读指令,主控板需根据要求反馈数据。
是不是在主控板里触摸屏的读指令多了被覆盖了?那么在主控板的程序里除了收到触屏的读指令后反馈之外,再加个定时发送数据给触屏。但是经测试,触屏上数据长时间不更新的现象还是存在,看来这也不是主要问题。
最后到触屏组态界面,发现“通讯等待时间”为200毫秒,疑似有点问题,“通讯等待时间”是触屏发送指令后收到返回帧的允许等待时间,超过这个时间数据会被丢弃。
而在本案里主控板里收到触屏的读指令之后可能不会马上反馈数据,要等到while循环到了处理触屏指令时才会向触屏发送数据,这里在while循环里执行的代码还有点多,有可能会超过200毫秒才会回复数据。
2.png

那么把“通讯等待时间”改为600试一试:见证奇迹的时刻到来了,把触屏的这个参数改了之后,触屏B与两个装置之间通信无比“丝滑”,触屏上数据响应非常及时,问题解决,那么这个系统就“治好了”。
其实这真是一个小细节,“通讯等待时间”200是默认值一般无需修改,但是在不同的通信对应方可能会有不同的情况,这个参数也要根据系统情况做修改设置。这虽小,但也够折腾,难在意想不到,项目经验就是一步一步积累的。
一点小总结分享,全文完。
沙鸥 成都 2024年3月13日


回复

使用道具 举报

ID:514317 发表于 2024-3-14 11:39 | 显示全部楼层
实际上Modbus RTU和TTL的串口速率是一样的,一般默认是9600,传输数据很慢会导致数据采集失败,要么提高通信速率要么增大采集数据时间间隔,这是做Modbus通讯必须要注意的
回复

使用道具 举报

ID:433219 发表于 2024-3-14 15:57 | 显示全部楼层
通盘考虑吧:响应间隔,
回复

使用道具 举报

ID:639333 发表于 2024-4-1 21:45 | 显示全部楼层
就是程序执行过程中,通讯等待时间相较于程序执行时间过短,数据丢失了
回复

使用道具 举报

ID:939553 发表于 2024-4-6 18:01 | 显示全部楼层
厉害,我一般设置为500~1000ms
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表