rs232(485接线接RX还是TX)

想象一下DC的电力供应。它的输出插座接口有三个管脚,分别是正极、负极和接地电极。相应地,负载的插头也应该有三个引脚与电源侧一一对应,这样才能正确获得电源。请注意

想象一下DC的电力供应。它的输出插座接口有三个管脚,分别是正极、负极和接地电极。相应地,负载的插头也应该有三个引脚与电源侧一一对应,这样才能正确获得电源。

请注意,这里必须满足三个条件:

第一,插头和插座的插脚的形状和大小,插脚的直径和长度必须一一对应,否则无法完成插入操作。这指定了插头组合的物理结构和管脚定义。

其次,电源的输出电压值必须满足负载侧的需求值,否则无法满足电气参数的要求。这决定了插头组合的级别规格。

再次,电源的输出阻抗必须与负载的输入阻抗相匹配,否则无法实现完美的电源。这就决定了电源的工作性质。

这三点其实是电源插头组合在物理层面上的规范约定。

看通讯界面。在计算机信息交换的ISO/OSI模型中,物理层是最低层(第一层),它规定了接口的机械形状、接口管脚的定义、接口级别和字节格式。

这里的字节格式是指一个字节中有多少数据位、起始/停止位和奇偶校验位。通常,一个字节有8个数据位、1个起始位(停止位)和1个奇偶校验位。注意:起始位和终止位可以组合使用。

看通讯接口和通讯网络的工作系统。

当我们挂断电话后,发现双方可以同时接听电话,这叫全双工(双向工作制);如果说的时候听不到,回答的时候说不出,但是任何一方都有说话和听的能力,也就是对讲机的通话类型,这叫半双工。

rs232(485接线接RX还是TX)

RS422接口和RS232接口是全双工接口,RS485接口是半双工接口。

对于半双工接口,显然需要有通信的发起方,所以RS485接口和网络必须有一个主站和若干个从站,从站的数量也有规定。通常,从站的数量是32。

RS485主站和从站的关系看似只是通信工作体制的不同,其本质是通信各方对通信总线控制权的合理分配。

我们来看一下总线连接的问题。

我们以电源为例。我们可以从电源引出一条主线,然后并联几条支路,分别送到几个负载。只要满足电源的功率要求,显然是可行的。

如果用同样的方法引出RS485通讯线,可行吗?答案是否定的,我们必须从主通信站引出一条线到第一个通信分站,再从第一个分站引出第二条线到第二个分站,以此类推,直到最后一个分站。在通信线路的终端,应提供一个终端电阻。如果该通信线路上的任何一点存在开路,则后续通信链路上的通信将被切断。这种连接方式形象地称为菊花花瓣连接方式或链式连接方式,而电源的连接方式称为星形连接方式。

rs232(485接线接RX还是TX)

rs232(485接线接RX还是TX)

我们发现,从电气布线的角度来看,链接是平行的。但从传播的角度来看,链接是菊花花瓣,属于一个接一个的有序连接。

现在我们可以总结一下:

RS485总线网络的连接方式必须是链式菊花花瓣的连接方式,属于半双工通信方式;RS232点对点连接方式,属于全双工通信。无论是RS232接口还是RS485接口,都必须符合物理层的通信协议。

看看MODBUS-RTU通信协议:

有了物理层通信接口,有可能通信吗?答案是否定的,物理层通信接口只是使通信双方具备通信条件。但是,如果双方都听不懂自己在说什么,或者双方的说话方式和语法结构不一致,显然是无法沟通的。

在OSI模型中,数据链路层位于物理层之上。MODBUS-RTU协议是数据链路层协议。只要通信双方采用MODBUS-RTU协议,就可以保证通信语言是双方都能理解的句子格式。

注意这里的“句”字。物理层定义字节,字节相当于语言中的单词,而数据链路层将字节组织成语句,即帧。框架规定了双方使用的句子的语法结构。

MODBUS也是主从式的。和物理层的总线控制一样,主从关系定义了通信总线的控制权。首先,主站下达命令,占用公交车;然后设置bus 空给从站写应答码;从站结束后,将总线返回主站。

现在我们来看看ISO的HDLC规定的帧结构,也就是通信语句的语法结构,如下:

rs232(485接线接RX还是TX)

在MODBUS通信协议下,不同的命令功能代码有不同的帧结构。对于读寄存器的命令,MODBUS的主要帧结构是:2字节地址码,1字节功能码,2字节数据地址码,2字节CRC校验码;MODBUS从站响应帧结构为:2字节功能码,1字节响应区总字节数,N字节响应数据,2字节CRC校验码。

虽然物理层协议不同于数据链路层协议,但是数据链路层协议的实现必须建立在通信双方的物理层连接已经满足要求,并且可以无障碍地实现信息交换的基础上。

这一规则必须在ISO/OSI模型的七层协议中得到全面彻底的实现。在ISO/OSI模型中,双方的底层协议必须为上层协议建立透明、无故障的连接和信息交换关系。换句话说,上下级关系必须是绝对的。

从数据链路层向上,是网络层。它的任务是形成现场总线的信息交换网络。

网络层的功能包括:将通信帧打包成数据包,然后将数据包发送给对方。

由于通信各方的网络结构可能不同,同一网络需要通过网桥连接,而异构网络需要通过网关连接。

网络之间可能有多个信道。发送数据包时有多种路径可供选择。负责选择路径的组件称为路由器。路由器不仅决定真实的数据交换网络路径,还构造虚拟网络路径,还决定数据包的发送顺序。因此,路由器是网络层中最复杂、最关键的设备。

在OSI模型中,物理层+数据链路层+网络层的组合称为现场总线,其通信接口为8针RJ45水晶头。显然,RJ45与RS232/RS485/RA422完全不同。

网络层中的数据包是数据帧的组合。一般来说,数据包是一篇短文或一页要传输的数据组合单元。

网络层发送数据包时,其路由问题和接收合并问题如下图所示:

rs232(485接线接RX还是TX)

rs232(485接线接RX还是TX)

我们可以看到,网络层通信时,路由器先确定路由路径,然后将数据包发送给对方。对方收到数据包后,按照前后顺序组合数据包,然后解包成实际文件。

值得注意的是,网络层支持星型网络结构是因为网络层有路由器。

现在让我们来关注ISO/OSI的7层模型,如下所示:

rs232(485接线接RX还是TX)

需要明确的是:从网络层开始,层间发送的信息单元已经是完整的消息。OSI模型还规定了消息的语法结构,由于其长度而被忽略。

值得注意的是,RS232/RS485/RS422通信接口及其定义非常清楚。包括发送和接收信息时接口的引脚级别、引脚功能定义、数据流时序关系,这些都必须准确、严格,否则无法进行信息交换。

当PLC与某个电力仪表交换信息时,这些电力仪表符合RS485/MODBUS-RTU通信规范。我们要做什么?

首先,根据菊花花瓣结构通信链路的要求,将PLC的通信接口与N个电力仪表接口连接起来。最后一个功率表的末端应配备100欧姆的终端电阻。

其次,我们按照地址递增的原则确定这N个功率表的地址,比如01H,02H,1FH等等。这里h表示十六进制,1F表示16+15=31。

第三,我们在PLC编程软件中设置功率计指定的通信速率。

第四,在PLC编程软件中,我们根据电能表数据区的地址码,以及各分站的循环关系,设置了MODBUS通信码。

注意,这里的MODBUS通信代码符合PLC的IEC 61131-3编程模块的要求,但一般的PLC梯形图不具备此功能。梯形图符合IEC 61131-1的要求,但不符合IEC 61131-3的要求。

第五,在PLC的存储器中设置专门的数据区,存储从电能表读取并处理的信息,以便上级中心站读取信息。这个数据区有一个名字叫做数据点表,有时也称为通信协议。

最后当然是开机测试。里面的内容很多,篇幅有限,不再介绍。

我们来看一个在RS485网络上用MODBUS-RTU读取数据的例子,如下:

地址为01H的功率表。在电能表存储器的第2000个位置,放置了三相电流、三相电压等6个数据,每个数据占用两个字节,共计12个字节。

这个功率表的通信速率是9600bps。你什么意思?Bps代表一个0/1,也就是位,也就是说每秒钟可以在这条总线上发送9600位。我们已经知道,一个字节有8个数据位,1个起始位,1个奇偶校验位,只有10位或10位。所以,如果功率表的通信速率是9600bps,那么1秒就可以发送:9600/10 = 960字节。

我们还知道主站读数据的帧结构(下行帧)包含1字节地址、1字节功能码、2字节内存地址、2字节数据量和2字节CRC校验码,共8个字节,所以主站发送读数据的MODBUS通信帧所用时间为:8X10/9600=8.33毫秒。

对于这个例子,我们知道读取数据的MODBUS-RUT命令是0X03H,也就是03命令。注意这里的写法:0X是前缀,中间的03是命令,最后一个h表示十六进制。

具体通信帧为:010307D0006C545,其中0X01H为地址,0X03H为命令,0X07D0H为存储器地址2000,0X0006H表示读取连续六个字,即存储器中的电流和电压参数,0XC545H为010307D0006的CRC校验码。

那么功率计响应帧(上行帧)的帧结构为:1字节地址,1字节功能码,1字节数据区,12字节数据,2字节CRC校验码,共17字节,占用时间为:17X10/9600=17.7毫秒。

具体的仪表响应通信帧为:01 03 0c 00 64 0064 0064 00 DC 00 DC 0x D6 F5 h,其中0X01H和0X03H的含义与之前相同,0X0CH表示上传数据区有12个字节,0X0064H表示A相电流为100A,后面两组为B相电流和C相电流,均为100A,0X00DCH表示A相电压为220V,然后

从站发起下行通信帧,然后等待10毫秒从站响应,然后接收从站发回的上行通信帧。总持续时间为:

rs232(485接线接RX还是TX)

如果有31台相同的仪器等待主站逐个访问,主站将开始访问第一台仪器并完成最终响应,总持续时间为:

rs232(485接线接RX还是TX)

这里1.12秒是这31米在9600bps通信速率下的读数数据循环周期,忽略主站再次发送下行通信帧的等待时间,所以实际时间会略长。

相信看到这里,你应该对MODBUS-RTU下的通信框架有了更深入的了解。

提醒:一个字有两个字节。一般来说,字节只能用来表示8个开关。但对于模拟量,要用文字来表达。比如电流是1250A,十六进制就是04E2H。完全表达出来需要2个字节。因此,在各种电力仪表中,模拟量都是用文字来表示的。

以下是MODBUS的一些常用功能代码,即命令代码:

rs232(485接线接RX还是TX)

以下是PLC读取双掷开关ASCO控制器数据点表的下行和上行通信帧示例:

rs232(485接线接RX还是TX)

解释几个相关问题:

1)一些现场总线使用令牌来解决总线控制的问题。

很容易想到,如果从站有急事需要主站服务,但是MODBUS规定了轮询规则,等自己等的时候可能就来不及了。所以很多现场总线发明了一种特殊的东西叫令牌。令牌很短,只有一个字节,可以在总线上快速传递。令牌在各个站点传递,谁拿到令牌谁就是主站,可以发布信息。如果这个站点没什么可发布的,就把令牌给下一个站点,这样就解决了公交车占用的问题。

2)当链路断开时,为避免通信中断,可采用双主站。双主站(PLC的两个主站的RS485接口)通过握手线连接。通常主站用RS485,副站用RS485 float空。浮空空的RS485与总线相连,但其高阻态相当于完全分离。当电路断开时,从站确认后会立即打开通信,从链路两端进行连接和通信。

有时,采用环形通信措施。限于篇幅,不做介绍。

3)MODBUS可以工作在网络层。这时候协议就变成MODBUS-TCP了,但还是符合主从结构。

4)MODBUS协议由美国Mordicon公司发明,其宗旨是:MODBUS协议是一个免费的开放协议。后来Modbus公司被施耐德公司收购,施耐德公司继承了MODBUS公司的做法。Modbus是一个免费的开放协议。现在MODBUS已经成为施耐德的协议,施耐德将其扩展到网络层,在网络层构建MODBUS-TCP协议和内部专用的MODBUS-PLUS协议。限于篇幅,此处省略对这两个协议的描述。

5)关于RS232和RS485的区别

学过模拟电和数字电的都知道差通道。差分通道共模抑制比可以消除共模误差。RS485接口具有此功能。所以RS232接口的传输距离只有十几米,而RS485/RS422接口的传输距离是1200米。

rs232(485接线接RX还是TX)

rs232(485接线接RX还是TX)

从图中我们可以看出,RS232和RS485接口虽然外观相同,但性能和信息交换方式不同,所以抗干扰能力也不同。

6)距离较远时,RS485接口也可以接光纤,但需要配一对光纤转换器。需要一对,因为一对用于电到光,而第二对用于光到电。光纤收发器中间的通信介质是光缆或光纤。(注意,光纤是光缆的核心。不要以为是两件事。)

光纤分为单模和多模。单模光纤更细,光在传输过程中反射少,所以失真小,其传输距离可达15km以上。多模光纤较粗,光在传输过程中反射较多,所以失真较大,其传输距离为1.5km。

rs232(485接线接RX还是TX)

7)CRC校验码是不借用比特的二进制除法,用于检查接收到的信息是否有错。

rs232(485接线接RX还是TX)

rs232(485接线接RX还是TX)

注意这里的f(x)是去掉CRC校验码的MODBUS通信帧,除数是CRC16。一帧中的CRC是运算后的余数。

在主站发送帧之前,会对帧进行CRC计算,然后将CRC计算的剩余部分附加到帧的末尾并发送给从站。接收到帧后,从站首先对帧中除CRC以外的部分进行CRC运算,检查是否正确。如果不正确,从站请求主站重新发送。

同样,当从站向主站发送信息时,主站也根据CRC校验数据的正确性。如果发现错误,要求从站重新发送。

8)关于MODBUS-RTU、MODBUS-ASC和MODBUS-TCP

如果MODBUS中的字节用BCD码表示数据,则称为MODBUS-RTU;;如果MODBUS中的字节用ASCII码表示数据,则称为MODBUS-ASC;;如果MODBUS运行在网络层,则称为MODBUS-TCP。

ASCII代码如下:

rs232(485接线接RX还是TX)

在MODBUS的实际使用中,大多采用BCD码,所以MODBUS-RTU被广泛使用。

BCD码如下:

rs232(485接线接RX还是TX)

值得注意的是,在协议的使用中,数据帧中的值都用十六进制数表示。比如100A的电流写成0X64H,380V的电压写成0X17CH。

RS485网络中使用的双绞线通信线路和接地

我们知道两根平行电缆之间会有分布电容,分布电容会减弱信号强度。为了消除分布电容,两条平行的通信线路需要按照一定的长度相互旋转绞合,称为双绞线。双绞线长度有一个规格,它与通信速率密切相关。在实际使用中,应根据通信速率选择合适的双绞线。

双绞线的外层有屏蔽层。屏蔽层必须单点接地,不允许同时在导线末端接地,防止接地电流流动造成干扰。实际布线时,各线段应独立接地,禁止将所有线段的前后屏蔽层连接在一起统一接地。

10)菊花花瓣的通信链路连接方式

菊花花瓣的绝对链状网络是不存在的。事实上,在菊花链式连接方法构建的通信网络中,每个节点都是一个连接终端,通过双绞线连接到每个变电站,这些双绞线形成了类似的星形结构。我们不妨称这种连接方式为链网下的准星形连接。

工程实践证明,准星形布线长度不应超过70cm。一旦超过,可能会出现不稳定的通信。

事实上,70cm已经成为行业内不成文的质检标准。

100欧姆终端电阻在通信速率较低时可以加也可以不加,但在通信速率较高时(高于19.2kbps)建议加。比如PROFIBUS下的RS485网络,终端电阻已经植入终端设备,只需拨动开关就可以添加或撤销。

终端电阻器的目的是吸收反射波。

我们在两棵树之间紧紧地绑一根绳子,然后在绳子的一侧轻敲,会看到有传导波往另一端去,可以看到反射波。如果撞击频率合适,波的固定点会出现在绳子的中间,称为驻波。

对于通信来说,无论是反射波还是驻波,都会严重影响通信质量。终端用来吸收反射波,可以提高末级变电站的电平。

RS485和MODBUS是两个需要通过实践来掌握的概念。仅仅通过阅读课文很难理解和掌握它们。如果这篇短文能给大家的实践活动带来好处,我会感到特别欣慰。

来源:知乎问答,张柏凡老师

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。

作者:美站资讯,如若转载,请注明出处:https://www.meizw.com/n/206177.html

发表回复

登录后才能评论