python信号处理库_python开源协议

python信号处理库_python开源协议本发明涉及的是一种在用电采集终端上实现标准MBUS协议接口用来采集水表、热量表、气表数据的方法,具体涉及一种基于MBUS标准协议接口模块采集水、热、气表的方法,属于用电信息采集领域。背景技术:我国正处于自动化楼宇建设事业蓬勃发展的时期,远程抄表系统作为其中重要的一环,正朝着自动化及智能化方向发展;MBUS(仪表总线)总线作为一种通讯方式,以其高性价比,在水热测量仪表中得到了广泛的应用,大大推动了远…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

python信号处理库_python开源协议

本发明涉及的是一种在用电采集终端上实现标准MBUS协议接口用来采集水表、热量表、气表数据的方法,具体涉及一种基于MBUS标准协议接口模块采集水、热、气表的方法,属于用电信息采集领域。

背景技术:

我国正处于自动化楼宇建设事业蓬勃发展的时期,远程抄表系统作为其中重要的一环,正朝着自动化及智能化方向发展;MBUS(仪表总线)总线作为一种通讯方式,以其高性价比,在水热测量仪表中得到了广泛的应用,大大推动了远程抄表系统的发展。

目前,许多集成电路制造商提供了MBUS接口芯片,如德州仪器的TSS 721;这些芯片在MBUS通信类设备中得到了广泛的应用,但对于一些对成本敏感的设备,采用这类芯片无疑会增加设备制造成本。

目前,各类智能测量仪表中均采用单片机控制设备运行,而大部分单片机中都具备ADC(模数转换器)模块,因此,本文提出一种利用单片机(STM32F407)的ADC功能,配合外部MBUS接口电路,实现与水热表的MBUS通信。

技术实现要素:

本发明提出一种基于MBUS标准协议采集水、热、气表的方法,其目的旨在方便与具备MBUS接口的水、热、气表进行通信。

本发明的技术解决方案:基于MBUS标准协议采集水、热、气表的方法,该方法利用了基于MBUS标准协议接口模块,基于MBUS标准协议接口模块的结构包括单片机、模数转换器、发送电路单元、接收电路单元;其中,单片机串口的发送引脚与发送电路的输入引脚相连,模数转换器的模拟量输入引脚与接收电路的发送引脚相连,模数转换器的输出引脚与单片机串口的输入引脚相连,发送电路的输出引脚和水、热、气表MBUS接口的输入引脚相连,水、气、热表MBUS接口的输出引脚和接收电路的输入引脚相连。

本发明的优点:

1)将基于MBUS标准接口协议用于低压电力线载波抄表终端,使得用电信息采集可以方便的抄读MBUS接口水表、热表、气表等;其电路带动负载多,抗干扰能力强、电路结构简单,在恶劣的情况下也能保证数据正常接收和发送;

2)接收电路采用AD值采样来解析数据,在软件实现方便也不复杂,可选的单片机硬件要求也不高,即时通信失败短时间能恢复,保证数据可靠;

3)不采用专用的MBUS接口芯片,而采用以STM32F407为中心,配合简易的外围电路来模拟MBUS数据收发,实现与从站的通信,因为接收外围电路简化,降低了成本,有一定的经济效益。

附图说明

附图1是本发明的整个产品框架原理示意图。

附图2是本发明的应用原理示意图。

附图3是发送电路单元的结构示意图。

附图4是接收电路单元的结构示意图。

附图5是ADC的输入引脚电压波形。

附图6是从站发送的报文波形图。

附图7是整个算法的工作流程图。

具体实施方式

基于MBUS标准协议采集水、热、气表的方法,该方法利用了基于MBUS标准协议接口模块,基于MBUS标准协议接口模块的结构包括发送电路单元、接收电路单元;其中,单片机串口的发送引脚与发送电路的输入引脚相连,模数转换器的模拟量输入引脚与接收电路的发送引脚相连,模数转换器的输出引脚与单片机串口的输入引脚相连,发送电路的输出引脚和水、气、热表MBUS接口的输入引脚相连,水、热、气表MBUS接口的输出引脚和接收电路的输入引脚相连。

所述的发送电路单元包括电阻、电容、肖基特二极管、稳压二极管、NPN三极管、P道沟场效应管,同时外部接入直流28V和12V电源,MCU发送端输入高电平时,发送电路输出28V, MCU发送端输入低电平时,发送电路输出12V,通过控制单片机发送引脚达到向外输出数据的目的;其中,R19为5Ω电流采样电阻,作用是将电流信号转化为电压信号,这个采样电阻会跟着负载的不同R19上的压降会有所不同,并传送给接收电路;当MBUS发送高电平信号时,V5导通,VGS(场效应管的栅极与源极间电压)电压为,此时PMOS(P道沟场效应管) Q4导通,MBUS0 TX(远程抄表系统发送)端输出高电平;当MBUS发送低电平信号时,V5截止,VGS电压为0V,此时Q4截止,MBUS0 TX输出低电平(12V);R19为5Ω电流采样电阻,采样电阻上的电压信号MBUS0-经运算放大器后可直接供MCU进行ADC(模数转换器)处理或经比较器转换成TTL(逻辑电平)电平后供MCU(单片机)处理;这个采样电阻会跟着负载的不同R19上的压降会有所不同。

所述接收电路单元包括采样电阻、电容、运算放大器;外部接入直流5V电源,电压信号经过放大、偏置后,通过模数转换器输入到单片机的接收引脚;在MBUS发送电路中,MBUS接收端输入电流信号为0~20mA,采样电阻上的MBUS0-(远程抄表系统接收端)幅值为,然后该信号输入到MBUS接收电路中,通过运算放大器对信号进行20dB放大,放大后信号幅值为1V,运算放大器的型号优选SGM321。

所述接收电路单元中有隔直电容C90,隔直电容C90将MBUS总线上因为静态电流造成的直流偏置信号隔除,电阻R76、R77、R46构成运放直流偏置电路,直流偏置电压为,运算放大器放大倍数为倍,直流偏置电压经过运算放大器放大约为1.2V,当MBUS0-端接收到信号时,经过C90电容耦合,再经过放大器放大,将信号直接输入MCU的ADC(模数转换器),由MCU处理。

算法作为MBUS数据功能的一部分,其作用是将模拟信号转化为数字信号,所述接收电路单元和以下算法相互配合工作:根据MBUS总线协议,主站通过检测总线上是否出现11-20mA脉冲电流确定接收“0”还是“1”,当有脉冲时,表示“0”,否则为“1”,结合接收电路,当ADC检测到至少0.5V的电压跳变时表示“0”,否则为“1”。

经测试,ADC的输入引脚电压波形如图5所示;整个从站发送报文波形如图6所示,从图中可以看出,输入电压逐步下移,但电压跳变值保持稳定。

根据上述接收电压波形特点,整个算法的原理如下:当主站发送数据前,检测总线上空闲时的电压值,并作为接收时判断起始位的参考电压值;数据发送完成后,对接收数据进行解析,得到正确数据供单片机使用;

具体解析过程如图7所示:在ADC看门狗模式中设置预期的阈值上限值,使能ADC中断,启动ADC采样;当总线电压变高,并超过阈值上限时,则会触发ADC中断;在ADC中断服务程序中,关闭ADC中断,并启动定时器中断,中断周期为半个bit位的时间,用来采集起始位的电压值,在定时器中断服务程序中,计算电压值,比参考值电压大0.5V以上则视为数据起始位,并启动周期为1个bit位时间的定时器中断,采集数据位,校验位及停止位的电压值;否则,重新检测起始位。

为了避免信号中噪声的影响,对于起始位及后面的数据位、校验位、停止位中的每个bit,在其传输过程中均多次采样,采样次数因波特率的变化而变化,然后采用中位值平均滤波算法处理采集到的数据,得到一个可靠的电压值。

为了能够自适应不同的负载,MBUS主站每次发送数据前,采集电压值作为参考值,并在随后接收的过程中,将检测到的每个bit电压值与参考值作比较,并将此电压值作为新的参考值,与下一个bit电压值作比较。通过计算电压值的变化来判断bit位值,能够保证在不同的负载下,均能正确接收从站的数据。

所述MBUS为远程抄表系统仪表总线,VGS为场效应管是栅极与源极间电压、TTL为逻辑电平、MBUS0 TX为远程抄表系统发送端、MCU为单片机、ADC为模数转换器。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/181534.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 什么是用户态和内核态的区别_内核态和用户态的概念

    什么是用户态和内核态的区别_内核态和用户态的概念什么是用户态和内核态从图上我们可以看出来通过系统调用将Linux整个体系分为用户态和内核态(或者说内核空间和用户空间)。那内核态到底是什么呢?其实从本质上说就是我们所说的内核,它是一种特殊的软件程序,特殊在哪儿呢?控制计算机的硬件资源,例如协调CPU资源,分配内存资源,并且提供稳定的环境供应用程序运行。用户态就是提供应用程序运行的空间,为了使应用程序访问到内核管理的资源例如CPU,内存,I/O。内核必须提供一组通用的访问接口,这些接口就叫系统调用。为什么要区分内核态和用户态往往我们的系统的资源是

    2025年12月5日
    4
  • Android 系统签名打包方法

    Android 系统签名打包方法方式一命令行生成(推荐):此方式不需要配置,步骤也不多。1、在应用程序manifest.xml文件根节点中加入属性:Android:sharedUserId=“android.uid.system”;2、在android系统目录build/target/product/security/拷贝系统签名文件:platform.x509.pem、platform.pk8;3、在out/host/linux-x86/framework目录下找到signapk.jar文件;4、把三个文件(plat

    2022年6月21日
    25
  • js移除数组中指定元素的值_js删除数组中指定几个元素

    js移除数组中指定元素的值_js删除数组中指定几个元素首先需要找到元素的下标:vararray=[“zhangsan”,”lisi”,”wangwu”];varindex=array.indexOf(“lisi”);使用splice函数进行移除:if(index>-1){array.splice(index,1);}splice函数的第二个参数指删除的数目。splice直接修改原数组,…

    2025年7月31日
    3
  • 从零开始学习UCOSII操作系统1–UCOSII的基础知识

    从零开始学习UCOSII操作系统1–UCOSII的基础知识从零开始学习UCOSII操作系统1–UCOSII的基础知识前言:首先比较主流的操作系统有UCOSII、FREERTOS、LINUX等,UCOSII的资料相对比其余的两个操作系统的资料是多很多的。更重要的原因是自己本身还没有能力深入的研究Linux操作系统。本次学习UCOSII主要是学习内核的设计原理。此次专栏涉及到的API的使用是非常小的,仅仅作为本人学习的记录。后期也会对比UCOSIII说出实…

    2022年5月4日
    212
  • Stata字符型与数值型数据的转换——上市公司证券代码字符型与数值型的互换

    Stata字符型与数值型数据的转换——上市公司证券代码字符型与数值型的互换实现效果假设 000001 000012 000123 002345 为某些上市公司证券代码 上市公司实证研究中 常常需要用到上市公司证券代码 将字符型转为数值型比较容易 直接用 destring 命令即可实现 但是数值型转为字符型并且补齐 6 位数的命令比较少见 字符型转为数值型 destringStkc replace 数值型转为字符型 tostringStkc

    2025年9月19日
    2
  • static声明静态外部类_static静态变量的理解

    static声明静态外部类_static静态变量的理解在一个类中创建另外一个类,叫做成员内部类。这个成员内部类可以静态的(利用static关键字修饰),也可以是非静态的。由于静态的内部类在定义、使用的时候会有种种的限制。所以在实际工作中用到的并不多。   在开发过程中,内部类中使用的最多的还是非静态地成员内部类。不过在特定的情况下,静态内部类也能够发挥其独特的作用。    一、静态内部类的使用目的。    在定义内部类的时候,可以

    2022年10月11日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号