如何用协议串口通信

如何用协议串口通信,第1张

串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。
什么是串口
串口是计算机上一种非常通用的设备通信协议(不要与通用串行总线Universal SerialBus或者USB混淆)。大多数计算机包含两个基于RS232的串口。串口同时也是仪器仪表设备通用的通信接口;很多GPIB兼容的设备也带有RS-232口。同时,串口通信协议也可以用于获取远程采集设备的数据。
串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如IEEE488定义并行通行状态时,规定设备线总长不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。
典型地,串口用于ASCII码字符的传输。通信使用3根线完成:(1)地线,(2)发送,(3)接收。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但是不是必须的。串口通信最重要的参数是比特率、数据位、停止位和奇偶校验。对于两个进行通信的端口,这些参数必须匹配:
a,比特率:这是一个衡量通信速度的参数。它表示每秒钟传送的bit的个数。例如300波特表示每秒钟发送300个bit。当我们提到时钟周期时,就是指比特率,例如如果协议需要4800波特率,那么时钟是4800Hz。这意味着串口通信在数据线上的采样率为4800Hz。通常电话线的比特率为14400,28800和36600。比特率可以远远大于这些值,但是波特率和距离成反比。高比特率常常用于放置的很近的仪器间的通信,典型的例子就是GPIB设备的通信。
b,数据位:这是衡量通信中实际数据位的参数。当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、7和8位。如何设置取决于你想传送的信息。比如,标准的ASCII码是0~127(7位)。扩展的ASCII码是0~255(8位)。如果数据使用简单的文本(标准ASCII码),那么每个数据包使用7位数据。每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。由于实际数据位取决于通信协议的选取,术语“包”指任何通信的情况。
c,停止位:用于表示单个包的最后一位。典型的值为1,15和2位。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。
d,奇偶校验位:在串口通信中一种简单的检错方式。有四种检错方式:偶、奇、高和低。当然没有校验位也是可以的。对于偶和奇校验的情况,串口会设置校验位(数据位后面的一位),用一个值确保传输的数据有偶个或者奇个逻辑高位。例如,如果数据是011,那么对于偶校验,校验位为0,保证逻辑高的位数是偶数个。如果是奇校验,校验位为1,这样就有3个逻辑高位。高位和低位不真正的检查数据,简单置位逻辑高或者逻辑低校验。这样使得接收设备能够知道一个位的状态,有机会判断是否有噪声干扰了通信或者是否传输和接收数据是否不同步。
详情参考
>问题一:串口通信协议有哪些 I2C总线是内部总线,用来连接内部系统内的芯片。比如mcu和存储器、键盘现实芯片、ad转换等等。 串口通信是用来和系统外部的设别通信的。比如设备和设备之间通信。 I2C和串口在通信协议上可以做到一样,也可做到不一样,这取决与具体的情况。 mcu和2402通信,mcu和电脑通信它们之间的协议软件可以做到完全一样 比如mcu发送1 2402和电脑发送2。

问题二:串口通讯协议是什么 串口通讯协议是指通信双方的一种约定。约定包括对数据格式、同步方式、传送速度、传送步骤、检纠错方式以及控制字符定义等问题做出统一规定,通信双方必须共同遵守。因此,也叫做通信控制规程,或称传输控制规程,它属于ISO'S OSI七层参考模型中的数据链路层。

问题三:怎么写串口通信协议 通信协议是可以自己定义的,只不过要求不一样,可以自己随意定义,也可以根据客户要求定义,或根据相关设备定义(如你所述你的主机通过扫描q扫描二维码,那主机内部就应该有相关编码协议),看相关说明书能查到。同时自己也可以在里面加上校验码等等

问题四:plc串口通信协议有哪些 232或者485

问题五:串口通信协议是硬件还是软件 应该是硬件的,,串口数据流鼎原生,没有编译的数据
通过软件,识别成信号,完成执行所要的功能

问题六:R232串口通讯协议是指什么?内容是?它与R485的区别在哪? 区别是232是全双工
485一个是半双工

问题七:串行通信的异步通信协议 1、串行异步通信时的数据格式异步方式通信ASYNC(Asynchronous Data munication),又称起止式异步通信,是计算机通信中最常用的数据信息传输方式。它是以字符为单位进行传输的,字符之间没有固定的时间间隔要求,而每个字符中的各位则以固定的时间传送。收、发双方取得同步的方法是采用在字符格式中设置起始位和停止位。在一个有效字符正式发送前,发送器先发送一个起始位,然后发送有效字符位,在字符结束时再发送一个停止位,起始位至停止位构成一帧。串行异步传输时的数据格式:⑴ 起始位:起始位必须是持续一个比特时间的逻辑“0”电平,标志传送一个字符的开始。⑵ 数据位:数据位为5-8位,它紧跟在起始位之后,是被传送字符的有效数据位。传送时先传送字符的低位,后传送字符的高位。数据位究竟是几位,可由硬件或软件来设定。⑶ 奇偶位:奇偶校验位仅占一位,用于进行奇校验或偶校验,也可以不设奇偶位。⑷ 停止位:停止位为1位、15位或2位,可有软件设定。它一定是逻辑“1”电平,标志着传送一个字符的结束。⑸ 空闲位:空闲位表示线路处于空闲状态,此时线路上为逻辑“1”电平。空闲位可以没有,此时异步传送的效率为最高。2、串行异步通信时的数据接收串行异步通信时,接收方不断地检测或监视串行输入线上的电平变化,当检测到有效起始位出现时,便知道接着是有效字符位的到来,并开始接收有效字符,当检测到停止位时,就知道传输的字符结束了。经过一段随机时间间隔之后,又进行下一个字符的传送过程。 通常接收端的采样时钟周期要比传输字符的位周期短,常用的采样时钟频率为位频率的16倍,采取这种措施是为了提高抗干扰能力,参看图819所示。从图中可知,传输字符的位周期Td等于采样时钟周期Tc的16倍。接收器的采样时钟的每个上升沿对输入信号进行采样,检验接收数据线上的低电平是否保持8或9个连续的时钟周期,以确定传输线上的低电平是否是真的起始位。这样就可以避免噪声干扰引起的误 *** 作,从而删除假的起始位。相当精确地确定起始位的中间点,从而提供一个时间基准,从这个基准开始,每隔16个Tc对其余数据位采样,以确保传输数据的正确性。接收端为实现采样数据的基准,可以执行以下步骤:⑴ 在接收端设置一采样时钟频率计数器,当检测到起始位下降沿时,将其清零,并开始对采样时钟计数,即每来一个时钟,计数器加1。⑵ 当计数器计到8时,表示已到达起始位的中间位置,此时采样值为0,说明是真正的起始位,同时将计数器清零;若采样值不为0,则说明一开始检测到的下降沿不是真正的起始位前沿,而是一次干扰,此次检测应作废,计数器清零,并重新开始检测起始位。⑶ 检测到真正的起始位后,计数器清零,以后每次计到16时,便采样收到的信号波形(即每一位的中间),将采到的数值暂存起来,同时将计数器清零,重新计数,直至最后的停止位被采样。⑷ 如果停止位采样正确(为1),则字符被接收,并由暂存器装入寄存器。若停止位采样值为0,说明同步或传输有问题,此次采样所得字符作废,不被接收。异步通信的特点⑴ 起止式异步通信协议传输数据对收发双方的时钟同步要求不高,即使收、发双方的时钟频率存在一定偏差,只要不使接收器在一个字符的起始位之后的采样出现错位现象,则数据传输仍可正常进行。因此,异步通信的发送器和接收器可以不用共同的时钟,通信的双方可以各自使用自己的本地时钟。⑵ 实际应用中,串行异步通信的数据格式,包括数据位的位数、校验位的设置以及停止位的位数都可以根据实际需要,通过可编程串行接口电路,用软件命令的方式进行设置。在不同传输系统中,这些通>>

问题八:串口通信协议的握手 RS-232通信方式允许简单连接三线:Tx、Rx和地线。但是对于数据传输,双方必须对数据定时采用使用相同的波特率。尽管这种方法对于大多数应用已经足够,但是对于接收方过载的情况这种使用受到限制。这时需要串口的握手功能。在这一部分,我们讨论三种最常用的RS-232握手形式:软件握手、硬件握手和Xmodem。a,软件握手:我们讨论的第一种握手是软件握手。通常用在实际数据是控制字符的情况,类似于GPIB使用命令字符串的方式。必须的线仍然是三根:Tx,Rx和地线,因为控制字符在传输线上和普通字符没有区别,函数SetXModem允许用户使用或者禁止用户使用两个控制字符XON和XOFF。这些字符在通信中由接收方发送,使发送方暂停。例如:假设发送方以高波特率发送数据。在传输中,接收方发现由于CPU忙于其他工作,输入buffer已经满了。为了暂时停止传输,接收方发送XOFF,典型的值是十进制19,即十六进制13,直到输入buffer空了。一旦接收方准备好接收,它发送XON,典型的值是十进制17,即十六进制11,继续通信。输入buffer半满时,LabWindows发送XOFF。此外,如果XOFF传输被打断,LabWindows会在buffer达到75%和90%时发送XOFF。显然,发送方必须遵循此守则以保证传输继续。b,硬件握手:第二种是使用硬件线握手。和Tx和Rx线一样,RTS/CTS和DTR/DSR一起工作,一个作为输出,另一个作为输入。第一组线是RTS(Request to Send)和CTS(Clear toSend)。当接收方准备好接收数据,它置高RTS线表示它准备好了,如果发送方也就绪,它置高CTS,表示它即将发送数据。另一组线是DTR(DataTerminal Ready)和DSR(Data SetReady)。这些线主要用于Modem通信。使得串口和Modem通信他们的状态。例如:当Modem已经准备好接收来自PC的数据,它置高DTR线,表示和电话线的连接已经建立。读取DSR线置高,PC机开始发送数据。一个简单的规则是DTR/DSR用于表示系统通信就绪,而RTS/CTS用于单个数据包的传输。在LabWindows,函数SetCTSMode使能或者禁止使用硬件握手。如果CTS模式使能,LabWindows使用如下规则:当PC发送数据:RS-232库必须检测CTS线高后才能发送数据。当PC接收数据:如果端口打开,且输入队列有空接收数据,库函数置高RTS和DTR。如果输入队列90%满,库函数置低RTS,但使DTR维持高电平。如果端口队列近乎空了,库函数置高RTS,但使DTR维持高电平。如果端口关闭,库函数置低RTS和DTR。c,XModem握手:最后讨论的握手叫做XModem文件传输协议。这个协议在Modem通信中非常通用。尽管它通常使用在Modem通信中,XModem协议能够直接在其他遵循这个协议的设备通信中使用。在LabWindows中,实际的XModem应用对用户隐藏了。只要PC和其他设备使用XModem协议,在文件传输中就使用LabWindows的XModem函数。函数是XModemConfig,XModemSend和XModemReceive。XModem使用介于如下参数的协议:start_of_data、end_of_data、neg_ack、wait_delay、start_delay、max_tries、packet_size。这些参数需要通信双方认定,标准的XModem有一个标准的定义>>

问题九:如何设计一种串行通信协议 简单的说要做一个协议,首先要考虑你的总线拓扑形式。是点对点的方式传输(是一主一从,还是两个为对等的节点),还是一个主机下挂了多个从节点(节点和主机如何链接,是星形链接、树形链接,还是总线型连接)。
如果是一主一从的点对点那是最简单的。如果是两个对等的节点或者一对多总线节点,那就需要考虑总线竞争、冲突、地址设计、超时处理等问题。
那最简单的主从点对点来说(封闭式网络,即设备节点数确定,且非相设备协议不相同无法接入该网络)。
首先你的波特率设置,最好是所有节点都定一个波特率,有人做过不同波特率通信的,反正我没玩过。而且波特率的大小要从你总线的数据量开销、处理器/控制器的速度、应用的环境中电磁复杂程度、硬件设备的带宽(频率高了会不会受影响,导致丢包率增大,或影响其他设备)
然后一个帧开头应该带有帧标识,让对方判断收到的是数据帧还是应答帧。点对点通信,最少应该具备一个数据命令帧和应答帧。数据命令帧是包含主要设信息的,应答帧是告诉对方是正确否收到数据,如没有,请重发。另外如果收的帧标识都不是这两种的,就说明可能总线出现问题/受干扰/接入其他未知设备。
其次考虑你传输的数据量有多大,是否需要数据包定长。如果传输的数据时而多(十几/几十个个字节),时而少(不到一个字节),那就不能定长。这样的话就需要在第二第三个字节(放帧标识的字节前后)加上包/帧的长度信息。
然后是地址,虽然只有两个点在面对面对话通信,但建议加上源地址和目标地址。这个只是建议,在点对点通信中可选。
之后应该加上一个序列号,用以表示为第几次发送。比如说,我发了一次Hello给你,下一次应该发一个World给你,但你反馈应答帧说没收到或者收到错误,然后我再发一次Hello给你,这时的Hello这帧中的序列号应为2了。
接下来是数据内容……
最后是校验,CRC ……异或……什么的,对前面所有的数据从帧头到帧尾的位做数据校验。防止传输过程中,任何一个bit出错。
现在想到的就是这么点。吐个槽,记得当年我们一组人做铁路信号设备的协议,研究院的人看了我们两周想出来的协议后(基于RS584),说:协议是这么简单就搞出来的么!没试验个一年的工夫都不敢说整出一个安全的强壮的协议来。

问题十:串口通讯时的数据帧格式和通讯协议有什么区别 串口参数指的是串口通信所需要设置的相应参数,就像手机入网,你用的是电信的号码还是移动的号码,用的是3G网络还是2G网络,虽然是手机自动设置的,但是还是要设置滴
通信协议就是你说的什么语言,你和别人沟通,大家都说普通话,一个说英文,一个说法语肯定不行啦。
485-can-tcp/nt

单片机串口通讯协议,这要看单片机是与什么通信,是电脑吗,还是其他什么设备,如果是买来的什么设备,那一定要按那设备的通信协议来写程序啦,不然话,是不能通信的。如果是电脑就好办了,因电脑端可以写一个软件来完成收/发,那具体的单片机与电脑的通信协议就可以自己来定义啦,其中包括确定波特率,数据位数,即是8位,还是9位,9位的话,要加校验位,比较麻烦,8位比较方便,还有就是结束位是1位。这些是基本的参数,主要是定义通信代码啦,用什么代码表示什么功能,上位机与下位机如何联系,即怎么应答,一条报文有几个字节,用不用校验和,等等,这些事宜都是可以自己定义的。

串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。
什么是串口
串口是计算机上一种非常通用的设备通信协议(不要与通用串行总线Universal SerialBus或者USB混淆)。大多数计算机包含两个基于RS232的串口。串口同时也是仪器仪表设备通用的通信接口;很多GPIB兼容的设备也带有RS-232口。同时,串口通信协议也可以用于获取远程采集设备的数据。
串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如IEEE488定义并行通行状态时,规定设备线总长不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。

ModBus 可分为两种传输模式: ASCII 模式和 RTU 模式。使用何种模式由用户自行选

择,包括串口通信参数(波特率、校验方式等)。在配置每个控制器的时候,同一个 Mod B

us 网络上的所有设备都必须选择相同的传输模式和串口参数。

1 ASCII 模式

当控制器设为在 ModBus 网络上以 ASCII 模式通信,在消息中的每个 8Bit 字节都作 为

两个 ASCII 字符发送。这种方式的主要优点是字符发送的时间间隔可达到 1 秒而不产生错

误。

表 1 ASCII 模式的消息帧

如表 1 所示,使用 ASCII 模式,消息以冒号(:)字符( ASCII 码 3AH )作为起始位 ,

以回车换行符( ASCII 码 0DH, 0AH )作为结束符。传输过程中,网络上的设备不断侦测 “ : ”

字符,当有一个冒号接收到时,每个设备就解码下个位的地址域,来判断是否发给自己的。

与地址域一致的设备继续接受其它域,直至接受到回车换行符。除起始位和结束符外,其 他

域可以使用的传输字符是十六进制的 0 … 9 , A … F ,当然也要用 ASCII 码表示字符。当选用 A

SCII 模式时,消息帧使用 LRC (纵向冗长检测)进行错误检测。

2RTU 模式

当控制器设为 RTU 模式时,消息帧中的每个 8Bit 字节包含两个 4Bit 的十六进制字符 。

表 2 RTU 模式的消息帧

该模式下消息发送至少要以 35 个字符时间的停顿间隔开始。传输过程中,网络设备 不

断侦测网络总线,包括停顿间隔时间内。当第一个域(地址域)接收到,相应的设备就对 接

下来的传输字符进行解码,一旦有至少 3 5 个字符时间的停顿就表示该消息的结束。

在 RTU 模式中整个消息帧必须作为一连续的流转输,如果在帧完成之前有超过 15 个

字符时间的停顿时间,接收设备将刷新不完整的消息并假定下一字节是一个新消息的地址

域。同样地,如果一个新消息在小于 3 5 个字符时间内接着前个消息开始,接收的设备将

认为它是前一消息的延续。如果在传输过程中有以上两种情况发生的话,必然会导致 CRC

校验产生一个错误消息,反馈给发送方设备。

当控制器设为 RTU (远程终端单元)模式通信时,消息中的每个 8Bit 字节包含两个 4 B

it 的十六进制字符。这种模式与 ASCII 模式相比在同样的波特率下,可比 ASCII 模式传送 更多的数据。

=========================================================

关键的两张图只能传上来一张,我看就用ASCII码模式,简单


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/yw/13352966.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-20
下一篇 2023-07-20

发表评论

登录后才能评论

评论列表(0条)

保存