M一Bus采集器接电后工作指示小车灯光开关位置讲解闪是正确吗

MBus总线是一种主从式半双工传输总線采用主叫/应答的方式通信,即只有处于中心地位的主站(Master)发出询问后从站(Slave)才能向主站传输数据,如1-1 所示

MBus的主要特点如下:

MBus总线协议的体系结构建立在ISO/OSI参考模型上,由下至上定义了物理层数据链路层和应用层(参见1-1)。

总线协议与OSI参考模型

电缆、拓扑结構、Bit流的表示传输、电气特性

传输参数、数据报格式、寻址、数据完整性

定义数据结构、数据类型、功能代码等

     物理层负责主从站间的bit流傳输数据链路层负责主从站间无差错的传送以帧(Frame)为单位的数据,应用层确定主从站间所传送数据的意义以满足用户的需要对于扩展的MBus网络(超过250个从站)还定义了网络层以提供扩展寻址的功能。其中物理层、应用层和扩展的网络层采用MBus自定义的协议而数据链路层則采用国际电工委员会IEC870-5传输协议。

原则上MBus可以任一种拓扑结构建立网络如星型、环形、总线型等,但通常MBus采用总线型拓扑结构典型的MBus系统如1-2 所示,由一个主站、若干个从站和两根连接电缆组成

主站是一个智能控制器,可为MBus总线提供电源与从站进行通信,保存从站嘚测量数据还可以利用各种现有的通讯手段与异地的计算机联网构成一个完备的远程管理计量系统。从站是各种计量仪表如电表、水表、热表、气表等,它们通过MBus接口并联在总线主电缆上该接口负责收发总线数据,控制总线电源和电池电源的切换两线电缆通常采用標准电话双绞线,没有正负极性之分

MBus物理层bit流传输具有独特的电平特征(如1-2 )。主站到从站的bit流传输通过总线电平切换实现而从站箌主站的bit流传输通过电流调制实现。定义逻辑“1MARK逻辑“0SPACE

逻辑“1”(MARK

主站向从站发送逻辑“1”(MARK)时总线电压为Vmark(≤42V),發送逻辑“0”(SPACE)时电压下降10V以上,降到Vspace(≥12V);从站向主站发送逻辑“1”时从站所取电流为Imark(≤1.5mA),发送逻辑“0”时从站的MBus接口會在Imark上加上脉冲电流11-20mA,形成Ispace

MBus协议规定总线处于空闲状态时用逻辑“1表示,即总线电压维持在Vmark而每个从站取电流Imark1.5mA,即两线制总线上嘚总电流等于Imark*从站总数这样无论总线处于空闲状态还是数据传输状态,总线电压不低于Vspace每个从站所取电流不小于Imark,这个电流就可用作從站电源可见在MBus的正常运行状态下,总线可以持续不断地既传信号又供电源使终端仪表所用电池成为备用电源,减少了仪表定期维护、更换电池等工作量仪表的安装位置也可以比较随意。MBus总线上的bit流传输过程如1-3 所示

虚线左边的时间段是主站到从站的bit流传输,总线電压在VspaceVmark间切换从站电流维持Imark不变;虚线右边的时间段是从到主的bit流传输,从站所取电流在ImarkIspace间切换总线电压基本维持Vmark不变,但由于MBus電源输出阻抗的存在使得电流增大时总线电压略有减小。这表明数据传输过程中任意时刻MBus总线上要么传输电压信号要么传输电流信号,所以MBus只能工作在主从半双工方式下

主站通过检测总线上是否出现11-20mA脉冲电流确定接收“0”还是“1”;从站接收数据时,由于总线绝对电壓会随着距离和总线电流变化而变化故通过检测总线电压与动态参考电压是否相差10V以上来确定接收“0”还是“1”。TI公司的MBus接口芯片TSS721A采用嘚就是这种动态电平识别逻辑它的动态参考电压由从站接入位置处的Vmark对芯片内的一个电容充电获得。该电容充放电电流之比约为40在波特率大于300的情况下只要在传输的bit流中每11位至少出现一个“1”(Vmark),就可以保证动态参考电压始终维持在Vmark附近

MBus数据链路层以国际电工委员會IEC870-5(遥控装置和系统传输协议)为基础,规定了MBus的信号传输方式、字节表示、帧格式以及主从站的连接过程等

根据物理层的特点,MBus采用半双工、异步串行信号传输方式波特率为3009600。信号格式采用起止式异步协议(IEC870-5-1)以字节为单位进行传输,先传低位bitLSB)再传高位bitMSB)总线上表示一个字节的11bit流按传输顺序是:起始位/8bit字节/奇偶校验位/停止位。由于MBus的空闲位(VmarkImark)为逻辑“1”,所以起始位定义为逻辑“0”而停止位定义为逻辑“1”。这样一个字节的传输过程中包括起始、数据、校验、停止共11比特,其中至少有一个逻辑“1”满足MBus从站嘚电平要求。

MBus采用FT1.2异步式字节传输帧格式(IEC870-5-2)由多个字节组成,传输时字节间不允许停顿FT1.2定义了三种帧格式,分别是单字节帧(1-3 )、定长短帧(1-4 )和变长长帧(1-5 )其中S:表示起始位;D:未加说明均表示一个字节;P:表示奇偶校验位;E:表示停止位;发送顺序从咗至右,从上至下

用户数据区0252字节

单字节帧E5H用于接收确认定长短帧用于主站向从站发送指令,变长长帧用于主从站间的数据交换后兩种格式除了起始字节(如10H68H)、终止字节(16H)外还定义了CALCICS字段,变长长帧还封装了一个长达252个字节的用户数据区各字段的意义如下。

    C:控制字段或者叫功能字段定义了帧的功能、数据流向,保证帧的正确发送和接收根据C字段的不同,IEC870-5-2将报文帧命名为不同嘚功能代码MBus常用的功能代码有SND_NKE(初始化从站)、SND_UD(向从站发送数据)、REQ_UD2(请求从站发送数据)和RSP_UD(向主站发送数据)。

    CS:校验和字段通过对前面几个字段求和来检验报文帧是否出现传输错误。

    CI:控制信息字段主要有两方面的功能,一方面是完成主对从的一些配置功能如设定波特率、从站地址等;另一方面在从站向主站发送测量数据时,CI字段设定了用户数据区的基本参数如字节顺序、数据结构等。

MBus嘚通信完全由主站控制主从站之间按以下两种非平衡式传输规则交换报文帧:

SND-NKE<>E5H,主站发送SND-NKE被呼叫从站以E5H单字节帧确认,用于通信开始戓者通信中断后的初始化

SND-UD<>E5H,主站发送SND-UD被呼叫从站以E5H单字节帧确认,用于主站向从站传输数据或者控制信息如设定波特率等。

REQ_UD2<> RSP_UD主站發送REQ_UD2,被呼叫从站以RSP_UD回复用于主站采集从站的测量数据,如热量、流量等这些数据位于RSP_UD的用户数据区。

MBus应用层定义了测量记录的数据類型和数据结构从站利用这些数据类型和结构将测量记录进行编码处理,并封装在长帧的用户数据区内发送;主站则根据这些数据类型囷结构的定义对长帧的用户数据区进行相应的解码,从而获取从站的测量数据因此用户数据区的数据类型和数据结构的定义对于MBus的应鼡具有重要的意义,MBus在这方面针对消耗量计量仪表的测量数据进行了专门的设计

MBus定义了多种数据类型,包括无符号BCD整型、二进制整型、無符号二进制整型、布尔型、32bit复合型(表示测量类型、物理单位等)、32bit日期时间型、16bit日期型、浮点型在这些数据类型的基础上,MBus定义了兩种数据结构:固定数据结构和可变数据结构长帧的用户数据区实际上就是一个用固定数据结构或可变数据结构表示的数据块。

分为6个芓段按顺序分别是:从站标识号码/访问次数/从站状态/测量量类型和单位/计数器1数据/计数器2数据。这种数据结构只能传输两个计数器的数據且对测量记录只能进行固定长度的编码,因此适用于从站只有一两个测量量的场合

可变数据结构分为4个部分,按顺序分别是:固定數据头/数据记录块(DRB/厂商数据头/厂商自定义数据块固定数据头同固定数据结构的前3个字段的意义基本类似;数据记录块由若干子数据塊组成,子数据块数目以及每个子数据块的类型、长度、意义都是可变的每个子数据块保存一个测量数据;厂商数据头是一个标识符(0FH戓者1FH),表明自此以后是厂商自定义数据块;厂商自定义数据块使得在主从站间可以按照自定义的规则交换数据不受标准的约束,进一步增加了使用的灵活性可变数据结构能充分满足远程读数的需要,适用于从站有多种测量量的场合

对于热力站监控系统来说,可变数據结构中的数据记录块保存的各个子数据块是最重要的因为它们保存了热量表的测量数据。每个字数据块由三部分组成按顺序分别是:数据信息块(DIB/量值信息块(VIB/数据编码块(DCB)。数据信息块由一个或多个字节表示说明测量数据的编码类型(二进制还是BCD以及数据編码块的位数)、数据类别(瞬时值还是平均值等);量值信息块也是由一个或多个字节表示,说明测量值的量纲和量级;数据编码块保存该测量数值的编码

应用层除了定义测量记录类型和数据结构外还有其它用途。实际上最新的MBus标准中通过规定许多新的CI字段控制字节並结合用户数据区存储的信息,为用户提供了许多新的功能随着MBus协议的不断发展,应用层功能将不断扩展和完善包括寻址、设定参数、报警以及更为灵活的抄表方式等。

热力站监控系统中MBus从站(Slave)是各公司生产的热量表,其核心部分是一块高度集成的控制芯片它可鉯完成流量、温度等物理量的测量,并可以进行热量值的积分计算热量表为了便于远程抄读,一般都提供了MBus接口热量表的核心控制芯爿也提供了对MBus协议的支持。热量表MBus接口电路广泛使用了TSS721A收发芯片

TSS721A接口芯片是MBus协议组织与TI公司合作开发的MBus协议从站专用接口芯片,遵循EN1434-3标准借助TI公司的强大技术力量,TSS721A接口芯片实现了MBus协议对物理层的各项规定要求有力地推动了MBus协议的推广。根据MBus总线物理层的相关定义TSS721A從站接口芯片具备检测总线电压(接收数据)和调制总线电流(发送数据)的功能,关于TSS721A的通信电路原理可以参阅有关文献TSS721A除了MBus通信功能外,还对MBus总线远程供电和电池供电提供了很好的支持


在之前的SuperCollectorV2.1版本上做了如下改进並将版本号修改为S3CDV1.0,调试过程中问题如下:

1、采用tps61175 dc-dc升压芯片取代了传统的体积庞大的开关电源这样mbus接口就没有负电源了,整个系统也没囿负电源只要一个参考地,方便了系统调试并且极大的简化了Mbus通道控制电路。

2、增加了lora无线模块

3、tps61175启动电流太大,导致arm板不能启动在ldo输出3.3v处加了1.5F的超级电容可以启动arm板,但是用电脑usb接口供电的时候仍然不能启动用电源适配器的时候可以启动。

4、在电路设计上进一步改进使用一个npn三级管+p沟道mos管来控制tps61175的5v输入,这样在上电的时候tps61175是不工作的经过测试时可行的,而且在ldo的3.3v输出地方也不用加超级电容

5、超级电容1.5F容量在测试其两个引脚的时候表现出短路,刚开始怀疑是电容坏了这其实是超级电容的特性,焊接到板子上就没有这种现潒而且能正常使用。对于电池供电设备而言最关心电容的指标是其漏电流。

6、PCB布线的时候地线不用向以前那样全部连接起来,可以茬后面铺铜的时候用各种过孔来将地全部连接起来

7、在调试第4步的电路过程中发现mos管5v的输出没有完全控制住,在上电的时候总有电压输絀经过分析发现时三极管的b级没完全控制住,按照电路设计在上电启动的时候b级应该被下拉电阻拉到0v但实际测试的时候发现b级电压在跳变,因此导致mos管有电压输出从而使tps61175处于工作状态。我将10k的下拉电阻换为200欧姆就可以了看来下拉电阻的选择还是很重要的。

8、最终找箌了电路设计上的错误两个地方做修改:tps611zuo75的en引脚用10k电阻下拉;升压后18v接mbus总线要用1n4007二极管做隔离。


 9、关于短路保护部分电路由于采用了tps61175莋为mbus电源,根据其输出电流和转换效率图可以看出输出电压越高,转换效率越低输出电流能力越小。所以以前的500ma的短路保护电路不能起作用这里设定300ma的短路电流,因此将短路电阻由之前的3.3欧1w修改为10欧1w这样短路保护电路能够正常工作。


10、比较器lm2903在比较端在Mbus总线电压由18V跳变到30V的过程中比较输出端会发生电压跳变,也就是原本应该输出为高现在输出为低电平,这个问题一直困扰了我好几天的时间最後在唐工的帮助下解决了问题,原因可能是输入电压高于了lm2903的电源电压需要用分压电路将mbus总线上的电压进行分压后在输入到lm2903中进行电压仳较。最开始的时候我用10k和20K的电阻串联进行分压将20K电阻上的电压输入lm2903中进行比较发现返回的数据经常报crc错误,这说明lm2903的识别误差较大嘫后我用5K和20K电阻串联进行分压后将20K电阻上的电压输入lm2903中进行比较,这个配置就没有报crc错误了主要是加大了lm2903的输入电压。 

11、在进行读水量嘚时候发现用0XFF广播地址能够读出水量但用序列号读水量不能读取,觉得很奇怪就用示波器抓取了波形,发现在通过电压调试下发数据嘚时候数据并没有发送全有几个bit没有发送出去,是因为进入了mbus总线接收模式后将mbus电压调制模式关闭了通过修改程序在由mbus发送模式转换箌mbus接收模式的时候加了几个毫秒的延时就可以了。

这张图就是电压调制被提前关闭可以看到第二行最后几个的波形变化没有影响到第一荇。


这张图就是正常的电压调制


11、由于在增加了tps61175后上电瞬间电流较大对ldo输出的3.3v电源有一个下拉,还是存在影响核心板导致核心板复位嘚情况;后续的测试中我将tps61175的en端用10k的上拉电阻连接到5v输入电压上,后端再通gpio管脚来进行mbus通道的电源打开和切换并且在ldo的输入和输出端加叻100uf的电容。后续有时间可以好好考虑下电源的设计准备用12v输入电源。

12、在进行测试的过程中发现都回来的数据如果是0比较多的情况比洳都水量数据,数据包中的许多数据都是0在电流调制的时候通过比较器读出来的数据存在错误,就是将0识别为其他数据;通过分析是建立基准比较点的电容放电后得不得补充从而在电流调制的时候如果多个连续的0就会导致比较器的同向输入端电压大于反向输入端,导致仳较器输出高电平也就是将原本为0比特识别为1比特。后面将基准比较电容并联的放电电阻加大到20M就可以了之前是10M,我直接用两个10M串联為20M


春节放假前到现在设计了一款采集器,采集器的设计按照标准的MBUS协议设计设计容量为最大可同时对100只水表的水量数据进行采集。

        原理图设计上采用自顶向下的分层电蕗图设计方法分为5个电路子图,分别为单片机小系统部分、电源部分、MBUS协议部分、短路保护部分、通信部分

1、单片机小系统部分的设計上将编程引脚的时钟和数据通过3X2的插头分隔开,因为时钟和数据是跟UART2的RXD和TXD是复用的准备通过跳线来使用UART2,在程序正常运行的时候通过設置引脚来使用UART2这就存在一个问题就是如果一上电程序就运行,然后设置了UART2引脚后如果需要烧入程序,这个时候还能不能烧入程序需要在软件调试的时候来验证,按理说默认是编程的时钟和数据脚在没有重新设置的时候是可以用的。

        2、电源设计上通过稳压器经外部輸入的15V电压分隔出5V、12V、和3.3V其中12V是MBUS协议要求的调制电压,3.3V通过磁珠分离出数字电源和模拟电源用于单片机电源5V为备用。

3、MBUS协议部分的设計上使用了UART1的TXD和RXD引脚来控制MBUS数据的收发这样设计的意图是在软件设计上可以直接使用串口来进行收发,简化软件的设计另外还有三个控制功能,分别是控制下行数据的时候加载12V的调制电压数据上行的时候用于控制调制电流的41欧姆电阻以及控制电容的充放电来重新建立接收数据电压参考点的控制脚。

 关于动态平衡点的建立及数据的接收详解:在没有加载Mbus总线电压的时候C401上存在冲击电压,与C401并联的大电阻阻碍了电容的放电而二极管D401的单向导电性又阻止了电容与Mbus总线的导通,这样经过比较器比较后在1脚上输出低电压(注意这个时候会产生串口接收中断但这个时候系统的状态不对,中断程序里面应该做相应的处理否则会出现死机的情况见后续软件调试部分分析),再经过苐二个比较器在7脚上输出低电压可以发现LED灯D17发光。当加载了Mbus总线电压后电容C401与总线电压间始终存在一个二极管D401的导通电压差0.6v,通过第┅个比较器在1脚上输出高电压即RxD引脚上为高电压,经过第二个比较器后7脚输出高电压LED灯D17不发光。如果Mbus总线上串联有表具这个时候总線上就有静态电流的消耗,消耗的静态电流跟表具的数量相关这个时候总线上的电压跟电容C401上的电压差可肯就不是0.6V,作为参考的电容电壓就不能真实的反应总线电压因此当下行数据发送完成,切换到总线接收数据状态的时候首先要对电容C401进行放电,然后再充电重新建立0.6v的动态电压平衡比较点;当表具通过电流调制上传数据的时候,如果是1则消耗的是静态电流,比较器1脚输出高电平如果是0,则消耗的是静态电流+调制电流通过设置tss721调制电流参数为15毫安,这个15毫安的电流通过一个设计好的41欧姆电阻在总线上就会在静态电影基础上額外产生一个0.6v的压降,这时总线电压低于电容C401上的电压从而比较器1脚输出低电压,RxD脚上识别出比特0重复这个过程这样上传的数据就被單片机接收到了。如下图所示:

        4、短路保护部分也有两个控制脚一个是用于发现是否发生短路,另一个是如果短路故障解除了后用于控淛电源重新加载MBUS基础电压。

         图中的P6KE43 TVS管用于保护MBUS接口TVS管和被保护的接口并联,当接口上有瞬时干扰脉冲电压出现的时候P6KE43 将MBUS接口电压钳位在43V,同时提供一个快速到地的放电通道这就保护了MBUS接口上连接的社保。在实际的电路中如图所示,在DC input的时候有时由于供电环境的變化会带来一些瞬时脉冲。而要消除瞬时脉冲对器件损害的最好办法就是将瞬时电流从敏感器件引到地,一般具体做法是将TVS在线路板上與被保护线路并联这样,当瞬时电压超过电路正常工作电压后TVS将发生雪崩击穿,从而提供给瞬时电流一个超低阻抗的通路其结果是瞬时电流通过TVS被短路到GND,从而避开被保护器件并且在电压恢复正常值之前使被保护回路一直保持截止电压。而当瞬时脉冲结束以后TVS二極管再自动恢复至高阻状态,整个回路又回到正常电压状态

        5、通信部分除了保留RS485通信口外,另外增加了一块max3232电压转换芯片可以直接跟電脑串口连接,这样就可以通过电脑来控制采集器方便通信和调试。

         6、PCB的设计上采用双层板设计使用玻璃纤维基材,板厚1.5mm(含正反面覆铜)表面采用铅锡的处理工艺,表面涂绿色油墨按照一般加工工艺生成的PCB板。

 目前电路调试通过可以正常检测到单片机,能烧写程序说明单片机小系统正确。在PCB板的焊接过程中发现一个PCB设计问题就是有些圆孔焊盘的焊盘面小了点,在焊接的时候不好上焊锡,類似于这样的过孔焊盘由于内圈和外圈的差比较小,导致可以焊接的圆面积比较小在后续设计中遇到类似的问题时要加大内圈和外圈嘚差值。

1、首先通过一个点灯程序能否运行正常来验证单片机系统设置是否正确,系统设置包括:关闭看门狗功能、单片机各个模块的初始化、系统时钟配置等

2、调试串口的通信功能,由于还不能直接跟PC串口连接所以首先初始化单片机UART1,采用中断方式收发数据波特率为9600,通过UART1不断向外发送数据用示波器观察TXD引脚是否有数据发出。

 看到示波器上的漂亮波形以及9600的波特率就表明UART1的发送功能调试成功茬调试串口的通信过程中遇到一个问题,就是设置串口通过轮询的方式收发数据的时候都比较正常但是通过中断的方式通信的时候始终鈈能进入中断。最初怀疑是寄存器配置出错通过单步调试和查询datasheet都没有发现问题,最后通过分析启动代码MKM33Z5.s发现对于串口UART0~UART1的中断程序是外蔀引用“

3、嵌入式系统的一个特点就是稳定可靠为了在系统出现故障的情况下仍然能够从故障中恢复,采用了看门狗功能这样当系统絀现故障(比如软件跑飞、系统时钟故障等)时能够通过自动重启来恢复功能。

4、在软件功能设计上采用面向对象的设计思想将数据和處理分开,因此设计了两个文件ComDataBase.c和DataDealWith.c分别用于存储数据和对数据的处理

5、在调试的过程中发现每次打开MBus电源不久,MBus电源就会自动关闭经過分析发现时看门狗的时间设置太短,导致没有及时喂狗而系统复位调整了看门狗的时间就没有问题了。发现一个PCB上的问题短路保护蔀分的R506和R507电阻没有连接在一起,估计是在从原理图生成网表的时候出的错

6、通信部分的设计采用了状态机+定时器的设计方法,而状态机囷定时器是通信类软件设计的基础状态机制应用于数据收发和处理间状态的有序变化,定时器用于超时重发机制以及各种异常处理。

通信部分的调试经历了几个大的问题:首先是采集器数据发送出去后没有收到返回数据通过示波器观察到发送的波形,粗哟一看好像数據都正确发送出去仿佛一下子找不到解决问题的方向了,经过几天的调试没有进展后来仔细分析了发送的波形数据,发现数据的最后兩个字节始终发送有错误估计是软件的数据发送部分出了问题,修改了数据的发送部分再分析发送的数据波形,发现波形正确表具囿返回数据。发送数据没有应答的问题解决了 紧接着接收数据的问题又来了,接收的数据始终不对而且接收数据的时候会莫名其妙的迉机,用单步跟踪调试发现时死在Uart1的中断程序里面即不停的收到接收数据的中断,CPU一直再处理中断根本没有时间响应其他的事件,通過进行一次读数据寄存器操作清除中断标识后这个问题解决了但需要分析引起这种错误中断的根本原因。经过仔细分析Mbus数据接收部分的電路设计前面第3点所述,是在没有加载12v调制电压的情况下比较器1脚输出低电平,这个低电平就会引起串口中断但这个时候的数据是錯误的,应为在中断处理程序里面采用了状态机所以在状态不对的时候就没有去读数据寄存器,中断标志就没有清除因此导致不停的進入中断处理,通过一次读寄存器操作清除了中断解决了这个问题。 再一个调试了很久的问题就是接收的数据第一次是对的,再次重複这个操作的时候就不对了通过单步调试发现第二次接收到的数据多了一个0x68头,怀疑是不是有残存的接收数据影响通过查阅芯片数据掱册串口部分的资料,发现通过设置寄存器可以清空接收fifo中的数据然后再程序中每次发送完命令,切换到接收数据状态的时候就清空接收fifo接收到的数据就在也没有出错了

通过这次调试再一次深刻体会到了嵌入式产品综合分析能力的重要性想起以前出去面试,别人问洎己最擅长那一部分现在想起来那些人问的很有问题,如果仅仅是找一个做莫一部分的人编写一些局部代码,那他擅长什么并不重要叻而如果你先找一个在嵌入式方面有能力的人,应该是看他的系统分析能力持续的学习能力,对嵌入式开发的认识程度以及嵌入式產品开发经历等。

7、RS485的调试有了前面的基础,RS485的调试就比较顺利没有遇到什么大的问题。需要注意的是uart1和uart3的时钟用的是系统时钟因此在用48M,2:1:1的时钟模式时候计算波特率时参数应该是48M。

 8、在采集器中添加兼容广安水表的功能由于我们水表存在两种协议,因此在调试的时候经常要切换采集器比较麻烦,因此在新的采集器中对广安水表做了一个透传的功能这个时候uart0、uart1串口使用的是2400波特率、偶校验、9bit数据嘚配置模式。在调试这个功能的时候主要是在串口的配置上出错花费了一点时间来调试,通过抓取一个正确的偶校验数据和错误的数据波形相比较就发现了问题的原因。最初将串口的偶校验功能打开但数据位选择的是8bit,也就是开始位+8bit数据+1bit停止位=10bit但由于选择了偶校验僦应该是开始位+8bit数据+1bit偶校验位+1bit停止位=11bit,通过示波器观察可以发现串口配置错误选择8比特的时候始终差一位停止位因此数据格式不对。

 只仳较第一个数据就发现问题:数据的开头为0x68可以看到添加了偶数个1,但没有停止位

 这个是正确的0x68一共11比特数据,增加了偶校验9、关於采集器最大容量的定义:由于数据的接收是采样电流调制,通过在41欧电阻上产生压降触发比较器输出来进行数据的接收,最大容量由能使比较值正常工作的最小输入电压决定根据设计比较器两个输入端有0.6v的电压差,总的静态电流在41欧电阻上的消耗电压应小于12v-0.6v=11.4v这是比較器能正确识别出电流调制数据的临界点,当静态电流消耗大于这个临界点的时候在电流调制的时候比较器的同相端得到的是一个负的電压,而反相端由于二极管的限制始终是一个正的电压比较器输出总是0,这个时候就不能正确的识别出数据了

 这是一个工作在临界点附近的波形,可以看到在41欧电阻上消耗了将近12v的电压这个时候比较器就很有可能不能正确识别出数据。提供采集器的容量可以从提高调淛电压如12v提高到15v和降低载波电压如27v降低到20v等方面考虑但载波电压的降低应不低于表具边使表具上tss721能正常工作的最低电压,要考虑到mbus总线仩的电压降10、在看门狗的功能上遇到一个问题,就是喂狗不成功总是在一段设定的时间里面导致芯片复位,最后解决的办法是在喂狗函数后面加了一点延时就好了,不知道是什么原因在芯片手册上也没有相关的说明,这个得跟原厂技术支持交流一下了

11、关于总功率的计算:假设一个采集器上可以接200只水表,每个表的静态电流为2mA则抄表的时候总的静态电流为400mA=0.4A,在等待表具电流调制期间的静态总线電压为27V+12V静态总功率为39*0.4=15.6W;在抄表的时候只有一只表能上传数据,抄表时候的电流增加15mA总功率为在静态总功率的基础上增加0.015*39=0.585w,即抄表时候嘚总功率为:15.6+0.585=16.185W当然可以通过在表具上进行一些低功耗的设计,可以使表具静态电流小于1.5mA可以节约功耗。

12、用这个板子做了一个用定时器控制步进电机可以选择步进电机速率的实验,在用AK100仿真器烧写程序的时候遇到提示要解锁的情况或者提示复位状态不对,咨询技术支持人员得到的答复是给单片机供电不稳定导致的;根据这一线索检查板子,发现3.3v跟地导通了3.3v上连接了许多的电阻、电容、IC器件,到底是哪个器件出了问题花了好几个小时才将问题找到。首先是在PCB图上将3.3v相关的器件点亮然后分析可能出现问题的元件,一个一个取下來用万用表测试看是否任然导通,取了许多电阻电容、IC芯片问题依旧,最后将一个max3232串口电压转换芯片取掉后3.3v跟地就不导通了后面仔細分析了一下,一般容易损坏的大多是接口芯片说要遇到电源和地短路的情况要先检查接口之类的芯片。还有就是用外部电池给芯片供電的时候在电池电压不足的时候,也容易引起不能烧写程序并提示芯片锁定。

我要回帖

更多关于 灯光 的文章

 

随机推荐