二总线,替代传统485总线通讯,主动上报方案简易实现方法

2024-05-09 15:36

本文主要是介绍二总线,替代传统485总线通讯,主动上报方案简易实现方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 二总线通信设计专栏

  • 《二总线,替代传统485总线通讯,选型及应用-CSDN博客》
  • 《二总线,替代传统485总线通讯,低成本直流载波方案实现及原理-CSDN博客》
  • 《二总线,替代传统485总线通讯,调试避坑指南之最大的电流环路坑-CSDN博客》
  • 《二总线,替代传统485总线通讯,从站设计关注一个地方十倍提升-CSDN博客》
  • 《二总线,替代传统485总线通讯,主动上报方案简易实现方法-CSDN博客》
  • 《二总线,替代传统485总线通讯,地址自动分配或主动上报方案-CSDN博客》
  • 《二总线,替代传统485总线通信,商用高效从机掉线检测方案-CSDN博客》
  • 《二总线,替代传统485总线通信,线材选型及避坑-CSDN博客》
  • 《二总线,替代传统485总线通讯,主站设计-CSDN博客》
  • 《二总线,替代传统485总线通讯,直流载波主机设计方案-CSDN博客》
  • 《二总线,替代传统485总线通讯,低成本直流载波PCB设计要点总结-CSDN博客》
  • 《二总线,替代传统485总线通讯,在线地址分配商用方案解析-CSDN博客》
  • 《二总线,替代传统485总线通讯,高速直流载波通信应用-CSDN博客》

一、概述

    二总线通讯和传统485通讯类似,不能像CAN一样,在物理层面实现总线冲突检测,但在实际产品需求中,确实存在少量的偶发性上报,但又有即时性要求的需求,这种少量、偶发性主动上报功能利用软件也同样可以实现。

二、本文类容

    本文主要利用XM2BUS的从站芯片XM332芯片的CSMA端口引脚,配合软件逻辑来实现主动上报的原理讲解,本文所涉及的主动上报主要针对少量、偶发性的主动上报,比如电子围栏、货架、生产线传感器异常报警、车库系统车位传感器检测等。

三、XM332功能介绍

    在博文《二总线,选型及应用-CSDN博客》中以及介绍了XM620+XM332的基本原理,有需要可以先去了解,XM620为主站,XM332为从站,其通讯方式为半双工主从模式,即主站下发数据所有从站均可收到,从站上传数据,只有主站能够收到。

    XM332引脚说明如下所示,其中第4脚为CSMA载波监听引脚,主要监控总线当前数据(包括主站下发和其它从站上传),有数据(低电平),空闲(高电平);但是要注意的是由于二总线通讯波特率是2400bps/9600bps,本身单字节数据就超过1ms以上,所以仍然会产生数据冲突,需要理解这点,才能设计比较靠谱的冲突检测逻辑。

引脚

名称

输入

输出

说明

1

VCC

电压输入:(2.7~5.0)V

2

TX

芯片串口发送端

3

RX

芯片串口接收端,建议串联100Ω电阻

4

CSMA

载波监听,有数据(低电平);空闲(高电平)

5

PO

总线信号输出,外接三极管控制100欧电阻接入总线

6

NC2

预留,请悬空或者与7脚短接

7

PI

总线信号输入,需要外接分压电阻

8

GND

电源地

四、主动上报实现方法

    主从通讯中,由于主动上报的内容只是偶发性的,即时性要求高,更多的是对即时性要求不高的巡检操作,首先要区分轮询命令上报和主动上报;在主机轮询命令下,XM332的CSMA引脚有2~3byte的延迟释放时间,从机应改在这个时段内尽快回复,以抢占总线,这样就能避免主动上报和轮询上报的冲突,如果从机无法及时上报,那也可以先回复已经收到指令的上报内容,下次再轮询查询结果。

    主机轮询上报区分后,那么在主动上报中最大的坑就是切忌不要等CSMA一空闲马上上报,因为前面提到CSMA是有单字节延迟的,如果系统中若有2台设备同时需要上报,那么就必然会在这1ms内产生冲突;而是要等CSMA引脚释放后,随机等待N Byte,若还空闲则进行上报。

    如果做到随机数产生,一般简单的方案是采用的就是TIM定时器,不分频的计数值,在产生串口中断/人工触发中断来产生,也可以利用某个AD口采样的bit0,多次采样组合成8 bit形成一个随机值。

    疑问:若还是运气不好,产生了冲突怎么办?主动上报数据增加CRC校验即可;首先主机收到从机的主动上报数据,并进行CRC校验正确,则告知从机数据已经收到,避免从机多次重复上报,若从机未收到主机成功收到,那可以到下一轮再主动上报,并主动延长N Byte延时值减小冲突概率,这些细节问题可以根据产品实际情况而调整,也可以和我一起相互讨论。

五、总结

   本文主要针对XM2BUS二总线对偶发性的主动上报提供解决方案思路,而对于更复杂的多从机,大量并发性主动上报,如自动地址分配,采用的策略则完全不同,当然还有即时性的设备掉线检测等方案,后续也会发布出来,希望一起相互讨论学习,也希望大家多多关注和收藏,谢谢啦。

这篇关于二总线,替代传统485总线通讯,主动上报方案简易实现方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/973779

相关文章

基于Python实现高效PPT转图片工具

《基于Python实现高效PPT转图片工具》在日常工作中,PPT是我们常用的演示工具,但有时候我们需要将PPT的内容提取为图片格式以便于展示或保存,所以本文将用Python实现PPT转PNG工具,希望... 目录1. 概述2. 功能使用2.1 安装依赖2.2 使用步骤2.3 代码实现2.4 GUI界面3.效

MySQL更新某个字段拼接固定字符串的实现

《MySQL更新某个字段拼接固定字符串的实现》在MySQL中,我们经常需要对数据库中的某个字段进行更新操作,本文就来介绍一下MySQL更新某个字段拼接固定字符串的实现,感兴趣的可以了解一下... 目录1. 查看字段当前值2. 更新字段拼接固定字符串3. 验证更新结果mysql更新某个字段拼接固定字符串 -

java实现延迟/超时/定时问题

《java实现延迟/超时/定时问题》:本文主要介绍java实现延迟/超时/定时问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java实现延迟/超时/定时java 每间隔5秒执行一次,一共执行5次然后结束scheduleAtFixedRate 和 schedu

Java Optional避免空指针异常的实现

《JavaOptional避免空指针异常的实现》空指针异常一直是困扰开发者的常见问题之一,本文主要介绍了JavaOptional避免空指针异常的实现,帮助开发者编写更健壮、可读性更高的代码,减少因... 目录一、Optional 概述二、Optional 的创建三、Optional 的常用方法四、Optio

在Android平台上实现消息推送功能

《在Android平台上实现消息推送功能》随着移动互联网应用的飞速发展,消息推送已成为移动应用中不可或缺的功能,在Android平台上,实现消息推送涉及到服务端的消息发送、客户端的消息接收、通知渠道(... 目录一、项目概述二、相关知识介绍2.1 消息推送的基本原理2.2 Firebase Cloud Me

Spring Boot项目中结合MyBatis实现MySQL的自动主从切换功能

《SpringBoot项目中结合MyBatis实现MySQL的自动主从切换功能》:本文主要介绍SpringBoot项目中结合MyBatis实现MySQL的自动主从切换功能,本文分步骤给大家介绍的... 目录原理解析1. mysql主从复制(Master-Slave Replication)2. 读写分离3.

Redis实现延迟任务的三种方法详解

《Redis实现延迟任务的三种方法详解》延迟任务(DelayedTask)是指在未来的某个时间点,执行相应的任务,本文为大家整理了三种常见的实现方法,感兴趣的小伙伴可以参考一下... 目录1.前言2.Redis如何实现延迟任务3.代码实现3.1. 过期键通知事件实现3.2. 使用ZSet实现延迟任务3.3

基于Python和MoviePy实现照片管理和视频合成工具

《基于Python和MoviePy实现照片管理和视频合成工具》在这篇博客中,我们将详细剖析一个基于Python的图形界面应用程序,该程序使用wxPython构建用户界面,并结合MoviePy、Pill... 目录引言项目概述代码结构分析1. 导入和依赖2. 主类:PhotoManager初始化方法:__in

idea maven编译报错Java heap space的解决方法

《ideamaven编译报错Javaheapspace的解决方法》这篇文章主要为大家详细介绍了ideamaven编译报错Javaheapspace的相关解决方法,文中的示例代码讲解详细,感兴趣的... 目录1.增加 Maven 编译的堆内存2. 增加 IntelliJ IDEA 的堆内存3. 优化 Mave

Java String字符串的常用使用方法

《JavaString字符串的常用使用方法》String是JDK提供的一个类,是引用类型,并不是基本的数据类型,String用于字符串操作,在之前学习c语言的时候,对于一些字符串,会初始化字符数组表... 目录一、什么是String二、如何定义一个String1. 用双引号定义2. 通过构造函数定义三、St