工业通信用网关设计及技术研究

时间:2011-08-23

 

    采用现场总线技术的工业测控系统具有结构简单、易于维护、开放性、分散性和可互操作性等优点。但因为现阶段多种现场总线协议的共存,导致其上述优点不能充分体现出来。针对目前工业测控领域多种现场总线共存的客观事实,探讨如何将两种或多种现场总线系统集成具有重要意义。

    1 网关系统解决方案设计

    现场总线用网关一般要担负两种或多种总线之间的协议数据转换的责任,属于系统连接的关键部分。因此系统大多采用图1所示的的结构来实现。

    应用本网关所组成的系统总体结构如图2所示。智能网关在系统中无缝连接PROFIBUS-DP(以下简称”DP”)现场总线系统与MODBUS总线系统,实现同一系统内两种总线设备的共存。

 

    2 网关结构设计

    现阶段的网关设计主要有协议芯片、硬核、软核三种解决方案:

    (1) 协议芯片解决方案:采用专门芯片来实现相关协议,这种方法开发周期短,实现起来相对简单,比较适合于快速开发,但成本稍高。

    (2) 硬核解决方案:主要是对ASIC如CPLD、FPGA等进行硬件编程来实现相关协议的IP核。此方案对开发人员的硬件及软件知识要求,协议稍复杂,实现难度就很大。但是网关性能可以与采用协议芯片实现方式相媲美。

    (3) 软核解决方案:用软件实现协议数据链路层协议处理功能,结合相应的外围硬件电路实现协议功能。此方法成本低,但需要开发人员充分了解相关协议及协议运作机制。对于复杂的协议,编程工作量巨大,且可靠性不易保证,受单片机处理速度影响,通常网关的性能不如其他两种方法。

    在一般工业控制用网关设计中,都有较短的开发周期及很高的可靠性要求。因此,对于复杂的协议如DP、CAN、FF总线等一般选用协议芯片实现;对于较简单的协议如MODBUS等一般用软核实现。本网关采用了DP协议芯片与MODBUS软核相结合的实现方式。

    按照功能划分,网关可以分为电源管理模块、中央管理模块、DP从站模块和RS485通信模块。

    本网关设计要求串行口速率能够达到921.6 kb/s。基于此要求,硬件平台选用PHILIPS公司的ARM7-TDMI核微处理器。

    电源管理模块负责整套系统的电源供给,系统的稳定运行与电源模块的稳定性能关系密切,此处设计的电源模块兼有热插拔和电压转换功能;DP从站模块的功能由协议芯片(VPC3+C)实现;中央管理模块除了实现对DP从站模块的配置和管理,还要完成MODBUS协议的实现以及两种协议数据交换协议栈的实现。

    3 网关系统的实现

    网关系统在软件设计方面与网关连接总线系统所采用的协议有较大差别,但一般协议在定义时为了实现灵活性好、易于实现和维护等优点都采用分层结构。网关软件设计时也可以采用分层结构,在应用层实现协议数据的相互转换。

    网关协议栈是连接MODBUS输入/输出模块与DP通信的桥梁。协议栈分为DP通信层、协议数据映射层和MODBUS通信层三层。网关协议栈分层结构及各层功能如图4所示。

    3.1 软件总体结构设计

    CPU通过驱动VPC3+C来实现对DP通信过程的控制,包括通信接口检查、正常和发生故障情况下的诊断数据的发送及数据交换等过程;通过MODBUS协议实现对下挂的输入/输出从站模块的查询操作;通过对模块应答帧进行分析来判断模块的状态以及模块的通道状态,根据模块状态信息填充DP的诊断域的数据,并以此为依据实现对网关通信状态的控制。

    3.2 PROFIBUS-DP总线驱动

    此网关DP通信部分采用协议芯片VPC3+C,其内部含有4 KB RAM,用户可根据需要对其进行设置;具有两种微处理器接口:数据/地址总线复用或单独操作。因为ARM核对外部RAM操作的速度较快,时序不能满足VPC3+C的操作时序,因此这里用ARM的GPIO口来模拟VPC3+C的操作时序。

    3.3 MODBUS协议的实现

    为提高信号传输的距离及抗干扰能力,此处MODBUS物理层采用标准RS485通信。为了保证MODBUS协议软核的健壮性,设计了其有限状态机[1]模型,如图6所示,并根据此有限状态机模型运用状态路由器进行软件实现。

    4 网关关键技术研究

    对于工业用网关应用来说,保证网关正常工作的首要条件是其所连接的系统数据映射关系的正确性,其次可靠性和故障处理能力是网关可长期稳定工作的重要影响因素,对网关实时性的要求则因系统的不同而各异。

    4.1 数据映射关系管理

    本网关对所有可能下挂的模块的输入输出数据格式进行分析,然后分别定义了各个模块对应的通信接口配置字,并在GSD文件以下例格式进行描述:

    Module="AI31xx——4 channels" 0xd3; 输入模块AI31xx占4个字长

    EndModule

    这样在对其进行硬件组态时,只需要将对应的模块放到对应的地址槽中即可。

    在网关协议栈中同样保留上述表用来查询下挂模块类型对应的控制字和硬件组态数据进行比较。并以硬件组态数据为标准填充数据映射表,单个模块数据映射表数据结构如下:

    typedef struct{

    unsigned char cfg_data;       /*记录模块的参数配置字*/

    MODULE_STATE this_state;         /*当前模块的状态*/

    unsigned char start_position;             /*记录模块数据在

    PROFIBUS-DP中交换数据中的起始地址*/

    unsigned char data_length;            /*记录模块数据在

    PROFIBUS-DP中交换数据中所占长度*/

    unsigned char data_direction;        /*记录模块数据在

    PROFIBUS-DP中是输入数据还是输出数据*/

    } IO_CONFIG_PRM。

    其中MODULE_STATE为枚举数据类型,代表MODBUS从站当前状态,数据结构如下:

    typedef enum module_state{

    TYPE_OK,

    NOT_EXIST,

    TYPE_DISAGREE

    }MODULE_STATE;

    4.2 保证实时性措施

    网关在对两种协议的数据进行映射的过程中采用了性内存拷贝技术和单缓冲区技术来尽快完成数据的处理且保证是数据,以此来保证网关通信的实时性能。

    性内存拷贝技术是指网关从协议芯片内部读取到DP的输出数据后,直接将此数据填充到MODBUS输出帧对应的位置;从MODBUS输入模块得到的数据直接填入到DP协议芯片的输入缓冲区的对应位置。用这种方式来减少内存拷贝过程中所耗费的时间。

    高效地使用指针可以大大提高网络协议栈性能。本网关在MODBUS协议实现过程的信息处理中就采用了函数指针实现指针路由功能,避免了因过多判断对系统性能的影响,这样做不仅提高了系统处理信息的能力,也使系统有很好的扩展性能。上述性内存拷贝技术也是通过指针来实现的。

    4.3 保证可靠性措施

    在硬件方面,除了保证网关性能所必须的参数外,还应在成本和可靠性方面做出一定的折中。本系统中为了提高系统的抗干扰能力,与外界通信的部分和系统在物理接口上都进行b 电气隔离,此处的3个通信接口都需要进行隔离。根据通信性能要求的不同,选择磁耦隔离+驱动芯片完成DP通信的隔离兼物理层电平转换功能;用双通道磁耦隔离芯片来完成另外两路串行口通信的隔离。这两款芯片都采用了的基于芯片尺寸的变压器隔离技术的磁耦,与传统的光耦比较,其转换速度、瞬态共模抑制能力、功耗、尺寸及成本等方面均有很明显的优势。为了满足工业现场即插即用的要求,设计了电源转换及保护电路来实现网关供电系统的稳定,保证系统的可靠运行,并支持带电作业。

    网关系统中如何保证多种总线通信的互不干扰是很重要的环节。此网关系统中MODBUS协议是由软件来实现的,考虑到需要定时器等保证通信的可靠性,为了防止两种协议通信的相互影响,对DP输出数据的读取采用查询的方式而非中断方式进行访问。这样在DP的数据到来后不会打断正在进行的MODBUS通信过程,尤其是在DP通信速率较高的情况下,这种设计的可靠性更加明显。如果采用中断的方式,当DP通信速率超过一定值后,其势必影响网关与MODBUS从站之间的通信,严重时会导致MODBUS帧传输的不完整性,从而导致网关对MODBUS模块通信状态的误判,进而影响系统的可靠性。

    4.4 模块故障信息的处理

    西门子的DP从站设备只要有一个模块出现错误,则模块从属的从站会退出正常的数据交换状态,这样导致此从站相连的其他正常模块也不能进行数据交换,进而对于整个设备的运行产生影响。这种处理方式认为所有的模块都属于关键模块,只要有一个出现问题其余都会“被迫下线”,但这种处理方式不太灵活。相比来看,本网关在处理故障的策略则更加灵活。本网关可以判断的故障诊断信息包括:模块类型错误、模块超时故障、模块不存在故障以及模拟量输入模块的通道断线标志。

    本网关在其对应的GSD文件中的用户自定义诊断数据部分定义了上述4种故障对应的代码。故障代码格式如下:

    Unit_Diag_Bit(x)=“插槽x中模块不存在”

    Unit_Diag_Bit(8+x)=“插槽x中模块类型错误”

    Unit_Diag_Bit(16+x)=“插槽x中模块超时”

    Unit_Diag_Bit(24+x+8×y)=“插槽x中模块通道y断线”

    在正常运行中,在标准的诊断信息后只需要使用3+x个字节即可描述x个模块的诊断信息。在系统运行过程中该诊断信息由中央管理模块管理,如果存在故障,则填入VPC3+C的用户诊断缓冲区,然后置位诊断状态位,这样主站会在检测到此诊断位的下一个访问周期发送请求从站诊断报文帧,待取回诊断帧后继续进行正常的数据交换请求。上述过程不断重复,直至网关下挂的模块故障消除为止。在此过程中不存在上述故障的模块则仍然映射成标准的DP从站模块,正常的数据更新不受影响。该网关采用这种方式来保证状态正常的模块不停止工作,提高系统的灵活性。

    5 网关性能测试

    本网关的性能和下挂模块以及DP总线波特率设定有直接的关系。经过测试和DP通信速率可以到达DP协议规定的速度12 Mb/s;与MODBUS每个模块完成通信的长时间为10.7 ms(波特率为115.2  kb/s时);一个扫描周期内故障判断等所用时间为400 ?滋s。用户在设计过程中可以根据实际系统需求进行具体分析和配置。

    本文对工业通信用网关的设计进行了阐述,以PROFIBUS-DP智能网关的设计为例对此类网关实现的关键技术进行了分析。针对本网关,硬件方面,采用电源管理模块实现网关的热插拔功能,采用专用芯片解析DP协议,采用磁耦隔离代替传统的光耦隔离,提高了系统的性能和可靠性。软件方面,采用单缓冲区设计、性内存拷贝技术以及合理的中断应用来保证系统的实时性和可靠性。对网关的数据映射处理和故障处理进行了详细的分析,并给出了其性能参数。本设计为其他工业通信用网关的设计提供了参考依据。


  
上一篇:DS300B分布式IO在污水处理中的应用
下一篇:简述在北京地铁5号线应用的多协议总线桥

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料