第1章 数字通信及网络技术基础
1.1 数字通信基本原理
1.1.1 控制网络中常用术语
为给初学者一个关于工业控制网络的基本概念,首先做一个如图1-1所示的类比,在漆黑的环境里,每个人(控制器)之间只能通过唯一的共有管道(信道)去联系别人,信道是共用的,沟通的方式可以是向信道间歇地通断手电筒(信号,数字信号),每个人也都在观察从信道传来的信号,这就构成了分布式工业控制网络的基本模型。

图1-1 工业控制网络的类比
我们能体会到在这个环境里,让每个人的发言都有效,让有效的信息顺畅地在信道上传播出去,在这个系统中的每个人都必须遵守、追寻共同的规则,如何实现这些规则就是工业控制网络重要工作。
在此基础上,引出一些常用的术语:分布式控制(distribute control),网络结构(network architecture),主站(master),分站(或从站,slave),智能分站(intelligent station),信道(channel),传输介质(media),协议(protocol),数字通信(numerical communication)。
以往,针对在分布式环境中的控制系统,所有软硬件产品均采用某一品牌的称为集散控制系统DCS(Distribute Control System),对于较为开放的称为现场总线FCS(Fieldbus Control System),二者细致的区别这里不做阐述,使用中认识二者的共性比区别更重要。近年来很多无线、甚至借用公网的工业控制方式不断出现,本书将这些工业中使用的分布式网络统称工业控制网络。
控制网络中的网络结构以总线型为多,也有树形分支、环网结构,也可用交换式以太网构建,但相对于管理信息网络,结构还是简单,所以称作Bus,而不是Net。
主站是指能够在总线上主动发起通信的设备;从站是挂接在总线上,不能在总线上主动发起通信,只能对总线信息接收并进行响应的设备。
总线上可以有多个设备,这些设备可以是主站也可以是从站;总线上也可以有多个主站,这些主站都具有主动发起信息传输的能力。
网络中从站的类型也有多种,对具有较高智能、能够独立完成对所控对象的监控任务,只是向上级主站汇报状态信息,接受主站少量命令的从站,一般称为智能从站,如各种PLC作为从站时就是智能从站。相反,如西门子ET200M系列产品,除通信功能外无其他独立的控制功能,相当于本地I/O的延伸,这类分站称为远程I/O。
传输介质是指发送设备到接收设备之间信号传递所经的媒介,它可以是电磁波、红外线等各波段的无线传输介质,也可以是双绞线、电缆、光缆等有线传输介质。
介质访问控制MAC总线协议,管理主、从设备使用总线的规则。有效利用传输介质是控制网络的重要内容。
协议是总线设备双方(多方)事先规定好,共同遵守的约定。
1.1.2 通信系统基本概念
数据通信是指依据通信协议、利用数据传输技术在两个(或多个)功能单元之间传递数据信息的技术,一般不改变数据信息内容。数据通信技术主要涉及通信协议、信号编码、通信接口、时间同步、数据交换、通信控制与管理、安全等问题。
(1)数据与信息
数据(Data)是携带信息的实体,是信息的载体,是信息的表示形式,可以是数字、字符、符号等。单独的数据并没有实际含义,但如果把数据按一定规则、形式组织起来,就可以传达某种意义。信息(Information)是数据的内容或解释。
信号(Signal)是数据的物理量编码(通常为电编码),数据以信号的形式传播。分为模拟信号和数字信号两种。模拟信号是指在时间和幅值上连续变化的信号,如传感器接收到的温度、压力、流量、液位等信号;数字信号是指在时间上离散的、幅值经过量化的信号,它一般是由0、1表示的二进制代码组成的数字序列。
(2)数据传输率
数据传输率是衡量通信系统有效性的指标之一,其含义为单位时间内传送的数据量,常用比特率S和波特率B来表示。
在数字信道上,比特率S是一种数字信号的传输速率,表示单位时间(1s)内传送的二进制代码的有效位(bit)数,单位有每秒比特数(bit/s)、每秒千比特数(kbit/s)或每秒兆比特数(Mbit/s)等。
波特率B是一种调制速率,指数据信号对载波的调制速率,用单位时间内载波调制状态的改变次数来表示,单位为波特(Baud);或者说,在数据传输过程中线路上每秒钟传送的波形个数就是波特率,B=1/T,其中T为信号的周期。
比特率和波特率的关系为:S=Blog2N
其中,N为一个载波调制信号表示的有效状态数。对两相调制,单个调制状态对应一个二进制位,表示0或1两种状态;对4相调制,单个调制状态对应两个二进制位,有4种状态;对8相调制,对应3个二进制位;依次类推。
例如,单比特信号的传输速率为9600bit/s,则其波特率为9600Baud,它意味着每秒钟可传输9600个二进制脉冲。如果信号由两个二进制位组成,当传输速率为9600bit/s时,则其波特率为4800Baud。
(3)误码率
误码率是衡量通信系统线路质量的一个重要参数,误码率越低,通信系统的可靠性就越高。它的定义是二进制符号在传输系统中被传错的概率,近似等于被传错的二进制符号数Ne与所传二进制符号总数N的比值,即Pe=Ne/N。在计算机网络通信系统中,误码率要求低于10-6,即平均每传输1Mbit数据才允许出现1bit或更少的错误数据。
(4)信道容量
信道(Channel)是以传输介质为基础的信号通路,是传输数据的物理基础。信道容量是指传输介质能传输信息的最大能力,以传输介质每秒钟能传送的信息比特数来衡量,单位为bit/s,它的大小由传输介质的带宽、可使用的时间、传输速率及传输介质质量等因素决定。
(5)频带与基带传输方式
根据数据通信类型,网络中常用的通信信道分为两类:模拟通信信道与数字通信信道。相应地,用于数据通信的数据编码方式也分为两类:模拟数据编码和数字数据编码。
模拟数据编码是用模拟信号的不同幅度、不同频率、不同相位来表达数据的0、1状态的;数字数据编码是用高低电平的矩形脉冲信号来表达数据的0、1状态的。
频带传输中,用数字信号对载波 S(t)=Acos(ω t+ψ)的不同参量进行调制,S(t)的参量包括:幅度A、频率ω、初相位ψ,调制就是要使A、ω或ψ随数字基带信号的变化而变化。
调制解调有三种基本形式,如图1-2所示:①幅移键控编码ASK(Amplitude Shift Keying),用载波的两个不同振幅表示0和1;②相移键控编码PSK (Phase Shift Keying),用载波的起始相位的变化表示0 和1;③频移键控编码FSK (Frequency Shift Keying),用载波的两个不同频率表示0和1。

图1-2 调制解调的三种形式
在发送端通过调制解调器将数字信号的数据编码波形调制成一定频率的模拟载波信号,使载波的某些特性按数据波形的某些特性而改变;当模拟载波信号传送到目的地后,再将载波进行解调(去掉载波),恢复为原数据波形的过程,如图1-3所示,这个过程称为调制(Modulator)与解调(Demodulator),数字信号经过调制解调的传输方式也称为宽带(Broad band)传输。

图1-3 基带传输与宽带传输方式
HART总线是典型的在低频4~20mA模拟线路上使用FSK频移键控技术,叠加频率数字信号进行双向数字通信的总线,二者互不干扰。数字信号的幅度为0.5mA,数据传输率为1200bit/s,1200Hz代表逻辑“1”,2200Hz代表逻辑“0”。HART是最早出现的过渡型总线,但现在也广泛使用,尤其在本质安全要求下,对仪表的参数设置及监控方面。
基带(Base band)传输则不需要调制,编码后的数字脉冲信号直接在信道上传送,如图1-3所示。用高低电平的矩形脉冲信号来表达数据的0、1状态的,称为数字数据编码。基带传输可以达到较高的数据传输速率,是目前广泛使用的最基本的传输方式,如以太网。
(6)多路复用技术
当多个信息源共享一个公共信道,而信道的传输能力大于每个信源的平均传输需求时,为提高线路利用率所采用的技术。复用类型主要有以下几种。
频分复用FDM(Frequency Division Multiplexing):整个传输频带被划分为若干个频率通道,每路信号占用一个频率通道进行传输。频率通道之间留有防护频带以防相互干扰。
波分复用WDM(Wave Division Multiplexing):实际上是光的频分复用,在光纤传输中被采用,整个波长频带被划分为若干个波长范围,每路信号占用一个波长范围来进行传输。
时分复用原理TDM(Time Division Multiplexing):把时间分割成小的时间片,每个时间片分为若干个时隙,每路数据占用一个时隙进行传输。
1.1.3 数字编码技术
在基带传输中的数据编码形式常见的有两类:(不归零)电平码和曼彻斯特编码。
归零码(RZ,Return to Zero):每一位二进制信息传输之后均返回零电平。
非归零码(NRZ,Non-Return to Zero):在整个码元时间内维持有效电平。二进制数字0、1分别用两种电平来表示,常用-5V表示1,+5V表示0。非归零编码效率高,缺点是存在直流分量,传输中不能使用变压器,有线缆腐蚀等问题。
单极性码:信号电平为单极性,如逻辑1为高电平,逻辑0为低电平。
双极性码:信号电平为正负两种极性,如逻辑1为正电平,逻辑0为负电平。
图1-4所示为常见数据编码形式。
① 单极性归零码:有归零时间段,如图1-4(a)所示。
② 单极性非归零码 :每个时刻都是有效电平,如图1-4(b)所示。
③ 双极性归零、双极性非归零码,如图1-4(c)、(d)所示。
④ 差分码:电平变化代表“1”,不变化代表“0”。又分为2种情形:a.起始为高电平;b.起始为低电平。差分码遵循“为1则变”的原则,如图1-4(e)所示。

图1-4 电平码编码方式
上述简单的基带信号的最大问题就是当出现一长串的连1或0时,在接收端无法从收到的比特流中提取位同步信号。接收和发送之间不能保持同步,所以要采用某种措施来保证发送和接收的时钟同步,于是出现了曼彻斯特编码。
⑤ 曼彻斯特编码。曼彻斯特编码(Manchester Code)用电压的变化表示0和1,规定在每个码元的中间发生跳变:高→低的跳变代表0,低→高的跳变代表1。每个码元中间都要发生跳变,接收端可将此变化提取出来作为同步信号。
码元本身分为两半,前半个时段所传信号是该时间段传递比特值的反码,而后半个时段传递的是比特值本身。这种定义的典型应用是使用802.3协议的基带同轴电缆和CSMA/CD机制的双绞线中,ControlNet等现场总线中使用的曼彻斯特编码的定义与上述定义正好相反,其中:{L,H}=0,{H,L}=1。
这种编码也称为自同步码(Self-Synchronizing Code)。数据自同步传输,不用另外采取措施对准,无累计误差,但需要双倍的传输带宽,即信号速率是数据速率的2倍。
差分曼彻斯特编码(Differential Manchester Code)是对曼彻斯特编码的一种改进,保留了曼彻斯特编码作为“自含时钟编码”的优点,仍将每比特中间的跳变作为同步之用,但是每比特的取值则根据其开始处是否出现电平的跳变来决定。差分曼彻斯特编码需要较复杂的技术,但变化少,可以获得较好的抗干扰性能,更适用于高频。这种定义使用在802.5令牌环双绞线网络中。
差分曼码是普通的差分码和曼码的结合,依然遵循“为1则变”原则。图1-5为曼码和差分曼码的波形。

图1-5 曼码和差分曼码
1.1.4 数据同步方式
在数据的传输中,有同步方式和异步方式之分。
同步传输多用于电路板元器件之间传送数据;短距离数据通信,如连接电缆在30~40cm甚至更短。同步传输适合高速传输,需要一条专线传输时钟信号。长距离数据通信时同步传输的代价较高,容易受到噪声的干扰。
异步传输中各设备之间的时钟同步对通信至关重要。异步传输中每个通信设备都有自己的时钟信号,通信设备之间必须在时钟频率上保持一致,所有时钟之间的误差必须保持在一定范围。传输开始时要求同步各设备的时钟。
异步传输并不要求收发两端在传送每一个数据位时都同步,例如在传输字符前设置一个起始位,预告传输即将开始,在代码和校验信号结束后,设置终止位,表示该字符结束。
异步传输的特点是易于实现,对线路和收发器的要求较低,但需要额外传输一个或多个同步字符或帧头而增加网络开销。
数据同步的目的是使接收端与发送端在时间基准上一致 (包括开始时间、位边界、重复频率等)。异步传输中三种同步方法:位同步、字符同步、帧同步。
(1)位同步(内同步)
位同步的目的是使接收端接收的每一位信息都与发送端保持同步,有下面两种方式:
外同步:发送端发送数据时同时发送同步时钟信号。既要送信号,还要送时钟,在串行通信站中不可行。
自同步:通过特殊编码(如曼彻斯特编码),这些数据编码信号包含了同步信号,接收方从中提取同步信号来锁定自己的时钟脉冲频率。
(2)字符同步
以字符为边界实现字符的同步接收,也称为起止式或异步制。每个字符的传输需要1个起始位、5~8个数据位、1个(或1.5个或2个)停止位。 字符同步方式没有位的时钟,靠一个字节一同步,是基于字节的同步。其中,1.5位是按照时间长度计算的。
在每两个字符之间的间隔时间不固定时,频率的漂移不会积累,每个字符开始时都会重新同步。
字符同步增加了辅助位,降低传输效率,例如采用1个起始位、 8个数据位、 2个停止位时,其效率为8/11<72%。
(3)帧同步
传输信息时,将线路上的数据流划分成报文分组或HDLC(高级数据链路控制)规程的帧,以帧的格式进行传送。帧(Frame)是数据链路层的传输单位,是包含数据和控制信息的数据块。
识别一个帧的起始和结束,是更高层的同步。有以下常用方式。
面向字符的帧同步:以同步字符(SYN,16H)来标识一个帧的开始,适用于数据为字符类型的帧。
面向比特的帧同步:在HDLC通信规程中的帧标识位F(01111110),就是用它来标识帧的开始和结束。通信时,当检测到帧标识F,即认为是帧的开始,然后在数据传输过程中一旦检测到帧标识F即表示帧结束。以特殊位序列(7EH,即01111110)来标识一个帧的开始,适用于任意数据类型的帧。
违例编码法:这在物理层采用特定的比特编码方法时采用。比如说,采用曼彻斯特编码方法时,将数据比特1编码成高-低电平对,而将数据比特0编码成低-高电平对。高-高或低-低电平对在数据比特的编码中都是违例的,可以借用这些违例编码的序列来定界帧的开始和结束。
字节计数法:这种方法首先用一个特殊字段来表示一帧的开始,然后使用一个字段来标明本帧内的字节数。当目标机的数据链路层读到字节计数值时,就知道了后面跟随的字节数,从而可确定帧结束的位置(面向字节计数的同步规程)。
1.1.5 差错控制
与语音、图像传输不同,计算机通信要求极低的差错率。产生差错的原因有:信号衰减、信号反射、冲击噪声(闪电、大功率电机的启停)等。种种原因造成信号幅度、频率、相位的畸变,使数据在传输过程中可能出错。
为了提高通信系统的传输质量,提高数据的可靠程度,应该对通信中的传输错误进行检测和纠正。传输中误码是必然的,分析错误纠正错误是必需的。有效地检测并纠正差错也被称为差错控制。目前还不可能做到检测和校正所有的错误。
计算机网络中,一般要求误码率低于10-6,即平均每传输106位数据仅允许错一位。若误码率达不到这个指标,可以通过差错控制方法进行检错和纠错。
实际的数据传输系统,不能笼统地说误码率越低越好,在数据传输速率确定后,误码率越低,数据传输系统设备越复杂,造价越高。计算机通信的平均误码率要求低于10- 9。
数据通信中差错的类型一般按照单位数据域内发生差错的数据位个数及其分布,划分为单比特错误、多比特错误和突发错误三类。这里的单位数据域一般指一个字符、一个字节或一个数据包。
单比特错误:在单位数据域内只有1个数据位出错的情况,称为单比特错误。单比特错误是工业数据通信的过程中比较容易发生、也容易被检测和纠正的一类错误。
多比特错误:在单个数据域内有1个以上不连续的数据位出错的情况,称为多比特错误。多比特错误也被称为离散错误。
突发错误:在单位数据域内有2个或2个以上连续的数据位出错的情况,称为突发错误。发生错误的多个数据位是连续的,是区分突发错误与多比特错误的主要特征。
利用差错控制编码来进行差错控制的方法基本上有两类,一类是自动请求重发ARQ(Automatic Repeat Request),另一类是前向纠错FEC(Forword Errov Correction)。
在ARQ方式中,接收端检测出有差错时,就设法通知发送端重发,直到收到正确的码字为止。在FEC方式中,接收端不但能发现差错,而且能确定发生错误的位置,从而加以纠正。因此,差错控制编码又可分为检错码和纠错码。检错码是指能自动发现差错的编码,纠错码是指不仅能发现差错而且能自动纠正差错的编码。ARQ方式只使用检错码,但必须有双向信道才可能将差错信息反馈至发送端。同时,发送方要设置数据缓冲区,用以存放已发出去的数据,以便知道出差错后可以调出数据缓冲区的内容重新发送。
FEC必须用纠错码,但它可以不需要反向信道来传递请求重发的信息,发送端也不需要存放以备重发的数据缓冲区。虽然FEC有上述优点,但由于纠错码一般说来要比检错码使用更多的冗余位,也就是说编码效率低,而且纠错设备也比检错设备复杂得多,因而除非在单向传输或实时要求特别高(FEC由于不需要重发,实时性较好)等场合外,数据通信中使用更多的还是ARQ差错控制方式。
有些场合也可以将上述两者混合使用,即当码字中的差错个数在纠正能力以内时,直接进行纠正;当码字中的差错个数超出纠正能力时,则检出差错,使用重发方式来纠正差错。
衡量编码性能好坏的一个重要参数是编码效率R,它是码字中信息位所占的比例。若码字中信息位为k位,编码时外加冗余位为r位,则编码后得到的码字长度为n=k+r位,由此编码效率R可表示为:R=k/n=k/(k+r)。显然,编码效率越高,即R越大,信道中用来传送信息码元的有效利用率就越高。
奇偶校验码、循环冗余码、校验和、海明码是几种最常用的差错控制编码方法。
1.1.5.1 奇偶校验
奇偶校验在实际使用时可分为水平奇偶校验(普通奇偶校验)、垂直奇偶校验和水平垂直奇偶校验等几种。
在水平奇偶校验中,一个单一的校验位(奇偶校验位)被加在每个单位数据域如字符上,使得包括该校验位在内的各单位数据域中1的个数是偶数(偶校验),或者是奇数(奇校验)。在接收端采用同一种校验方式检查收到的数据和校验位,判断该传输过程是否出错。如果规定收发双方采用偶校验,在接收端收到的包括校验位在内的各单位数据域中,如果出现的1的个数是偶数,就表明传输过程正确,数据可用;如果某个数据域中1的个数不是偶数,就表明出现了传输错误。
水平奇偶校验的方法简单,能够发现单位数据域中奇数个错误,不能发现单位数据域中偶数个错误。
单纯垂直奇偶校验应用较少。水平垂直奇偶校验能够改善水平奇偶校验的不足之处,在少量数据块的传输中较为实用,其结构如图1-6所示,网格的每个交叉点为数据的一个码元(0、1),水平方向最后为水平奇偶校验码(实心点),垂直方向最下端为垂直奇偶校验码(实心点)。

图1-6 水平垂直奇偶校验
水平垂直奇偶校验不仅可检错,还可用来纠正部分差错。例如数据块中仅存在1位错时,便能确定错码的位置就在某行和某列的交叉处,从而可以纠正它。
如果2个错误,能够发现,但不能纠正(不知错在哪),更多处错误则更无法识别出现错误的位置。
水平垂直奇偶校验“发现”的能力显著提高,只有“井”字形的错误才不能被发现,即在某个单位数据域内有两个数据位出现传输错误,而另一个单位数据域内相同位置碰巧也有两个数据位出现传输错误,水平垂直奇偶校验的结果会认为没有错误。
1.1.5.2 循环冗余校验(Cyclic Redundancy Check,CRC)
CRC对传输序列进行一次规定的除法操作,双方约定生成一个多项式G(x),对数据进行模2除法,将除法操作的余数附加在传输信息的后边。在接收端,也对收到的数据做相同的除法。如果接收端除法得到的结果其余数不是零,就表明发生了错误。
基于除法的循环冗余校验,其计算量大于奇偶与求和校验,其差错检测的有效性也较高,它能够检测出大约99.95%的错误。
CRC差错检测的原理比较简单,容易实现,已经得到了广泛应用。其中模2运算(异或运算)的规则如下:
① 0+0=0,0-0=0,0+1=1,0-1=1,1+0=1,1-0=1,1+1=0,1-1=0;
② 不考虑进位、借位的二进制加减。
举例:数据为110011,生成多项式为G(x)=X4+X3+1(11001),模2运算产生余数的过程如下:
得到的余数1001附加在数据的后面,作为校验数据,最后传输的数据为1100111001。
接收端校验处理过程可采用下列两种之一。
① 1100111001除以11001,为0则表示传输正确,否则认为传输错误,请求重发。
② 提取信息码,重复发送端的操作,所得余数R'=R(即1001),则表示传输正确。
CRC查错能力强,在计算机的很多领域都广泛应用,包括文件、数据的完整性校验等,CRC方法有数学方面的依据,是“发现”错误不是“纠正”错误。
任何校验方法都不能百分之百发现、纠正错误,但检测可靠性在概率上是极高的,CRC能够检测出所有奇数个错误,所有双比特错误,所有小于等于校验位长度的错。CRC计算一般是可靠硬件来实现。
Modbus RTU网络、CAN总线中都采用CRC。
1.1.5.3 校验和
除CRC外,校验和(Checksum)也被广泛采用,如在Modbus ACSII方式、PROFIBUS-DP总线、TCP/IP协议中即采用校验和方法。
在发送端将数据分为k段,每段均为等长的n比特。将分段1与分段2做求和操作,再逐一与分段3至k做求和操作,得到长度为n比特的求和结果。将该结果取反后作为校验和放在数据块后面,与数据块一起发送到接收端。在接收端对接收到的、包括校验和在内的所有k+1段数据求和,如果结果为零,就认为传输过程没有错误,所传数据正确。如果结果不为零,则表明发生了错误。
校验和通常只有1个字节,且多在长报文中使用,不会对通信有明显的影响。能检测出95%的错误,但与奇偶校验方法相比,增加了计算量。
1.1.5.4 海明码
纠正传输错误需要更多的冗余信息,实际的海明码是单比特位纠错编码 。
在信息编码中,两个合法代码对应位上编码不同的位数称为码距,又称海明距离。
一个有效编码集中,任意两个码字的海明距离的最小值称为该编码集的海明距离。
给定某种构造校验位的算法,就能够造出包含全部合法码字的码字表(编码系统)。该码字表中必存在着两个码字之间的距离最小。海明距离决定了编码系统的检错和纠错能力。
为了检测d个错误,需要一个海明距离为d+1的编码方案。因为在这样的编码方案中,d个1位错误不可能将一个有效码字改编成另一个有效码字。当接收方看到一个无效码字的时候,就知道已经发生了传输错误。类似地,为了纠正d个错误,需要一个距离为2d+1的编码方案,因为在这样的编码方案中,合法码字之间的距离足够远,因而即使发生了d位变化,则还是原来的码字离它最近(概率原则),从而可以唯一确定原来的码字,达到纠错的目的。
例:用5个0和5个1的组合来确定一个编码集,{0000000000,0000011111,1111100000,111111111},该编码集可纠正2比特错。
海明码也利用了奇偶校验位的概念,在信息字段中插入若干位数据,用于监督码字里的哪一位数据发生了变化,具有一位纠错能力。海明码求解具体步骤:
例如“H”的ASCII码值为1001000(7位)
在1,2,4,8位插入校验位P1,P2,P4,P8,即
︻ ︻ 1 ︻ 0 0 1 ︻ 0 0 0
因为3=1+2;5=1+4;…;9=1+8…,则可以认为第1位(最左侧的校验位)与第3,5,7,9,11位有关,1:∈(3,5,7,9,11),即 P1=D3+D5+D7+D9+D11(偶校验:偶数个1则为0),对其他三个校验位的值的确定方法,以此类推:
2:∈(3,6,7,10,11)
4:∈(5,6,7)
8:∈(9,10,11)
偶校验:1:0,2:0,4:1,8:0
结果:00110010000(11位)
如果在接受方收到0 0 1 1 1 0 1 0 0 0 0 (11位),左起第五位错,S1错,S2对,S4错,S8对,则S8S4S2S1=0101,即十进制的5,则说明第5个位的数据发生单比特传输错误,将其改正。
海明码从左到右的2n位为校验位,使其所负责的集合服从规定的奇偶校验。其效率<7/11,单个位错误能够纠正,否则不能纠正,只能请求重发。当信道条件差时,将数据分割为多个小包发送是一种好方法。
1.1.6 RS-485串行通信接口
工业控制网络最早是在RS-485上实现,绝大多数Modbus网络、PROFIBUS-DP现场总线均采用RS-485作为物理层,RS-485对工业控制网络有特殊的意义。
RS-485由RS-232、RS-422转变而来。无论是RS-485、RS-232接口,还是RS-422接口,均可采用串行异步收发数据格式。
在串行端口的异步传输中,接收方一般事先并不知道数据会在什么时候到达。在它检测到数据并作出响应之前,第一个数据位就已经过去了。因此,每次异步传输都应该在发送的数据之前设置至少一个起始位,以通知接收方有数据到达,给接收方一个准备接收数据、缓存数据和作出其他响应所需要的时间。而在传输过程结束时,则应由一个停止位通知接收方本次传输过程已终止,以便接收方正常终止本次通信而转入其他工作程序。串行异步通信数据格式如图1-7所示。

图1-7 串行异步通信数据格式
若通信线上无数据发送,该线路应处于逻辑1状态(高电平)。当计算机向外发送一个字符数据时,应先送出起始位(逻辑0,低电平),随后紧跟着数据位,这些数据构成要发送的字符信息。有效数据位的个数可以规定为5、 6、7或8。
奇偶校验位视需要设定,紧跟其后的是停止位(逻辑1,高电平),其位数可在1、1.5、2中选择其一。
在传输过程中,从数据的流向上分,又分为单工、半双工、双工工作方式。
单工通信:信息传送始终朝着一个方向,不进行反向传送。发送端与接收端不变换角色,如设A 为发送端,B 为接收端,数据只能从A 传送至B ,而不能由B 传送至A 。单工通信线路一般采用二线制。
半双工通信:指信息传输可在两个方向上进行,但同一时刻只限于一个方向传输。通信双方都具有发送器和接收器,双方可变换通信角色。
当A 站向B 站发送信息时,A 站将发送器连接在信道上,B 站将接收器连接在信道上,当B 站向A 站发送信息时,B 站则要将接收器从信道上断开,并把发送器接入信道;A 站则反之。半双工通信采用二线制线路,信道可改换传输方向
全双工通信:信息传输可同时在两个方向进行,相当于两个相反方向的单工通信的组合,常用于计算机-计算机之间的通信。全双工和半双工通信方式示意如图1-8所示。

图1-8 全双工和半双工通信方式
RS-232、RS-422与RS-485都是串行数据接口标准,它们都只对接口的电气特性做出规定,而不涉及接插件、电缆或协议,在此基础上用户可以建立自己的高层通信协议。
RS-232是PC机与通信工业中应用最广泛的一种串行接口。RS-232被定义为一种在低速率串行通信中增加通信距离的单端标准。RS-232 采取不平衡传输方式,即所谓单端通信。收、发端的数据信号是相对于信号地,其共模抑制能力差,再加上双绞线上的分布电容,其传送距离最大约为15m,最高速率为20kbit/s。RS-232是为点对点(即只用一对收、发设备)通信而设计的,适合本地设备之间的通信。

图1-9 三种串行通信方式
RS-422由RS-232发展而来,它是为弥补RS-232之不足而提出的。为改进RS-232通信距离短、速率低的缺点,RS-422定义了一种平衡通信接口,将传输速率提高到10Mbit/s,传输距离延长到1200m(速率低于100kbit/s时),并允许在一条平衡总线上连接最多10个接收器。RS-422是一种单机发送、多机接收的单向、平衡传输规范。为扩展应用范围,电子工业协会EIA又于1983年在RS-422基础上制定了RS-485标准,增加了多点、双向通信能力,即允许多个发送器连接到同一条总线上,同时增加了发送器的驱动能力和冲突保护特性,扩展了总线共模范围,后命名为TIA/EIA-485-A标准。
RS-485接口采用二线差分平衡传输,其信号定义如下:当采用+5V电源供电时,若差分电压信号为-2500~-200mV时,为逻辑“0”;若差分电压信号为200~2500mV时,为逻辑“1”;若差分电压信号为-200~+200mV时,为高阻状态。
RS-485的差分平衡电路,其一根导线上的电压是另一根导线上的电压值取反。接收器的输入电压为这两根导线电压的差值(VA-VB)。
RS-422采用两对差分平衡线路,而RS-485只用一对。差分电路的最大优点是抑制噪声。由于在它的两根信号线上传递着大小相同、方向相反的电流,而噪声电压往往在两根导线上同时出现,一根导线上出现的噪声电压会被另一根导线上出现的噪声电压抵消,因而可以极大地削弱噪声对信号的影响。
RS-232、RS-422和RS-485的电气参数见表1-1。
表1-1 RS-232、RS-422和RS-485的电气参数

差分电路的另一个优点是不受节点间接地电平差异的影响。在非差分(即单端)电路中,多个信号共用一根接地线,长距离传输时,不同节点接地线的电压差异会引起信号的误读。差分电路则完全不会受到接地电压差异的影响。
RS-485价格比较便宜,能够很方便地添加到任何一个系统中,支持比RS-232更长的距离、更快的速度以及更多的节点。RS-485更适用于多台计算机或带微控制器的设备之间的远距离数据通信。
RS-485网络的终端有终端电阻,当终端电阻等于电缆的特征阻抗时,可以削弱甚至消除信号的反射。特征阻抗是导线的特征参数,它的数值随着导线的直径、在电缆中与其他导线的相对距离以及导线的绝缘类型而变化。特征阻抗值与导线的长度无关,一般双绞线的特征阻抗为100~150Ω。
RS-485的驱动器必须能驱动32个单位负载加上一个60 Ω的并联终端电阻,总的负载包括驱动器、接收器和终端电阻,不低于54Ω。两个120Ω电阻的并联值为60Ω,32个单位负载中接收器的输入阻抗会使总负载略微降低;而驱动器的输出与导线的串联阻抗又会使总负载增大。最终需要满足不低于54Ω的要求。
还应该注意的是,在一个半双工连接中,在同一时间内只能有一个驱动器工作。如果发生两个或多个驱动器同时启用,一个企图使总线上呈现逻辑1,另一个企图使总线上呈现逻辑0,则会发生总线竞争,在某些元件上就会产生大电流。因此,所有RS-485的接口芯片上都必须有限流和过热关闭功能,以便在发生总线竞争时保护芯片。
串行数据通信的另外一种方式TTY也称为电流环, TTY是远传通信用的电流环,是早期用于远程传输RS-232串口的一种电流信号。电流信号比电压信号传输更远。TTY的电流信号分为有/无,大小大约为20mA,分别代表信号0/1或者1/0。由于TTY没有统一的国际标准,所以各个厂家的TTY之间未必可以相互通信。从RS-232转换出来的TTY信号分有源和无源电流环,TTY是数字信号。