串口通信的概念非常简单,串口按位(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设备的通信。表示每秒传输的位数,常见的波特率有 9600、115200 等。波特率决定了数据传输的速度,通信双方必须设置相同的波特率才能正确地进行数据传输。b,数据位:这是衡量通信中实际数据位的参数。当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、7和8位。如何设置取决于你想传送的信息。比如,标准的ASCII码是0~127(7位)。扩展的ASCII码是0~255(8位)。如果数据使用简单的文本(标准ASCII码),那么每个数据包使用7位数据。每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。由于实际数据位取决于通信协议的选取,术语“包”指任何通信的情况。指每次传输数据的位数,通常有 5 位、6 位、7 位或 8 位可选,一般常用 8 位,即一个字节。c,停止位:用于表示单个包的最后一位。典型的值为1,1.5和2位。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。用于标识一个数据帧的结束,通常有 1 位、1.5 位或 2 位。停止位的作用是让接收方有足够的时间来处理接收到的数据,并准备接收下一个数据帧。d,奇偶校验位:在串口通信中一种简单的检错方式。有四种检错方式:偶、奇、高和低。当然没有校验位也是可以的。对于偶和奇校验的情况,串口会设置校验位(数据位后面的一位),用一个值确保传输的数据有偶个或者奇个逻辑高位。例如,如果数据是011,那么对于偶校验,校验位为0,保证逻辑高的位数是偶数个。如果是奇校验,校验位为1,这样就有3个逻辑高位。高位和低位不真正的检查数据,简单置位逻辑高或者逻辑低校验。这样使得接收设备能够知道一个位的状态,有机会判断是否有噪声干扰了通信或者是否传输和接收数据是否不同步。用于检测数据传输过程中是否发生错误。奇偶校验位可以是奇校验(保证数据位和校验位中 1 的总数为奇数)或偶校验(保证数据位和校验位中 1 的总数为偶数),也可以没有校验位。
常见的串口通讯协议
-
RS-232:是一种常用的串口通讯标准,它定义了数据终端设备(DTE)和数据通信设备(DCE)之间的电气特性和物理接口。RS - 232 采用负逻辑,即逻辑 1 的电平范围为 - 3V 至 - 15V,逻辑 0 的电平范围为 + 3V 至 + 15V。它通常用于短距离通信,最大传输距离一般为 15 米。
-
RS-485:是一种平衡传输的串口通讯标准,采用差分信号进行数据传输,具有抗干扰能力强、传输距离远等优点。RS - 485 总线上可以连接多个设备,支持半双工或全双工通信模式,常用于工业自动化、监控系统等领域,传输距离可达 1200 米以上。
-
USB 转串口:严格来说,USB 转串口并不是一种真正的串口通讯协议,而是一种将 USB 接口转换为串口信号的技术。它通过在计算机和串口设备之间插入一个 USB 转串口适配器,实现了利用计算机的 USB 接口来进行串口通信的功能。这种方式方便了用户在没有串口的计算机上连接串口设备,如一些嵌入式开发板、调制解调器等。
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使用如下规则:
- 如果端口打开,且输入队列有空接收数据,库函数置高RTS和DTR。
- 如果输入队列90%满,库函数置低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有一个标准的定义:然而,可以通过XModemConfig函数修改,以满足具体需要。这些参数的使用方法由接收方发送的字符neg_ack确定。这通知发送方其准备接收数据。它开始尝试发送,有一个超时参数start_delay;当超时的尝试超过max_ties次数,或者收到接收方发送的start_of_data,发送方停止尝试。如果从发送方收到start_of_data,接收方将读取后继信息数据包。包中含有包的数目、包数目的补码作为错误校验、packet_size字节大小的实际数据包,和进一步错误检查的求和校验值。在读取数据后,接收方会调用wait_delay,然后向发送方发送响应。如果发送方没有收到响应,它会重新发送数据包,直到收到响应或者超过重发次数的最大值max_tries。如果一直没有收到响应,发送方通知用户传输数据失败。 由于数据必须以pack_size个字节按包发送,当最后一个数据包发送时,如果数据不够放满一个数据包,后面会填充ASCII码NULL(0)字节。这导致接收的数据比原数据多。在XModem情况下一定不要使用XON/XOFF,因为XModem发送方发出包的数目很可能增加到XON/OFF控制字符的值,从而导致通信故障。
串口通讯协议在工业自动化领域有哪些应用?
串口通讯协议凭借其简单、可靠、低成本等优势,在工业自动化领域有着广泛的应用,以下是一些常见的例子:
PLC 与设备连接
-
可编程逻辑控制器(PLC)是工业自动化中常用的控制设备。PLC 通过串口通讯协议与各种现场设备进行连接,如传感器、执行器等。例如,温度传感器可以通过串口将实时温度数据传输给 PLC,PLC 根据预设的温度值控制执行器,如启动或停止加热设备,以实现温度的精确控制。
-
许多变频器也采用串口通讯协议与 PLC 进行通信。PLC 可以通过串口向变频器发送控制指令,如设置电机的转速、运行方向等,同时接收变频器反馈的运行状态信息,如电流、电压等,从而实现对电机的灵活控制和监测。
工业仪表数据采集
-
各种工业仪表,如流量计、压力表、酸碱度测试仪等,通常具备串口通信功能。它们可以通过串口将测量数据传输给上位机或数据采集系统。以流量计为例,它通过串口将测量的流量数据实时发送给监控计算机,计算机对这些数据进行分析和处理,实现对工艺流程中流体流量的监测和控制。
-
智能电表也常采用串口通讯协议与电力监控系统进行通信。它可以将电量、电压、电流等电参数数据通过串口上传到监控中心,便于对电力消耗进行实时监测和管理,实现能源的合理利用和成本控制。
工业机器人控制
-
在工业机器人的控制系统中,串口通讯协议用于连接机器人控制器与其他设备。例如,机器人控制器通过串口与示教器进行通信,接收操作人员通过示教器输入的指令,如机器人的运动轨迹、动作顺序等,同时将机器人的当前状态信息反馈给示教器,以便操作人员进行监控和调整。
-
机器人与周边设备,如传送带、夹具等之间也可能通过串口进行通信。当机器人完成一个工作任务后,通过串口向传送带发送信号,控制传送带的运行,将下一个待加工的工件传送到指定位置,实现生产过程的自动化衔接。
分布式控制系统(DCS)
-
在分布式控制系统中,串口通讯协议用于连接各个分布式节点和中央控制器。各个节点可以是现场的控制单元、传感器或执行器等,它们通过串口将本地的数据和状态信息传输给中央控制器,中央控制器则通过串口向各个节点发送控制指令,实现对整个系统的集中监控和分布式控制。
-
例如,在一个大型化工生产装置中,DCS 通过串口与分布在各个车间的控制节点进行通信,实时监测和控制生产过程中的温度、压力、流量等参数,确保生产过程的安全和稳定。
现场总线替代方案
在一些对成本敏感或通信距离较短的工业自动化场景中,串口通讯协议可以作为现场总线的替代方案。多个串口设备可以通过串口服务器或多串口卡连接到计算机或控制器上,实现设备之间的通信和数据交换。虽然串口通讯的速度和扩展性不如现场总线,但在一些简单的工业控制场景中,能够满足基本的通信需求,并且具有成本低、布线简单等优点。