485总线

2024-07-22

485总线(共7篇)

485总线 篇1

0 引言

随着经济的高速增长和工业化进程的加快, 工矿企业的生产正在向智能化和网络化方向发展, 整个生产系统是基于网络的大型自动化系统。系统的底层是基于现场总线的智能测控设备, 目前不少厂家的总线都采用RS485总线, 协议也各不相同;中间层一般采用Profibus DP等工业总线网络;最上层采用工业控制计算机和监控软件组成主控站[1,2]。

由于采用RS485总线的智能测控设备与采用Profibus DP总线的设备协议不同, 它们不能够直接连接传输数据, 必须经过相应的通信协议转换才能够连接。本文以煤矿供电自动化系统为例, 分析基于RS485总线的智能测控设备与Profibus DP总线的连接技术, 并给出设计方案。

1 RS485总线与Profibus DP总线的通信原理

基于现场总线的数据通信基本原理是使用OSI模型的不同层作为子集, 如图1所示[2]。其中, 第一层表示最底层, 也就是物理通信线路的电气信号;第七层是用户层, 在这一层2种设备才能交换和理解相互之间的数据。

普通的RS485总线接口仅仅定义了第一层, 能够确保2个RS485设备之间进行电气连接而不会造成电气冲突。但是要在2个设备之间进行通信和数据解释, 则需要2个设备都使用相同的协议来定义通信规则和数据格式。

Profibus DP是一种国际开放式现场总线标准, 为多主站系统, 可实现多个控制、配置或可视化系统在1条总线上的相互操作。拥有访问权 (令牌) 的主站无需外部请求就可以发送数据。而从站是一种被动设备, 不享有总线访问权, 只能对接收到的消息进行确认, 或者在主站发出请求时进行数据发送。总线支持波特率为9.6~12 Mbps, 并且最多可连接126个设备。

Profibus DP采用了OSI模型中的第一、二层和用户接口层。第一层定义了串行现场总线的功能、电气和机械的特性。Profibus DP通过第二层向用户提供数据链路服务, 它提供给第二层的数据传输协议是基于报文的协议。

因此, RS485总线设备和Profibus DP总线设备需要一个数据协议转换器来实现连接。协议转换器分别接收来自2种总线设备的报文数据, 然后对数据进行协议转换, 完成转换的数据分别放入发送缓冲区中, 再分别传送给总线设备。

2 总线互联网络的硬件设计

本文选用瑞典HMS公司生产的Anybus Communicator (简称ABC) 网关来连接RS485总线设备与Profibus DP总线设备, 如图2所示。

图2中, 综保是基于RS485总线的高压馈电柜智能监控设备, 它相当于ABC网关的从站, 每一个设备都有1个唯一地址。ABC网关相当于主站, 可实现普通RS485总线与Profibus DP总线之间的互联。ABC网关将2边不同网络的数据进行重新打包和格式转换, 以便对方能够理解其应用数据。

在RS485总线的网络中, 一般选用带屏蔽的双绞线作为信号传输线。双绞线在长度和方向上完全对称, 因而它们所受的外界干扰程度完全相同, 干扰信号以共模方式出现。由于RS485接口对共模干扰的抑制能力很强, 因此, 双绞线可实现信号的可靠传输。设备与RS485总线的连接线要尽可能地短, 其中信号线A与总线A并联, 信号线B与总线B并联[3]。

在ABC网关的输入口需要加光电耦合器, 对上级主站与下级分站进行电路隔离, 从而提高系统的稳定性。另外, 在RS485总线末端并联1个120 Ω (0.25 W) 的匹配电阻R, 吸收总线上的反射信号, 以保证正常传输信号干净、无毛刺。

ABC串行网关采用数据缓存区方式解决应用层协议问题。从RS485总线来的数据被映射到ABC网关的本地存储区中, 通过一个配置工具软件, ABC网关可定义在串行数据流中哪些字节是纯数据, 哪些是命令控制信息。被选中的纯数据被映射到另一侧网络的第七层, 因此, 该数据可被网络上其它节点所接收和理解。

3 ABC串行网关的软件设计和参数配置

ABC串行网关采用数据映射方式传递2个网络的数据, 其数据交换工作流程如图3所示。ABC串行网关依次循环向节点 (智能监控单元) 发送数据询问帧, 对应地址节点收到命令后返回正确的数据帧, ABC串行网关再将接收到的监控数据映射到输入、输出缓冲区, 最后将缓冲区重新打包成Profibus DP协议数据。

为了完成图3所示的网络数据交换和数据解析, 需要对ABC网关软件进行设计。笔者采用ABC的组态工具软件 (ABC Config Tool) 进行配置和设计。

3.1 ABC网关的参数配置

为了让ABC网关正常工作, 需要设计和配置其自身的运行参数。运行ABC Config Tool软件, 打开一个空白设置界面, 进入参数配置框, 如图4所示。选择物理接口为串口 (Serial) , 协议为主站模式 (Master Mode) , 其它设置选择默认值。

3.2 下级网络参数配置

ABC下级网络是基于RS485的串行总线网络, 需要根据现场的实际情况对串行通信的基本协议进行配置。鼠标选中图4中的“Sub-Network”图标, 就会出现如图5所示的串行协议配置界面。图5中的具体设置:通信波特率设置为“9 600”, 数据位数为“8”, 奇偶校验设置为“无 (None) ”, 停止位为“1”, 硬件接口设置为“RS485”。

3.3 下级网络结构设计

需要根据现场实际情况设计RS485网络的节点数目和每个节点中的数据结构。其设置界面如图6所示。

(1) 节点设计

鼠标选中图4中的“Sub-Network”图标, 单击右键选择“insert new node”菜单, 添加新节点, 并在“slave address”框中输入对应监控单元地址。图6设计了6个节点。

(2) 处理事件设计

鼠标选中图6中的“1#Node”图标, 单击右键选择“add transactions”菜单, 添加处理事件“tran-sactions”, 图6设计了1个处理事件。

(3) 处理事件的数据结构设计

处理事件的数据结构包括询问帧结构和响应帧结构, 可以根据不同的总线规约对其进行设计。下面以103规约为例进行设计, 具体数据结构定义如表1所示。

在103规约中, 起始字节为“68H”;结束字节为“16H”[4];从站地址是与ABC通信的监控单元地址;功能码是传送不同数据的区分码;数据区是有效数据的存放区域;校验码是对该帧数据进行检验后的值。

图6中, 选中“Query”图标, 单击右键选择“add byte”菜单, 添加“起始符”、“从站地址”、“结束符”等常数变量, 并输入相应的常数值;选择“add data”菜单, 添加“数据区”变量, 并修改数据区的长度和在ABC中的起始地址 (注意不能与其它数据区地址冲突) ;选择“add checksum”菜单, 添加“校验码”变量, 并修改校验方式 (有CRC、LRC、XOR方式) 和校验数据的起始地址。需要依据表1的结构和顺序添加变量。

其它节点的数据结构设计步骤与上述相同, 注意设置“从站地址”时, 要与实际的监控单元地址相一致。

3.4 程序下载

当完成ABC网关所有结构和参数设置后, 就可以将设置的参数下载到ABC网关中。程序下载时, 需要用RS232串口线将ABC网关与个人计算机连接。连接PC机端为DB9, 连接ABC网关端为RJ4, 如图7所示。

当PC机与ABC网关连接后, 用ABC组态软件中的“Tools/Port”菜单选择串口号, 然后点击“connect”图标连接PC机与ABC网关, 最后点击“download to ABC”图标将程序下载到ABC中网关。可点击“Sub-Network monitor”图标, 监视ABC网关中输入、输出数据映射区。

4 结语

本文以煤矿供电自动化系统为例, 使用ABC智能串行网关设计了RS485总线与Profibus DP总线的互联电路, 并对ABC网关进行了软件设计和参数配置。该设计方案已经得到实际应用, 并取得了良好的效果。本文提出的设计方法也可用于其它类型总线网络的互联设计中。

摘要:文章详细分析了RS485总线和Profibus DP总线的通信原理, 并以煤矿供电自动化系统为例, 介绍了采用ABC智能串行网关设计的RS485总线与Profibus DP总线的互联电路, 并给出了ABC网关的参数设计和配置。实际应用表明, 该互联技术使用效果良好。

关键词:RS485总线,Profibus DP总线,互联,网关

参考文献

[1]党存禄, 靳路宁, 马安仁, 等.基于现场总线的变电站综合自动化系统[J].甘肃科学学报, 2006, 18 (1) :95~98.

[2]阳宪惠.现场总线技术及其应用[M].北京:清华大学出版社, 2002.

[3]邓先明, 杨宇, 方荣惠.基于现场总线的煤矿供电自动化系统[J].电力自动化设备, 2007, 27 (4) :95~98.

[4]周丽.基于IEC60870-5-103规约的变电站内部通信系统的研究与实现[D].青岛:山东科技大学图书馆, 2005.

基于485总线的温度监控系统 篇2

RS-485总线由于平衡差分传输的特性, 具有抗干扰能力强, 传输距离远、有较强的级连的能力。能实现多站远距离通信, 组网方便, 成本低廉, 因此在工业控制领域得到广泛应用。

本系统是基于RS-485总线的远程多路温度监测、控制系统, 上位机是一台PC, 下位机是多个以AT98S51为控制器的温度传感器。工作时, 下位机会向上位机发出本机地址和询问预置温度的请求。上位机获得下位机地址后, 就知道那些地址的下位机已启动并根据请求把相应的预置温度发给下位机, 此后每隔一定时间逐一询问已启动的下位机测定的温度信息, 获得温度值后存入数据库并实时显示当前各路传感器测定温度, 当温度过高时, 会告警提示。下位机获得预置温度后, 开始对传感器的数据采集和温度测量。当温度低于预置温度时, 接通加热器加热温度, 温度过高时, 接通制冷设备加速降温, 同时把温度信息传回上位机, 温度超出范围后, 还会以蜂鸣器报警。上位机接收下位机的测量温度后存入数据库, 并实时显示, 系统还具备数据库管理、温度变化曲线绘制等功能。当下位机掉电重启后, 会向上位机重新问询获得掉电前的预置温度。

温度监控系统由传感器电路、信号调整电路、A/D采样电路、控制电路、监控主机组成。基本工作原理是:传感器电路将感受到的温度信号以电压形式输出, 经调整电路变换到TTL电平、由A/D采样后将数字量送给单片机控制电路, 单片机根据开机时上位机传来的设定温度判断作何种控制, 如温度未到设定温度, 经驱动控制继电器闭合接通加热器, 如温度过高则接通制冷设备加速降温。单片机还将所测温度在数码管上显示, 并在上位机询问时把测量温度送到上位机入库。系统框图如下图1。

系统实现

硬件设计

AT89S51是ATMEL公司的可在线编程的单片机, 它价格低廉, 且支持在系统编程 (ISP) , 方便设计者开发调试。温度传感器选用NS公司生产的LM35, 它具有很高的工作精度和较好的线性工作范围, 测温范围为-55℃~+150℃, 完全适用于一般的测温场合。其输出电压与摄氏温度线性成正比, 无需外部校准即可提供1/4℃的测量精度。信号调整电路将传感器电路输出的变化范围为2V左右的直流电压, 调整为TTL电平, 以便与A/D兼容。由于单片机IO口有限, 在对测温实时性要求不是太高的情况下, A/D变换采用8位串行A/D转换器ADC0832, 它与单片机的IO连线只有三根, 减少了IO占用量。四个数码管的数据端都接到单片机P1口, 控制端由P2[3..0]控制, 利用定时器中断触发, 每次只接通一个数码管, 显示相应数值, 利用分时显示在数码管上显示温度值。当温度变化时, A/D采集调整电路输出电压值, 送单片机, 单片机根据采样值判定温度, 通过数码管显示温度值并回馈上位机。原理图如图2所示。

软件设计

下位机软件设计

下位机的软件是在Keil uVision2下, 使用C语言开发的。下位机的软件设计中, 主要解决三个问题:一是ADC0832的控制位写入。根据数据手册, 在时钟上升沿写入配置字即可, 但按此方法始终不能正确读出数据, 后来经过试验, 在写入配置字的每一位后, 还要在负跳变前把数据翻转, 配置字才能正确写入。二是数码管上温度值的显示。最后采用中断方案, 每隔10ms进入中断程序, 循环选通各个数码管, 分时显示对应的数字值。三是A/D采样数据的处理, 为避免因干扰而造成A/D采样数据不稳定, 这里采用软件滤波的方法以滤除可能的尖峰干扰。方法是连续采样七次, 去掉最高值和最低值, 其余五次取平均值来获得A/D采样的数字量。

经测量, 0V对应的温度为0℃, 5V时对应的温度为1 2 5℃, 则比例因子K=0.04V/℃。每个数字量对应的电压值为20mV, 则数字量变化与温度变化比例关系K1=2数字量/℃, 利用此比例因子就可由数字量得到当前温度。

上位机软件设计

本系统为主从式监控系统, 主机 (即上位机) 在向下位机发预置温度启动下位机后, 轮询不同地址码的从机, 获得温度值, 存入数据库并在主界面显示。从机接收到主机预置温度后启动, 每次主机询问温度值时回送测量温度值。如出现掉电后重启的情况, 从机向主机发出重置请求, 要求主机重发预置温度。上位机的通信软件开发采用Borland公司的C++Builder 5.0, 它的集成RAD开发环境可以帮助开发人员快速高效地开发出高质量的程序。在C++Builder中对串口进行编程可以使用Mscomm控件加快开发进度。它是一个ActiveX组件, 不在C++Builder安装中提供, 可以在装有VC6.0的PC上获得, 拷贝到本机上注册后, 在C++B u i l d e r下, 先是在菜单的Component选项中导入ActiveX控件, 再Install Packages后就可以在Active X面板中看到并使用它了。

数据库采用微软的ACCESS数据库, 使用ADO数据引擎;C++Builder在ADO面板中提供了完备的ADO开发控件, 实现了通过鼠标操作就能实现连接数据库、编辑数据内容、显示数据等一些基本数据库操作功能。程序还可以绘制温度变化历史曲线便于操作员管理。

总线通信格式设置

上位机和下位机之间的串行通信采用RS-485标准接口, PC端接一个RS232/485的转换器, 就实现RS485总线控制了。在通信频率1200bps的情况下, 有效通信距离为1.2km。由于有多个从设备并联在485总线上, 所以要制定严格的通信格式, 表1是用到的通信协议。

结语

笔者设计了一种基于RS485总线的温控系统。此系统投资少, 架设简单、可扩展性强, 大大减轻管理者的负担, 实现了工业控制自动化。目前在多个场所得到了具体应用, 其测温精度在0.5℃以内, 系统工作可靠稳定, 无通信故障。

摘要:介绍了一种基于485总线的温度监控系统的设计与实现。系统采用上位机和下位机设计, 下位机通过温度传感器监测温度, 与预置温度比较后执行任务;上位机和下位机通过主从应答方式交换数据信息。在上位机端的PC上实现了对多路传感器传来的温度信息入库保存、打印、温度变化历史曲线绘制等功能。

关键词:RS485总线,温度监控,多路传感器,数据库

参考文献

[1]. Myke Predko, PC接口技术内幕, 中国电力出版社, 2002年

[2]. 苗强, 基于RS485总线的变电所监测系统设计, 仪器仪表学报, 2006年第16卷第6期, 910~912

485总线 篇3

关键词:ESD,RS-485,总线节点,瞬态保护

电气过应力所致功能失灵带来的工业网络故障使网络节点保护变得非常有必要,特别是静电放电、电感开关和雷击所引起的电气瞬态的保护。因此,国际电工委员会(IEC)定义了三种瞬态抑制测试标准,旨在保证测试期间和测试后电路的正确运行。

本文简要介绍了这些测试,并建议使用工业RS-485线缆和低电容瞬态电压抑制器为您的网络保护提供一种最有效的方法。

瞬态抑制测试系列

我们将讨论三种IEC标准:

●静电放电(E S D)抗扰度(IEC61000-4-2);

●电气快速瞬态(EFT)抗扰度,或脉冲抗扰度(IEC61000-4-4);

●浪涌抗扰度(IEC61000-4-5。

ESD测试模拟了人体的静电放电对电子设备的影响。ESD发生器产生的测试脉冲为短历时(100ns以下)脉冲,并有一个约1ns的快速上升时间。尽管这种测试脉冲为低能量,但可以形成许多毁灭性的高电流,足以毁坏一个收发器的内部保护电路。一个最小ESD测试序列由20次放电、10个正极脉冲、10个负极脉冲,以及每个脉冲之间的一秒暂停间隔组成。

(注:电流和电压被标准化。若要了解绝对值,请参考实际标准。)

脉冲测试模拟了电感开关、继电器触点回跳等引起的日常开关瞬态。相比单测试脉冲的ESD测试,脉冲发生器会产生一个完整序列的测试脉冲(称作一个脉冲)。每个脉冲包括约15000个瞬态。一个完整测试序列的六个10s脉冲(相互之间的暂停间隔为10s)可在一分钟内产生数百万次脉冲。一次单脉冲持续时间很短(请参见图1b),因此能量较低,但这种对收发器完全无休止的瞬态轰击,会给其内部保护单元带来巨大的挑战。

浪涌测试是所有测试中最严格的测试,因为它模拟了雷电引起的开关瞬态。浪涌发生器产生的瞬态比ESD或脉冲瞬态长约1000倍。另外,发生器的低源阻抗允许高压下的高浪涌电流,从而代表高能量脉冲。由于其高能量成份,测试序列一般由五次正浪涌脉冲和五次负浪涌脉冲(一分钟或更短时间脉冲之间存在时间间隔)组成。

保护总线节点

选择低成本的CAT5工业RS-485线缆或平带(flat-band)线缆可以消除引入总线线路的主要瞬态能量。Belden 3107A(如图2)等线缆具有编织屏蔽作用,可以极大地降低耦合至信号导线中的噪声。更低的信号线噪声,意味着对下列保护电路的瞬态影响更小。

图2所示工业RS-485线缆是单双工及半双工数据链路的理想选择。它允许将一个信号对用作总线信号线,而另一个信号对用作接地线,从而降低瞬态电流返回通路的电感。其他一些好处还包括线缆的120Ω额定特性阻抗。这样便可保证阻抗匹配RS-485收发器开关特性和加蔽线的添加,从而允许线缆屏蔽的简单接地。请注意,应该仅在一个线缆末端接地,更好的选择是在最接近单接地参考总线接地基准的末端。

图3显示了一个具有瞬态电压抑制器二极管(TVS)保护的典型RS-485节点电路的简化示意图。最近的工艺技术进步,才实现了快速、低电容TVS二极管的制造。前几代TVS设计表现出来的数纳秒响应时间,对于ESD和脉冲瞬态的快速上升时间来说都太慢。另外,其电容负载超出了每TVS器件1000 nF,其在数据速率未降至极低水平的情况下,并不具备有效的多节点网络保护。

许多现代高精密抑制器设计都具有低至皮秒范围的响应时间,同时拥有约10 pF~100 pF的电容(具体取决于器件拓扑结构和额定功率),从而实现单总线节点保护。

在差动数据信号中,例如:RS-485等,一般要求三个瞬态抑制器来模拟有效的现实世界瞬态保护:两个TVS器件用于实现共模瞬态(出现在A线路及接地和B线路及接地之间)保护,第三个TVS用于抑制A线路和B线路之间的差动瞬态。

作为RS-485连接器的螺旋式接线柱,将传输线缆连接至收发器(XCVR)。三个瞬态电压抑制器二极管(TVS)用于消除A线路及接地和B线路及接地之间的共模瞬态,以及A和B之间的差动瞬态。

图4显示了双向瞬态电压抑制器的对称电压-电流(V-I)特性。在一些低至切断电压VWM的低电压下,瞬态抑制器带来了信号线的高阻抗,并且仅有数微安培的器件漏电流。这种状态下,数据链路必定能够正常运行。因此,选择TVS用于RS-485链路时,其切断电压必须高于最大总线电压,其中包括RS-485标准规定接地电位差(GPD)的±7V,其必然要求VWM≥12V。

在总线电位超出TVS击穿电压VBR的瞬态事件中,器件变为传导高电流到接地的低阻抗。但是,它的动态阻抗会引起器件的压降,其随上升电流成比例增加。这种电压常常表示为可以高达35V的钳位电压VC,其明显超出了收发器总线电位的最大额定值。

尽管高ESD额定值的收发器可以应对这种短期过应力,但一些较弱的组件会受益于浪涌额定电阻,其以串联方式切换至收发器总线终端(参见图3)。10Ω到20Ω典型取值的电阻器可降低钳位动作期间流向收发器的电流,从而最小化对其ESD单元的影响。

除这些危险的电压和电流电平以外,现实世界瞬态还带来大量的宽带噪声。例如,ESD脉冲的噪声有大约3 MHz~3 GHz的频谱。因此,除瞬态抑制外,我们还建议利用噪声滤波和高频布局方法来确保一个面对电磁干扰(EMI)时稳健的电路板设计。

这些建议将帮助您完成这种设计。在您的电路设计之初就要考虑的瞬态保护方案包括:

1)使用一个四层印刷电路板,其堆叠顺序为:总线信号层、接地层、电源层和控制信号层;

2)将接地层紧挨总线信号层放置,以建立阻抗跟踪控制,并为返回电流提供低电感通路;

3)将TVS二极管尽可能地靠近总线连接器放置,以防止瞬态渗入电路板电路;

4)将旁路电容器(10nF~100nF)尽可能地靠近电路板上的所有IC放置;

5)利用多个过孔(每个终端至少2个)将瞬态抑制器和旁路电容与接地层连接;

6)通过简单的R-C低通滤波器将EMI滤波器应用于收发器的单端侧。

请注意,因为高频电流沿最小电感通路传导,所以大多数上述建议都以转移通过低电感通路的高频噪声为目标。

结论

一些精密的瞬态抑制器二极管具备对RS-485网络中所有总线节点都进行高效保护的能力。尽管有效的瞬态保护会增加初始设计的成本,但其可以防止未来实地运行故障、网络停运以及可能出现的产品召回所带来的高昂费用。

参考文献

[1]RS-485接口产品应用手册[R/OL].www.ti.com/rs485-ca2

[2]接口选择指南[R/OL].www.ti.com/interface-ca

[3]低电容瞬态电压抑制器详情1[R/OL].www.protekdevices.com

[4]低电容瞬态电压抑制器详情2[R/OL].www.semtech.com

[5]低电容瞬态电压抑制器详情3[R/OL].www.vishay.com/

485总线 篇4

RS-485接口以其结构简单、通信速率高、传输距离远、成本低廉等优点在现场总线中得到广泛应用。传统的RS-485总线要求在同一时刻只能有一个节点进行数据发送, 为此多采用一主多从方式或分时复用方式。一主多从方式, 即网络中有一个主节点和若干个从节点, 由主节点轮询各个从节点以实现数据通信。分时复用方式, 即总线控制权分时交由各个节点使用, 各节点按照预先分配的时间段发起通信。遇到节点主动发送实时要求高, 节点数目不确定, 且各个节点通信负荷不均衡等通信系统时, 上述两种通信模式的总线利用率和实时性都相对较低。在模拟器材通信中, 经常会遇到各节点不定期、多批次主动发起通信的情况, 在应用RS-485网络时显得较为不便。为此, 需要研究一种基于RS-485总线的多主机通信方法, 并在模拟训练中得到应用, 以取得良好效果。

1 接口电路

RS-485 接口电路的主要功能是将来自微控制器 (MCU) 的发送信号TX通过“发送器”转换成通讯网络中的差分信号, 将通讯网络中的差分信号通过“接收器”转换成MCU接收的RX信号。任一时刻, RS-485收发器只能够工作在“接收”或“发送”两种模式之一, 因此, 必须为RS-485 接口电路增加一个收/发逻辑控制电路。另外, RS-485接口电路的附加保护措施也是必须考虑的环节。

如图1所示为我们设计的RS-485总线接口电路, 核心芯片为SP3485, 该芯片为+3.3V低功耗半双工收发器, 满足RS-485和RS-422串行协议的要求, 数据传输速率可高达10Mbps (带负载) , 与Sipex的SP481、SP483和SP485的管脚互相兼容, 同时兼容工业标准规范。SP3485发送器的输出是差分输出, 空载时输出电压的大小为0V~+3.3V, 即使在差分输出连接了5 4Ω负载的条件下, 发送器仍可保证输出电压大于1.5 V。发送器输出最大250m A ISC的限制使SP3485可以承受-7.0V~+12.0V共模范围内的任何短路情况, 保护I C不受损坏。SP3485接收器的输入是差分输入, 输入灵敏度可低至±200m V。接收器的输入电阻通常为15kΩ (最小为12kΩ) 。-7V~+12V的宽共模电压范围允许系统之间存在大的零电位偏差。SP3485接收器还具有故障自动保护 (fail-safe) 特性, 可在输入悬空时使输出保持在高电平状态。

控制该电路工作的MCU采用STM32F103VET6, 该芯片为100引脚LQFP封装, 采用Cortex-M3内核, 处理速度可达72MHz, 具有64K RAM和512K Flash, 支持CAN、I2C、 SPI、USART、USB等接口。其串行口通过RXD (即485_RX引脚) 连接SP3485芯片的RO引脚, 通过TXD (即485_TX引脚) 连接芯片的DI引脚。MCU输出的485_DIR信号控制芯片的发送器/接收器使能, 亦即控制通信方向。当485_DIR信号为“1”时, 发送器工作, 接收器失效, 此时MCU可向RS-485 总线发送数据;485_DIR信号为“0”时, 发送器失效, 接收器工作, 此时MCU可以接收来自RS-485 总线的数据。

为保证电路工作稳定可靠, 电路中B引脚连接上拉电阻R2, A引脚连接下拉电阻R3, 这样在上电或不传输数据时能保证RS485总线处于确定状态, 为总线提供网络失效保护, 以提高RS-485节点与网络的可靠性。

电阻R5为备用设计, 如果将SP3485 连接至80C51或STM32F103VET6等MCU芯片的UART串口, 则SP3485芯片的RO引脚不需要上拉 (R5为0Ω) ;否则, 需考虑将R5更换为约10K的上拉电阻。

考虑到485总线在组网时, 位于网络两端的节点需要增加120Ω终端电阻, 我们在485_B和485_A之间放置了终端电阻R4, 为便于使用者灵活调整节点在网络中的位置, 我们还为终端电阻设计了选择跳线JP1。

2 组网方式

RS-485总线组网方式如图2所示, 所有RS-485节点全部挂在一对RS-485总线上。注意RS-485总线不能够开叉、但是可以转弯。RS-485网络采用直线拓朴结构, 需要安装2个终端匹配电阻。终端匹配电阻安装在RS-485 传输网络的两个端点, 并联连接在A-B引脚之间, 其阻值要求等于传输电缆的特性阻抗 (一般取值为120Ω) 。终端匹配电阻主要作用是使总线的阻抗连续, 以减少信号的反射, 从而提高信号的传输质量。在矩距离 (300 米以下) 、低波特率 (19200bps) 数据传输时可不需终端匹配电阻。

3 多主机通信协议

稳定可靠的通信不仅依赖硬件环境, 对通信协议也有很高的要求。为了解决RS-485总线多主机通信的问题, 需要对RS-485通信协议进行研究。

3.1 帧结构

设定起始符为字符’$’。考虑到便于报文接收, 起始符应与设备地址不同。目的节点、源节点均为网内设备节点地址, 取值为1~32。帧长度是从起始符到结束符的字符长度, 取值为7~255。结束符为字符’@’。

帧校验 (FCS) 通常可采用奇偶校验、和校验、CRC校验等方法, 前两者处理相对简单, 节省运算时间, 但存在漏检的可能, 后者处理相对复杂, 需要一定的运算时间, 但可靠性优于前面两种方法。在具体应用时, 可根据需要自行选择。本文帧校验方法为从目的地址开始, 到数据的最后一个字节为止, 各字节依次异或, 最后得到的数值即为帧校验值, 如果接收方发现校验错误则应要求发送方重发。

值得注意的是, 对于起始符、结束符与数据帧内容重叠时的处理, 采用数据字节前插入0x FF的办法加以识别。例如, 要发送的数据为0X24, 与结束符重叠, 则在报文中应写为0x FF0x24。

3.2 通信过程

3.2.1 发送方工作流程

RS-485总线采用半双工工作方式, 全网在同一时刻只能有一个设备在发送报文 (扮演主机) , 此时其它设备处在接收状态 (扮演从机) 。基于对可靠性的考虑, 采取如图3所示通信流程。

具体解释如下:F_BUSY为总线忙标志, 取值为“1”时表示“总线忙”, N为发送报文后对方无应答时报文的重传次数, M为接收到的报文出现FCS错误时的重传次数。当系统初始化时, 每个节点的F_BUSY均为0, 即总线空闲, N、M均为0。

发送方的工作流程如下:

总线的申请和释放均由通信的发起方完成。

步骤一:申请总线。发送报文前先进行“忙”检测, 当F_BUSY为“0”时发送“申请总线”报文, 通知全网节点即将占用总线, 并开启计时器, 无关节点收到该报文后将F_BUSY置为1, 并禁止本地发送报文, 目的节点收到后发送“确认可用”报文。当F_BUSY为“1”或计时已到却未收到“确认可用”报文, 则随机延时后重新申请总线。

步骤二:发送报文。

步骤三:等待应答。发送报文后, 启动计时器, 等待对方的接收应答, 如在规定时间内未收到对方应答, 则进行报文重传, 并将重传次数N加1。如果重传已达三次, 则认为网络断开, 释放总线, 结束通信。

步骤四:出错重传。如果对方应答帧内容为“FCS错误”报文, 则进行报文重传, 并把M加1。如果重传已达三次, 则认为网络不稳定, 释放总线, 结束通信。

步骤五:释放总线。报文发送流程结束后, 该节点发出“释放总线”报文, 各节点将F_BUSY置为0, 总线恢复空闲状态。

发送方的处理中, 在申请总线阶段没有考虑消息碰撞问题, 这主要是基于网络节点数量有限, 碰撞几率较低的考虑。为增强报文的可靠性, 须进行帧校验处理。在等待应答阶段, 采取ARQ技术, 对出错报文进行请求重传。为避免程序陷入死循环, 针对对方无应答或报文帧校验错误的情况采用了有限次重传的机制。

3.2.2 接收方工作流程

处理一:报文过滤。通过报文头部, 判断收到的报文是否为其它节点发给本节点, 如果不是则不予处理。

步骤二:报文校验。对发给本节点的报文进行帧校验, 如果有错误, 则发“FCS错误”报文, 并将已收到报文丢弃, 如果校验正确则发“确认接收”报文。

步骤三:报文处理。对正确接收的报文进行分析处理。

4 程序设计

程序设计中主要对初始化程序、中断接收程序、报文发送程序、报文处理程序等程序分别进行设计。

4.1 初始化程序

初始化程序主要完成MCU和RS-485收发器管脚的初始化, 并开启串口接收中断。

4.2 中断接收程序

中断接收程序主要对符合数据帧格式的报文进行接收, 根据报文中的目的节点过滤掉发给其它节点的报文, 并对报文进行帧校验, 最后设置相应的标识位, 供接收数据处理程序使用。

为避免对方快速发送多组报文, 使接收方来不及处理而导致丢失报文, 我们采取双缓存的方式, 即设置两个接收缓存区, 轮流存储接收到的报文, 对缓存区的占用情况设置标志位。

4.3 报文发送程序

报文发送程序主要是将任意长度的报文发送到总线上。由于485总线通信始终在接收/发送之间切换, 为保证总线可靠工作, 状态切换时应做适当延时, 等总线状态稳定后, 再进行数据的收发。具体方法是在数据发送状态下, 先将485_DIR置“1”, 延时2ms, 再发送数据, 数据发送完成后, 延时2ms, 直接将485_DIR置“0”。这种处理可有效提高总线的稳定性, 增强数据传输的可靠性。延时时间的取值与波特率有关, 波特率越小, 延时应越大。

4.4 报文处理程序

为了保证中断接收程序始终能快速响应对方发来的数据, 我们把报文处理程序放在中断之外, 以免程序处理当前报文用时过长, 影响下一组报文的接收。在主程序中通过对接收标志位的判断来调用报文处理程序, 根据接收报文内容的不同给出相应的响应。

5 结语

本文中介绍了一种多主机通信的485总线通信实现方法, 该方法适用于工作环境相对恶劣、多主机随机通信需求较高的场合, 目前已应用到某模拟训练系统, 经两年多的使用, 系统运行稳定可靠。在具体实践中, 对于工作条件较好时, 为提高效率可对通信协议进行精简设计, 如缩短帧结构、简化通信过程等, 藉此可减少总线占用时间, 缩短节点响应时间, 达到更为理想的通信效果。

摘要:针对RS-485总线多个节点之间无法自由通信的问题, 介绍一种多主机通信方法, 以探讨总线接口电路和组网方式, 并通过设计通信协议和规划通信过程, 完成相关程序设计。此方法在某装备模拟项目中得到应用, 取得了预期的效果。

关键词:RS-485,多主机,接口电路,通信协议

参考文献

[1]陈铁军, 谢春萍.PC机与RS 485总线多机串行通信的软硬件设计[J].现代电子技术, 2007 (5) :103-105

[2]吴桂林郑建勇.RS485上下位机多机通信网络系统设计[J].微计算机信息, 2008, 24 (12-3) :112-113

[3]潘群, 向军, 王琳.RS-485串行通信接口电路的设计与应用[J].常州工学院学报, 2009, 22 (3) :38-42

[4]魏金文, 马维华, 吴侨.RS-485的多机通信方案探究[J].单片机与嵌入式系统应用, 2012, 10:76-78

[5]郝涛, 陆宣博.基于RS485主从串口通讯协议的设计[J].装备制造技术, 2013, 3:38-40

[6]胡文涛.一种基于协议的提高RS-485实时性的方法[J].现代电子技术, 2013, 36 (18) :10-12

485总线 篇5

许多工业控制场合, 控制对象比较分散, 需要通过网络连接来实现统一管理、分散控制的原则。目前国际上已经出现了多种现场总线和相应的通讯协议, 但他们通常造价高、功能复杂, 于一些中小型应用场合显得昂贵和功能冗余。而RS485总线以其构造简单, 造价低廉, 可选芯片多, 便于维护等特点在许多工业控制的系统中得到广泛的应用。

2、现有RS485总线的工作特点

RS485总线的物理介质是双绞线, 通信是工作在半双工的状态下[1], 即在同一时刻下, 总线上只能有一个结点成为主节点。如果同一时刻有两个以上的节点处于发送状态, 将导致所有发送方的数据发送失败, 就是所谓的总线冲突。为了避免总线冲突, RS485总线具有一些特殊之处:

1、工作模式:通常的, RS485总线工作在主从模式下。整个通信总线系统由一个主节点, 若干个从节点组成, 由主节点不断的轮询从节点。另外还有一种"轮主轮从"的工作方式。就是让总线的控制权在各个节点间以类似"令牌环"的方式进行传递[3]。

2、通讯节点:RS485总线上的节点必须具备将自己的驱动器切换到高阻态的功能[1], 以便在发送完毕后不会对总线状态造成影响。这一切换前需要一个转换延迟, 这个延迟不能太短, 否则发出的字符的最后一部分因为尚未在总线上建立起来而将导致丢失。同时这个也不能太长, 否则在发送端还未转为高阻态时其他设备已经开始发送数据, 会导致总线冲突。常用的设备的转换延迟是以当前波特率发送一个字节的时间。

可以看到, 以上这些为了适应RS485总线的特殊之处而采用的工作方式使得其实时能力打了折扣:

1、主从式总线的从节点无发起通讯的权利, 相互之间的通讯需要通过主节点进行中转。而"轮主轮从"的总线上的各个节点由于等待总线控制权的时间未知, 实时性也无法保证。

2、驱动器实行"发送态-高阻态"切换, 发送完毕后需要延迟若干时间。这段时间是纯延迟时间, 系统不能做任何事情。

另外, 对驱动器实行"发送态-高阻态"切换以及考虑切换延迟等等要求使得编程变得复杂。在上电瞬间、cpu损坏或者是程序跑飞的情况下, 还需要考虑复杂的故障保护等问题[2], 否则将容易引起总线故障。

3、提高RS485总线实时性的方法

为了解决各个节点主动获取总线控制权的问题, 人们想到了利用监听总线状态的方式来实现总线控制权的本地判断和获取, 也就是网络协议中所说的载波监听[3]。即所有节点在发送前监听总线上是否有其他节点在发送数据, 如果有, 就暂时不发送。另外在发送数据的同时, 边发送边监听, 如果监听到冲突则冲突双方都停止发送。这样做, 既能提高通讯实时性, 又能能提高整个系统的吞吐量。

已有的一种实现方法[4]是将总线接收器的输出端反相后接到cpu的外部中断管脚。用触发中断的方式来判断总线上是否有数据传输, 同时结合定时器中断来判断总线是否空闲。并且用监听自己发送的数据的办法来判断是否发生总线冲突。该方法解决了总线控制权分配的时延问题, 但是占用系统资源多, 编程复杂, 在一些场合的应用也有局限性。本文在以上方法的基础上提出了一种利用硬件监听总线状态的方法, 真正意义上的实现载波监听多点接入/冲突检测。同时减少了系统资源的占用率, 简化了总线冲突判断的方法。另外实现了驱动器的无延迟自动切换, 进一步提高了系统的实时性。该系统工作稳定、可靠, 并且大大提高了通信的实时性, 特别适合实时分布式控制的场合。

3.1 工作原理

每个485节点的总线接口由两部分组成: (如图1) 总线状态判断逻辑和驱动器自动切换逻辑。前者用来判断总线是否被占用, 后者用来实现驱动器发送后自动切换到高阻态。

工作时, 任何节点有发送需求时, 都可以通过总线状态判断逻辑判断总线状态而自行决定发送信息的时机。在网络技术上, 这被称为多点随机接入技术。相对的, 轮询和令牌环的形式称为受控多点接入技术。这两种接入技术的比较, 在网络理论里讨论的很详细[3]。概括的说来, 就是当网络的通信量较小的时候, 受控多点接入的实时性大打折扣。因为这个时候各节点基本没什么数据发送, 而轮询或者令牌环的信息仍然始终不停的在多点间传来传去。如果需要发送数据的节点此时能够自己判断总线上有否数据传输就能立刻发送数据而不用等待接收到这些信息。而工业控制场合的许多应用却正是通信量小的情况, 因此, 如果能够实现多点随机接入必然能够提高RS485总线的实时性。

而驱动器自动切换逻辑的实现在以上基础上进一步缩短了通讯延迟的时间。驱动器在数据发送后立刻切换为高阻态, 总线马上空闲, 可以立即进行下一次的数据传输。

系统资源占用方面, 只占用cpu的3个管脚:RXD, TXD, 总线状态指示脚, 不占用任何中断。而且在软件实现方面由于采用了硬件判断总线状态而变得非常的简单, 只需要对标准的232通讯程序做微小修改就可以了。

3.2 总线状态判断逻辑

该电路由双RS485总线接收器构成, 两个接收器的输出相与后得到总线状态信号。偏置电阻网络 (如图2) 的对称形式使得在总线没有被驱动的情况下, 两条总线的电平是相等的。但是由于接收器的两个接入点电平不同, 所以当总线处于高阻状态或者总线被短路时, 两个接收器都是高电平输出, 总线状态为高电平。因为A、B线通过6.8k电阻分别接入两个接收器的不同接收端, 所以当总线出现任何一个确定的逻辑状态时, 都将引起其中一个接收器的输出变为低电平, 这样总线状态就变为低电平, 表明总线被占用。经过理论计算和EWB仿真, 该网络从A、B点看入的接入阻抗为12.2k, 恰好满足485协议的接收器输入阻抗要求。

3.3 驱动器无延迟自动切换逻辑

为了实现驱动器的无延迟自动切换, TXD信号经过反相后接到驱动器使能, 而驱动器输入直接接到地 (如图3) 。这样处理使得驱动器只在数据为0的时候打开, 把数据0发出去。而当数据为1或者无数据时立刻关闭, 缩短了切换时间。但是这样做, 使得数据1无法被正常发送出去。为了使串行数据能被正确的接收到, 有两个办法来产生数据中的1。第一个办法, 使用总线判断电路中的正向接收器的输出端 (OUT+) 作为RXD信号, 该信号在总线空闲、开路和短路时输出逻辑1, 并且与RXD信号同相。第二个办法, 就是使用类似MAX3080这样的自带故障保护 (fail-safe) 功能的芯片做为接收器。MAX3080将接收器的触发门限电压从-200mv~+200mv调整为-200mv~-50mv, 也能够在总线空闲、开路和短路的时候输出逻辑1。如果总线上的每一个节点都使用这些方法, 那么所有节点都可以实现驱动器无延迟自动切换而不必担心数据中的1不能被正确接收。

3.4 软件方面的实现

发送数据方面, 只需要将标准串口函数putc () 封装成一个函数RS485PutString () 来发送数据就可以了。在RS485PutString () 函数中, 能够方便的实现各种总线状态判断策略, 甚至是CS-MA/CD协议, 实现载波监听, 边发送边监听。也可以在此函数的基础上进行诸如定义不同数据包的实时性级别、定义总线超时判断等等高级编程。

接收程序方面, 因为接收器是常开的, 所以仍然可以使用串行接收器的中断服务程序, 将接收到的数据放入缓冲区, 然后由命令解释程序处理接收到的命令, 本质上和RS232的串口通讯程序是完全一样的。只是如果接收器是常开的话, 在自己发送数据的时候, 要记得将串行接收器中断关闭, 发送完毕后再打开, 以避免运行不必要的中断服务程序。

另外, 还可以结合驱动器和总线状态判断逻辑对总线进行开路和短路的检测/报警。具体说来就是某一个节点使能总线驱动器, 然后判断总线状态, 如果仍然显示总线空闲, 说明总线短路了或者是总线到总线状态判断逻辑之间开路了。

3.5 存在的不足之处

该方法中的总线状态判断逻辑对逻辑0状态的要求比较高, 需要B线电平比A线高约1.1V才能得到低电平。如果采用总线判断电路中的正向接收器的输出端 (OUT+) 作为RXD信号, 就会因为对逻辑0的要求而不满足RS485的-200mv门限电平标准。若采用另一个具有故障保护功能的接收器并联的话, 固然能满足-200mv门限电平标准, 但是整个节点的输入阻抗将降低到6k。

以上不足之处都在于无法完全满足标准RS485总线标准, 但是在特定条件下是不会影响工作效果的。

4、结束语

实验表明, 这种实现了随机多主接入和驱动器无延迟自动切换的RS485总线工作稳定, 可靠性高, 大大提高了实时性。特别适合于强调实时性的分布式控制系统, 能够方便的实现点与点之间控制信息的实时交换。

摘要:工控领域的RS485总线, 因其简单高速、资源丰富、芯片价格低廉等特点而获得广泛应用。但是因为其通信方式多是半双工模式, 故一般的RS485总线采用主机轮询或者令牌传递的方法来分配总线控制权。这种工作方式在一些对实时性、可靠性要求高的场合有较大的局限性。文章提出了一种附加硬件设备, 配合软件实现了在RS485总线上的随机多点接入技术。满足了系统的稳定性和可靠性, 并且提高了系统的实时性。

关键词:RS485总线,半双工,总线冲突,随机多点接入

参考文献

[1].B&B Electronics Mfg.Co.Inc.RS-422 and RS-485 Application Note.[M]www.bb-elec.com:1997

[2].房惠龙, 杨静娟.提高485总线在售饭系统中的可靠性.[J]电子工程师, 2002, 28 (9) :21, 22, 27

[3].谢希仁.计算机网络 (第2版) .[M].北京:电子工业出版社, 1999

485总线 篇6

为了保证大型机械设备的正常运行和延长其使用寿命,需要配置润滑系统为各个润滑点定期提供润滑油或润滑脂。传统的集中润滑系统包括双线式润滑系统和递进式润滑系统。双线式润滑系统采用多个分配器以并联方式连接在主供油管路上,各润滑点的供油量可以通过调节分配器供油活塞的限位螺母实现,差压开关可以检测系统是否存在漏油故障,但是双线式润滑系统不能检测某个润滑点出现的堵塞故障。递进式润滑系统采用单线供油,供油动作按顺序进行,系统结构简单、维护量小,但一个润滑点出现故障将造成整个润滑系统瘫痪[1,2]。因此,传统的集中润滑系统不能保证每一个润滑点都能得到合理的润滑。采用分布式集中润滑系统可以有效地克服传统的集中润滑系统存在的问题。在分布式集中润滑系统中,上位机通过通信总线与各个供油终端组成分布式网络,供油终端根据主控制柜发出的指令完成润滑、现场参数检测等任务。

在钢铁、冶金、电力等企业,大型机械设备多,需要的供油终端数量多、分布位置跨度大、工作环境干扰严重,对润滑系统的通信节点数、传输距离和可靠性提出了较高的要求。RS485总线通信具有结构简单、价格低廉、通信距离和传输速率适当等特点,因而被广泛应用于工业控制及测量领域[3]。

本文将从通信协议制定、硬件设计、软件设计等方面讨论RS485总线在分布式集中润滑系统中的应用。

1 分布式集中润滑系统的总体结构

分布式集中润滑系统由监控主机、主控制柜、供油终端、润滑泵等组成,结构简单,易于扩展,可以真正实现逐点供油与逐点检测功能。该系统总体结构如图1所示。

监控主机采用工控机,运行组态控制软件,具有参数设置、润滑调度、实时监控、故障处理等功能。主控制柜采用PLC作为控制器, 全面协调系统各个部分的工作,具有运行控制、检修、工况查询等功能。主控制柜通过RS485总线与各个供油终端构成分布式网络。供油终端采用单片机作为控制核心,其结构如图2所示。

供油终端可以控制若干个继电器的通断,从而控制供油电磁阀的开闭或润滑泵的启停;根据主控制柜发出的润滑指令对所辖的润滑点进行润滑,同时还要检测流量、压力、温度等参数;设置有人机接口,用于设定润滑点的编号和显示润滑点的工作状况;所有供油终端下的润滑点采用统一编号,主控制柜可以不受限制地控制任何一个、一组、一段或者全部的润滑点(为了保存编号等设定的参数,系统要扩展EEPROM存储器)。供油终端承担了大部分的现场测控任务,减轻了主控制柜的这算负担,提高了系统的可靠性。2台电动高压润滑泵作为特殊润滑点接于供油终端上,其中一台备用。主控制柜通过供油终端获取油压信号,当油压正常时才能发送润滑指令。实际运行中,一个供油终端下的润滑点不会同时工作,因此,在供油终端的进油口装设一个流量传感器便可实现定量润滑功能。准确的流量信息为检测漏油、堵管故障提供了条件。

2 RS485总线接口的硬件设计

供油终端的RS485总线接口电路如图3所示。

图3中,接口芯片采用TI公司生产的SN65LBC184,该芯片内置高能量瞬变噪声保护装置,能够承受峰值为400 W的过压瞬变,可抵抗雷电冲击和高达8 kV的静电放电冲击;输入端开路时提供高电平输出失效保护;接收器输入电阻高,允许在总线上挂接128个类似器件[4];自然通风条件下的工作温度为-40~85 ℃,完全满足润滑系统要求。为了提高抗干扰能力,单片机控制口通过光耦与SN65LBC184相连。单片机I/O口P3.6输出高电平时选中DE端,允许发送,输出低电平时选中RE端,允许接收。由于51单片机复位时各I/O口输出高电平,这种反逻辑驱动使SN65LBC184在系统异常复位时始终处于接收状态,避免了各供油终端同时向总线发送数据而引起的总线冲突问题。供油终端控制电路中还配置了看门狗芯片MAX813L,当供油终端控制程序出现故障不能及时对MAX813L的WDI端口(6脚)进行“喂狗”操作时,单片机被硬件复位,SN65LBC184转入接收状态,交出总线控制权。单片机的RxD(P3.0)、TxD(P3.1)也通过光耦与SN65LBC184的RO、DI端相连。为了减少由于总线不匹配引起的反射,在传输线的末端应接一个匹配电阻(双绞线选择120 Ω),即在主控制柜中PLC的串口输出端并联接入120 Ω电阻。某一供油终端的接口芯片如被击穿短路,将造成其它供油终端无法通信,为此,在SN65LBC184的2个输出端各串联了1个20 Ω电阻。RS485标准规定接收器门限电压为±200 mV,当总线空闲时,AB端之间的电压在±200 mV 中间,接收器输出状态不确定,容易受干扰信号的影响。如果接收器的输出为0 V,网络中从机将其解释为通信的起始信号0,错误地接收一些数据。为此,在+5 V电源、A端、B端和电源地之间接入3个10 kΩ电阻, 当总线空闲时,A端电平为3.2 V左右,B端电平为1.6 V左右,在干扰信号的作用下很难产生串行通信的起始信号0,可增强总线的抗干扰能力[5,6]。

3 通信协议构建

(1) 通信方式

该分布式集中润滑系统以基于PLC的主控制柜为主站、各供油终端为从站,通信链路的建立与解除均由主站发出的信息帧控制,即采用主从结构的半双工通信方式。供油终端根据主控制柜的润滑指令可永久、定时或定量打开本终端内的任意润滑点,还可响应主控制柜的状态读取指令上传开关状态、压力、温度等信息。

(2) 传输时序要求

为了保证分布式集中润滑系统安全可靠运行,对通信的传输时序有特殊要求:每次通信均由主站发起,被请求的从站根据命令帧中控制码的要求做出响应;波特率采用9.6 kbit/s;字节之间的停顿时间应小于5 ms,主站发送的信息包间隔应大于400 ms, 如果主站发完信息后300 ms内从站没有响应,则认为本次通信失败;当没有工作指令时,主站应周期性地向从站发送“喂狗”指令,通信总线如果在1.5 s内没有出现通信指令,从站认为主站出现故障,将复位所有正在进行的控制任务。

(3) 信息格式与差错控制

信息包为传送信息的基本单元,其组成如表1所示,由预同步字和信息帧组成。约定主站发送信息包的预同步字为0x35,个数不限,从站发送信息包的预同步字为0x53,个数为3个。主站和从站发送的帧均为11 B的定长帧,依次为帧头(1 B)、控制字(1 B)、数据域(8 B)和检验码(1 B)。数据域的前4 B为润滑点的起始编号和结束编号,后4 B根据控制字不同而取不同的数值。校验码为帧头到数据域之间10 B的算术和,不计溢出值。

根据现场机械设备的润滑需求,制定了完备的润滑方案,主站与从站的控制字约定如表2所示(其中从站的前5个控制字(0x01~0x00)为回复主站读命令)。串口工作于方式3,字符帧由11位组成,包括1个起始位(0)、8个数据位、1个偶校验位和1个停止位(1)。

润滑点编号设定范围为0000~9999,每个从站的起始地址可以任意设置,但必须连续编号。数据域中的润滑点编号为16进制,如要对2001~2005号润滑点进行操作,数据域的前4 B应为0x07、0xD1、0x07、0xD5。一组润滑点的编号可以是跨终端的,为避免总线冲突,只有起始点所在从站负责对主站进行回复。主站对从站的请求指令(如检修开始、检修结束)不回复,从站对主站的通信喂狗指令不回复。从站检测到偶校验出错或累加校验和出错时,均放弃该帧信息并不予响应。主站未接收到应有的回复信息或接收到的信息出现错误,应重新发送指令。

4 通信程序设计

该分布式集中润滑系统的通信程序包括2个部分:PLC主站通信程序和供油终端通信程序,这里只讨论供油终端通信程序的设计。根据供油终端的运行特点,单片机串口采用中断方式接收数据,查询方式发送数据。为方便编程,建立数据接收缓冲区和数据发送缓冲区,各为10 B(不包含帧头)。供油终端通信程序主要的子程序包括串口接收中断服务程序、帧数据发送程序、单字节发送程序。

串口接收中断服务程序流程如图4所示。该程序中设有2个标志位:帧接收状态标志S_R (1表示已进入帧接收,0表示未开始帧接收),帧接收结束标志S_Over(1表示帧接收完未处理,0表示上一帧已处理完可接收新帧)。首先关串口中断,禁止串行口接收,清接收中断标志,接着通过S_Over标志判断上一帧数据是否已经处理完毕,如未处理完则不接收新的数据。如果前一数据为0x35,当前数据为0x95,则可判定数据帧开始,标志位S_R置1,只有当S_R为1时,才将接收的数据依次存入接收数据缓冲区, 10 B数据接收完毕后标志位S_Over置1,帧处理程序完成相应处理后对S_Over清零。在接收过程中,如果某一字节的偶校验出错, 则对S_R清零,相当于放弃该帧信息,重新开始接收。

帧数据发送流程如图5所示,首先生成校验和,然后发送3个预同步字节(0x53)和帧头(0x59), 最后调用单字节发送程序依次发出10 B数据。

单字节发送程序流程如图6所示,串口发送采用查询方式。系统启动后RS485端口默认处于接收状态,需要发送数据时,单片机I/O口P3.6置低

电平选中RE端, 允许RS485发送数据。一个字发送完毕后P3.6置高电平选中DE端,使RS485转入接收状态。

5 结语

基于RS485的分布式集中润滑系统能够满足“按需供油,相互独立,集中监控,易于扩展”的合理润滑要求,代表了集中润滑系统的发展方向,已成功应用于钢铁、冶金等行业,主控制柜与供油终端之间的通信稳定可靠。涉及的通信接口硬件设计、通信协议规划和通信程序设计对于开发类似分布式系统具有一定的参考价值。

摘要:提出了一种基于RS485总线的分布式集中润滑系统的设计方案,给出了分布式集中润滑系统的总体结构,详细介绍了供油终端的RS485总线接口电路、主控制柜与供油终端之间通信协议和通信程序的设计。实际应用表明,该系统能够满足按需供油,相互独立,集中监控,易于扩展的要求。

关键词:润滑系统,分布式,RS485,串口通信,通信协议

参考文献

[1]沈利亚.集中自动润滑系统介绍[J].地质装备,2006,7(2):19-21.

[2]毛胜辉.大型机械设备智能控制润滑的计算机系统研究[D].成都:西南交通大学,2007.

[3]朱志伟,周志光,鲍祖尚.RS-485总线通信系统的可靠性措施[J].单片机嵌入式系统应用,2006(3):68-70.

[4]武汉力源信息.SN65LBC184、SN75LBC184具有瞬变电压抑制功能的差分收发器[EB/OL].[2010-03-06].http://www.icbase.com.

[5]许燕萍,杨代华.RS485串行总线可靠性的研究[J].电子科技,2009(2):8-10,22.

485总线 篇7

加气站作为车用天然气应用的主要基础设施, 近年来得到快速发展, 加气机是售气、结算等操作的载体, 通过对加气机联网管理, 实现对加气操作、加气流水、设定参数修改等操作的全程实时监控以及对加气流水数据实时高效的管理, 能有效提高加气站的管理水平。加气站根据配置的不同, 一般有2~6台双枪加气机, 加气机属于全天候不断运行设备, 而且加气站环境较为恶劣, 因此对总线系统的实时性、可靠性、稳定性要求较高。结合工业现场的总线应用, 可采用以工业RS-485串行接口及其连接网络为总线, 通过对通用Modbus数据协议进行改进并编程可满足加气站的运行要求。RS-485总线在加气站的应用中, 要特别注意网络配置、电缆选择、接地和瞬态保护几个问题。

2、网络配置

一个加气站RS-485总线的网络配置是否合理, 直接影响到实际通讯效果, 特别是在一些加气机数量较多的大型加气站, 当加气枪数量达到10条以上甚至多达几十条加气枪时, 一个合理的通信网络配置显得更为重要。

2.1 节点数与通信速率

在加气站现场, 一条加气枪即为一个485网络节点, 485通信接口器件可选用标称值为128节点的工业级485芯片SN65LBC184, 也可选用标称值为32节点的集成隔离模块RSM485CHT。一般加气机与后台监控计算机之间距离都在1km以内, 从效率、节点数、距离等综合考虑选用9600b/s的通信速率为最佳, 距离1km以上时, 可考虑通过增加中继模块或降低速率的方法提高数据传输可靠性。

2.2 节点与主干距离

理论上讲, RS-485节点与主干之间距离 (T头, 也称引出线) 越短越好。T头小于10m的节点采用T型连接对网络匹配并无太大影响, 可放心使用。星型连接的方式在加气站是不推荐使用的, 把各条加气枪同监控计算机采用星型连接方式连接会严重影响485总线的可靠性, 一些加气站将485总线网络布为星型连接, 结果造成加气机通讯时有时无或者根本无法通讯, 后来重新布线为T型或串珠型网络, 问题便解决了。另外, RS-485是一种半双工结构总线, 加气站现场实际上是一对多点的系统, 即一个监控计算机 (主机) 对多条加气枪 (从机) , 因此监控计算机应置于一端, 不要置于中间而形成主干的T型分布。

3、电缆选择

RS-485总线应尽量采用屏蔽双绞线作为传输介质, 而RVVP等工业领域常用非双绞线电缆是不推荐用于485通信的, 一些加气站用RVVP电缆作传输介质, 结果通讯时有时无且极易受外界干扰, 485接口芯片也时常损坏, 主要原因就是电缆选择不当。也有加气站使用普通的超五类屏蔽双绞线即网线作485通信电缆的, 但主要有两个缺点, 一是线径太细, 会导致传输距离降低, 二是网络线为单股的铜线, 相比多芯线容易断裂, 所以在加气站也不推荐使用网线做485通信电缆。考虑到加气站干扰严重、鼠害频繁以及有防雷、防爆要求, 推荐使用铠装型RS-485双绞屏蔽电缆, 其传输线为多股铜丝绞在一起形成一根线, 即使某根小铜丝断掉, 也不会影响整个的使用。

4、接地和共模干扰

实际应用中, 一个典型的错误观点就是认为RS-485总线不需要信号地, 而只是简单地用一对双绞线将各个接口的A、B端连接起来。这种处理方法在某些情况下也可以工作, 但给系统埋下了隐患, 所以RS-485总线必须要接地, 严格地说, 485总线必须要单点可靠接地。在加气站现场, 接地点一般选择后台监控计算机所在的机房一端, 通过机房接地汇流排良好接地, 如果是普通双绞屏蔽型电缆, 将电缆屏蔽层在机房接地排处单端接地;若是铠装型双绞屏蔽电缆, 则建议铠装层两端均接地, 内层屏蔽在机房接地排处单端接地。良好的接地对RS-485总线抗共模干扰有重要意义。另外, 布线时将485总线电缆远离大功率压缩机、风机以及循环冷却水泵等设备及其电源线, 都能有效防止共模干扰, 一些加气站在大功率设备启停时加气机同监控计算机的通讯就自动断开, 原因就是485传输线和大功率设备靠得太近, 受到了过强的电磁干扰。

5、瞬态保护

加气站引起过压瞬变干扰的来源通常是感应雷击以及电源系统开关干扰等。特别是夏季雷雨天气, 感应雷在485传输线上产生的感应电压常通过485接口电路进入加气机控制电路板内部, 瞬间击坏所有加气机控制电路板, 导致加气站瘫痪。除雷击干扰外, 加气站大功率压缩机、风机以及循环冷却水泵的启停过程中都会产生幅度很高的瞬态干扰, 如果不加以适当防护就有可能会损坏485通信接口。对于这些瞬态干扰可以采用隔离或旁路的方法加以防护。

(1) 隔离保护方法。这种方案实际上将瞬态高压转移到隔离接口中的电隔离层上, 由于隔离层的高绝缘电阻, 不会产生损害性的浪涌电流, 起到保护接口的作用。加气机的控制电路板上采用RSM485CHT模块作为485接口器件, 隔离电压可达2500VDC。

(2) 旁路保护方法。这种方案是利用瞬态抑制元件 (如TED485S A, P6KE6.8CA等) 将危害性的瞬态能量旁路到大地, 但需要有一条良好的连接大地的通道, 实现起来比较困难, 保护能力有限。在一些加气站, 因接地通路不好, 接地电阻过大, 只用旁路法不能很好发挥作用, 必须将隔离和旁路二者结合起来灵活运用。

6、结语

RS-485标准定义了一个极为坚固和可靠的链路, 具有高噪声抑制、宽共模范围、长传输距离、冲突保护等特性, 但对于加气站现场可能存在的恶劣工况环境, 一个真正可靠的RS-485网络还有赖于合理的应用。合理的网络布局、传输线的正确选择、周全的保护措施等, 在设计之初就应该有一个总体规划。

参考文献

[1]顾海洲, 马双武.PCB电磁兼容技术-设计实践.北京:清华大学出版社, 2004.

[2]穆斌.RS-485总线网络应用中的安全与可靠性[J].光学精密工程, 2003 (11) 02.193-197.

上一篇:善有善报下一篇:城市地道