今天搞那个stm32发送字符串给触摸屏通信,于是我打开串口看看有没有正确发送,结果调了半天都是乱码,到最后,居然是串口接收和stm32串口发送相互之间的波特率 Baud rate设置不一样,所以在搞串口通信的时候,波特率一定要设置成一样的才行。
什么是波特率?
波特率是串行通信的数据传输速率,它表示1秒钟内传输的比特数(bit),或者说位数。波特率的单位是bps,即:bits per second.
以波特率9600为例,它表示每秒钟能传输9600个位(bit)。我们知道1个字节有8个位,那么9600的波特率每秒钟能传输多少个字节呢?你可能会用9600/8=1200,其实这样计算是不对的。
因为在串行通信中,还需要起始位、停止位、校验位等控制信号,假设我们串行通信参数设置为1个起始位,8个数据位,1个停止位,则传输1个字节需要10个位,因此这种情况下,9600波特率每秒能传输的字节数据=9600/(1+8+1)=960个字节。
#电气自动化##电气工程##串口#
S7-200 SMART PLC应用技术
环保水质监测中,各仪表数据通讯,用到的最多的就是模拟量(4-20mA)、数字量(RS485、RS232)、也有厂家使用HJ212协议传输,大家都按照规定的协议传输,在对接时,问题就不大,有协议,我就能解析,模拟量的需要量程对应上,数字量的需要设备地址、寄存器地址、波特率对应上。
我们在调试过程中通常回遇到通讯不上的问题,这个原因也是千奇百怪。
1、通讯线正负(A,B)接反,这个最容易出现,也最容易解决。
2、传输距离较远,通讯线细,这也是一个重要的问题,通讯断断续续,这就要考虑是不是这两个方面的问题。
3、干扰问题,和强电交叉在一起,接地,设备是否有一个良好的接地。
4、通讯协议的问题,基本上调试一个现场就可以看出设备标准版的协议有没有问题。
5、解析方式,可以使用串口调试助手测试出正确的解析方式。
…
说简单,但在找原因的过程中比较挠头,就相信一句话,问题终究会解决,只是解决的快慢不定。
有遇到这方面的问题的同行,可以探讨一下,评论区见!
心电监测方案对比分析之四:BMD101(NeuroSky)
前面两巨头的方案让我们领略了设计的丰富和精巧,接下来的BMD101就有点小众特色了。开发者NeuroSky(神念科技)的中文官网[8],这应该是一家科技初创公司。初见之下你会惊讶,这个5mmx5mm大小且只有8个管脚的小东西能蕴含那么多功能吗?官方提供的资料稍显简单,不过仔细阅读分析还是能大致理解其功能:
1、模拟前端电路。如[4]中图1,实际输入端是双电极,心电信号进入后,照例先是HPF滤掉射频。接着是核心的低噪声运放LNA,号称可采集从uV到mV的生物信号,猜测仪表放大器的可能性较大。当然因为有后续数电等资源,也有可能借鉴了微弱信号检测的部分设计,其原理和应用参考[1] [2] [3]。注意后面的增益控制逻辑与LNA的交互反馈,那么该运放也是一个可编程增益放大器(PGA)。另外还有一个脱落检测(图中SensorOff)的电路。
2、数字信号处理。ADC后,就进入了数字域。按[4]中说明,主要是一个50(60)HZ陷波器滤除工频干扰,和一个截止频率为100HZ的低通滤波器。实际上还应该有前述的增益控制,内置含64B FIFO的串口通讯,脱落检测等处理功能。另外可能还有基线漂移调整、其它专有算法等的处理。
3、系统管理单元。按[4]中描述,该单元实际上是一个裁剪过的单片机或MCU。因为要满足基本的数字运算,要有运算和控制的核,有存放数据和结果的内存,还得有晶振电路与分频机制等等。另外,还有电源管理、串口通讯等方面的要求。以MSP430FG439的功能框图为例,如[7]中图2,红圈标注了该单元大致需要的功能。
4、其它。1)BMD101是一个模数混合芯片确定无疑。其在ESD保护、屏蔽、电源、接地、PCB布局布线等方面比较考究。参见[5]。2)应该是得益于16位ADC和内置专有算法,其官宣心电波形在细节上要略优于普通设备。如[6]中图3。3)对于开发者来说,BMD101是一个“傻瓜式”的模块,增益不可调、滤波器不用设计、内置算法不可见、就连串口速率都是固定死的(57600波特率),配上几个电容、电感、二极管就可以工作。
最后一个有趣的问题是:BMD101为什么可以那么“傻瓜”?就模拟方面,关键在于心电波的幅度、频率等集中在一个很小的范围之内,许多参数可以预先估算。以增益为例,INA321中仪表运放放大5倍后普通运放再放大100倍总共500倍增益。几mV的心电信号放大后在1V左右,正好落在大多数运放的轨到轨之间,ADC采样也恰到好处。当然,这也需要反馈、增益可调等功能的辅助。AD8232中IA的100增益,BMD101中的128增益,都需要后续操作。
BMD101牺牲了灵活性,但也带来了设计简单、抗干扰性强、适合便携式设计等优势。对于工程师来说,工具箱里是来者不拒,多多益善。
2021.05.19
参考资料:(书籍读秀格式)
[1] 陈佳圭编著. 微弱信号检测
[2] 高晋占编著. 微弱信号检测
[3] 曾庆勇编著. 微弱信号检测 第2版
[4] NeuroSky . BMD101 Product Brief
[5] NeuroSky . BMD101 Integration Reference Design/Schematic
[6] NeuroSky . BMD100 vs Biopac
[7] TI. MSP430FG439数据手册
[8] 网页链接
什么是串口通信中常说的RS232接口?
RS232是美国电子工业协会 EIA (Electronic Industry Association)颁布的一种串行接口标准,名称中的”RS”是”Recommend Standard”的缩写,即”推荐标准”;232是标识号;C表示C版本(第3版);现在我们使用RS232都是C版本,因此有时候会把”C”省略,直接说成RS232。
RS232是一种低速率、近距离、点对点通信的接口标准,最高传输速率为20Kbps,最大传输距离为15米(与波特率有关)。RS232C有9芯线和25芯线两种接口,目前使用最多的是9芯D型接口。RS232支持全双工通信模式。所谓全双工通信,是指通信的双方可以同时发送和接收数据。RS232接收、发送的信号相对于公共地而言,即接收、发送信号线相对公共地的电压。在不考虑流控制的情况下可以使用三条线(发送-接收-公共地)完成数据传输;
总结来说,RS232是一种串行接口标准,它规定了该接口的电气特性,但并没有规定该接口之上的通信协议,用户可以使用ASCII协议、3964(R)协议或自定义协议。
#电气自动化##电气工程##通信##串口#
S7-200 SMART PLC应用技术
#科技V计划##电工交流圈#在做Modbus RTU通讯的时候,CRC校验算是一个难点,很多初学者不会计算这个CRC校验码,其实现在网络上有很多这种CRC计算的软件或者网站,都可以解决我们的燃煤之急。
CRC计算有什么用吗?
一来可以用串口调试助手进行测试,找到通讯故障原因,二来可以验证PLC程序正确与否,三来可以验证PLC和仪表、变频器之间的线路连接,四来可以验证参数设置,包括波特率、校验位等是否一致。
很多PLC做Modbus通讯已经不需要自己计算CRC校验码了,PLC会自己计算,但是初学者接触到的一些小型PLC,有的还是需要自己来进行CRC校验的。
在选择校验时,一定要选择CRC-16Modbus这种格式,因为网上的软件适应了好多种算法,其余算法我们并不常用。
什么是自由口通信?
自由口通信是指没有指定具体协议的串口通信。工业领域比较常用的串口协议包括Modbus-RTU协议、USS协议、PPI协议等,这些协议具有标准规范,通信双方只要遵守规范,就能实现相互通信。
而对于自由口通信而言,它没有现成的标准规范,通信双方可以自由约定,甚至不做任何约定,只是简单地读取/发送数据。自由口通信最常见的例子是对扫码枪数据的读取。
自由口通信是基于串口的,通信的双方也要设置相同的通信参数,比如波特率、数据位、校验位、停止位等。
我的书《西门子S7-200 SMART PLC应用技术》有关于自由口通信获取扫码枪数据的实例,如果你感兴趣可以点击下面的链接查看。
#PLC##串口##电气自动化#
西门子S7-200 SMART PLC 应用技术—编程+通信+装调+案例(双色印刷+视频讲解 大量工程实例介绍、工艺介绍、在线交流平台)
又发生不良投诉,设备电气人员又要忙碌了,设备机修一般没有他们的事,电气人员命苦啊!
高层紧急召集相关人员,召开品质研讨对策会议:分析原因是没有打印记录,导致交接班人员不清楚米数,如果与现场正常开机的机台一样有打印记录,就不会出现这种情况。
我们接到领导传达的命令,要作出相应的改善对策。
本来想用现场正在用的打印机,日本TAKIKAWA,AD-500,只要触点短接100MS,就可打印出把号,米数,但因价钱贵:大约三万元,叫我用采用类似商场打印小票方式,自己编程做一套打印机。
因自己没有做过,上网查找资料,在某宝上查找打印机类型,清单如下:
1、PLC:西门子S7-200SMART CPUST20,DC/DC/DC。
2、信号板型号:SB CM01(RS485/RS232)//因打印机通信是RS232,本身PLC自带是RS485。
3、打印机:日本斯大精密生产,型号SP512MD,用色带打印。
首先打开S7-200SMART软件,新建文件,进行硬件组态:选择CPUST20,订单号,及信号板型号及订单号,还有通讯地址:2,波特率选19200。
接下来编程:主程序,三个子程序:计米,时间,打印。
计米主要是:定义模式,控制字节,初始值及预设值,然后是启动高速计数器;时间是读取系统时间,有七个字节,并转化为整数,然后转为ASC码;打印机只接受不回传:plc用自由口通讯协议,设置通讯格式:数据位8,停止位1,无奇偶,波特率19200,选择端口2,编写相应程序:ASC码。
打印机这端是DB25,要找出三根线,发送,接受,地,用串口调试软件测试通讯,然后接到PLC信号板通讯接线端,
初步编好程序,下载到PLC,然后试打印,反复修改。
触摸屏:选用从其它报废机台拆下的威伦通MT6070TK,简单编写米数显示,把号加减,米数复位,计米系数调整等参数。
调试差不多了,就装上回卷机台,正常回卷时再调试一下,技术系确认后,就正式交给现场使用了。
说实在的,自己第一次能独立做一个项目,心里还是挺高兴的,毕竟也为部门节省了一笔钱,自己又得到了锻炼。