大数跨境
0
0

【KW 06】六维力传感器通信协议(数字通信软件)

【KW 06】六维力传感器通信协议(数字通信软件) 坤维科技
2022-11-16
1
导读:下期预告:六维力传感器通信协议(自定义串口协议)



上篇文章我们讲到传感器和上位机之间通信的数字协议有很多种,这些协议不但规定了应该使用什么样的硬件,还对传输的内容做了严格的规定。本篇文章我将以串口总线协议为例,讲解数字通信协议的基本规则要求。


上篇我们讲过RS485总线使用两根差分信号线传递逻辑0和1
其实还需要两个设备都遵守很多其他的规定。RS485常用的属性设定有波特率、数据位、停止位、校验位、流控。看似挺多,但其实不难理解,只有大家都遵守相同的规则,才能把数据高效准确地传递过去,其实每种协议都会有类似的属性,只不过有些是固定不变的,朋友们使用时就不关注了。

下面我们一项一项看一下RS485中这些可以双方商定修改的属性。

波特率


首先是波特率这其实是规定收发的节拍,比如常用的波特率是9600、115200这样的数字,它的意思是每秒钟有9600个码元还是115200个码元,也就是说每秒钟发送0或1这种bit的个数。
这时肯定有小伙伴有疑问

“难道不应该我随意发多少,上位机设备都接收吗?”

理论上虽然是这样,但这会带来不必要的问题,比如发送方有可能一秒钟内发1万个比特,也可能一个bit都不发,就好比两个人对话时,说话的人语速时快时慢,倾听的人就需要全神贯注一字不漏得都记下来,哪怕说话的人不再说话了,倾听的人也一点不敢放松,生怕会遗漏什么。显然,这大大提高了倾听者的要求,但这样高的要求是没必要的,倾听者不但要接收信息,还需要对信息进行分析处理,在发送方不发送信息,或者发送信息的间隔,其实可以去做别的。那不如大家提前商量好一个都能接受的节拍,发送方保证在节拍点到来时总线上的0或者1是准确的,接收方保证在节拍点到来时做好了接受的准备,如果双方都觉得信息传递太慢,那就大家一起加快节拍,如果过快,就统一降低,这是最高效和节约整体成本的做法。目前工业现场最通用的波特率应该是9600和115200。有了这个规则,其实对整个行业都是一件好事,收发器芯片生产企业知道应该如何平衡性能和成本,现在一款芯片的价格便宜的不到1块钱,贵的比如速度能到1万K的芯片也就三五十块钱一片;而且有了这个规则发送设备知道了什么样的数据量适合用这种总线发送,接收设备可以用很低的成本设计出一个接收的端口,目前市场上所有的单片机都配置了串口端口,这是统一的规则造成的良好结果。

数据位和停止位


下面说数据位和停止位,数据位可以设置成5、6、7、8、9中的一个值,停止位可以设置成1、1.5、2中的一个值,发送方接收方要一致。这两个属性的产生也是为了提高通信效率和降低双方的成本。比如如果双方都按照同样的时间节拍,其实可以发送方一直发送,接收方接收就好了,这可以被叫做串口同步通信,它要求双方的时间节拍必须完全一致,一般是双方使用同样的时间基准,而且如果发送方不再发出数据,接收方还在按照节拍一直接收总线是0还是1的状态。这样还是不够高效。那不如引入异步通信的方式,就是数据中规定了固定的起始和停止,还规定了一组数据的长度,这样接收方接到起始位后才开始接收,接收一定数量后停止,接收到的数据长度还是固定的,接收方接收到固定长度的数据直接写入自己的寄存器进行处理就好。这样发送方只增加了很小的工作量,就可以让接收方不必自己做数据的分解、间隔的界定,还不需要使用同样的时钟基准,硬件上少了连接导线。数据位就是规定了一组数据的长度,最常用的是8,因为一个字节有8个比特,这样发送方一个字节一个字节得拆解自己的数据,前面加入起始位,后面加入停止位,发送出去。接收方也一个字节一个字节得接收。停止位当然就是规定了一个固定的停止方式,是1就表示停止位是1个比特位,这种最常用。

校验位


校验位是在数据最后,停止位之前加入一个数据位,常用的有无校验、奇校验位、偶校验位三种。这是为了提高数据的准确度而产生的。RS485总线物理上的有效长度超过几百米,就是说接收方可以离发送方几百米元,这么长的距离外,可能某个比特的数据发送和接收是不一致的,那就需要校验。比如奇校验的意思就是接收方在发送1个字节数据时,如果这个字节内的1的个数是奇数,那校验位就是0,如果1的个数是偶数,校验位就是1,使得发送的这一组数据中1的个数一直是奇数。接收方在收到数据时也判断这一组数据中1的个数,看和结尾的校验位是否一致,如果一致就同意接收这一字节,不一致就认为这个数据传输中发生了错误,数据是不可信的。这可以排除一些传输过程中发生的错误,但不是全部错误,因为如果总线中的数据有两个比特都发生了跳变,那还是能通过校验的。

流控


最后是流控这个属性是为了解决一些中断通信的问题。比如接收方在进行极为关键的运算,不能接收数据,它可以设置流控,通过设置流控导线的电平或者发送一组特定的符号,告诉另一方不要发送数据。流控分为硬件流控软件流控,设置流控电平就是硬件流控,它需要总线中多出导线传递这个电平,发送特定的符号就是软件流控,这种方式会占用某个符号,因此有些编码格式中不适用。

以上就是串口通信在开启端口前需要确定的几个属性,发送方和接收方都需要遵守。比如我们公司的串口版本六维力传感器,波特率默认是460800,数据位8,停止位1,校验位 无,流控无。上位机系统使用相同的属性设定就可以用C、python等任意一种语言打开一个可以通信的串口,使用接收函数收到多个字节的数据。我们其实还规定了这些字节的含义,每次发送字节的数量等,我将在下篇文章中和大家探讨。


-END-



往期推荐


【KW 05】六维力传感器的通信协议(数字通信硬件)


关于多维力传感器的串扰、精度和准度


【KW 03】初识六维力传感器(三)——为什么要用六维力传感器

【声明】内容源于网络
0
0
坤维科技
多维力传感器的展示和技术咨询平台,向客户提供包括结构定制和数据采集的整套多维力测量解决方案。欢迎访问公司网站:www.kunweitech.com
内容 43
粉丝 0
坤维科技 多维力传感器的展示和技术咨询平台,向客户提供包括结构定制和数据采集的整套多维力测量解决方案。欢迎访问公司网站:www.kunweitech.com
总阅读16
粉丝0
内容43