Hart通信在DPV1中的实现
扫描二维码
随时随地手机看文章
Hart通信在DPV1中的实现
PROFIBUS是一种用于工厂自动化车间级监控和现场设备层数据通讯与控制的现场总线技术。可实现现场设备层到车间级监控的分散式数字控制和现场通信,从而为实现工厂综合自动化和现场设备智能化提供了可行的解决方案。PROFIBUS-DP作为PROFIBUS的规范子集,主要面向工厂现场层应用,可完成包括可编程控制器、自动控制设备、传感器、执行器间的快速可靠的循环通信任务。
HART是由Rosemount公司开发的一个传输标准,是一种用于现场智能仪表和控制室设备之间的通信协议。其特点是在现有的模拟信号传输线上实现数字信号通信。它属于模拟系统向数字系统转变过程中的过渡性产品。
通过与HART基金会的合作,PI专门定义了一个HART规范,以用于将HART集成人PROFIBUS系统中,也可为控制器通过PROFIBUS-DP总线控制现场HART设备提供依据。本文描述了以此规范为依据并通过DPVl实现控制器对现场HART设备进行控制的方法。
1 系统的设计和实现
图1所示是本系统的总体实现方案。系统中的通信是由HART管理软件(Hart Client)首先发起,并通过通信请求给DP主站(DP Master),DP主站在收到此请求后,再将Hart Client发送的请求数据转换为DPVl报文格式,并通过DP总线将报文发送到DP从站(DP Slave),在此,DP从站同时又充当Hart主站(Hart Master Device HMD),其主要功能就是将DP Master发送的DP格式报文转换为Hart格式的报文并发送到Hart设备(Hart Device)。对于某些来自Hart Client的请求,HMD则不需要将请求发送给Hart设备,而是直接回复,如读取HMD有关参数数据,该类请求的实现过程如图2所示。
2 DPVl实现
DPVl在DPV0的基础上增加了新服务,对于1类主站,DPVl新增的服务主要有:
◇非周期读服务:MSACl_Read;
◇非周期写服务:MSACl_Write;
◇非周期报警:MSACl_Alarm、MSACl_Alarm_Ack、MSACl_Status。
而对于2类主站,其新增的服务主要有:
◇非周期读服务:MSAC2_Read;
◇非周期写服务:MSAC2_Write;
◇与从站建立通讯服务:MSAC2_IniTIate;
◇中指与从站的通讯:MSAC2_Abort;
◇数据传输:MSAC2_Data_Transport。
根据规范,在为Hart提供通讯中只用到了非周期读写两个服务,和利时公司已用软件实现了各个版本的DP主站功能,本文主要介绍在DPV0版本的DP主站程序中添加非周期读写服务来实现部分DPVl功能。图3所示是非周期状态转换在主站状态转换图中所处的位置。
2.1 从站参数集的扩展
根据DP协议,Sl_Flag被扩展后,便可提供更多的控制信息给DPVl主站。此字节与非周期读写有关的是第四位(DPVl_Supported)。如果此位设置为1,则从站支持DPVl功能,否则工作在DPV0功能下。其它位的详解请参考相关文献。在从站参数集中扩展的其它字节(如Max_Alarm_Len、Alarm_Mode等)都是与报警有关的,在此不予关注,可参考文献部分。
2.2 非周期读服务的实现
DPVl设备是由槽和索引寻址的。所谓槽,不一定就是一个实际的物理对象,槽可以是物理的或逻辑的数据块。槽的内部通常由索引来寻址,索引可以标识变量或代表完备数据块。与DPV0的报文格式不同,非周期读使用的服务节点号为51,在数据域DU中,除了有交换的数据外,前四个字节分别定义了功能号(FuncTIon_Num)、槽号(Slot)、索引号(Index)和用户数据长度(Data_Length)。其报文格式如图4所示。
非周期读服务的功能号通常为0x5E,当读取的数据正确返回时,Read.res的功能号的Bit7为0;而当读操作没有结果时,功能号的Bit7为1(FuncTIon_Num=0xDE),此时,其后的3个字节为出错的具体编码。如:
Error_Decode:
具体的错误编码请参考相关文献。
非周期读服务和周期性循环数据交换的读数据服务不同,非周期读服务一般要等待多个系统循环周期后,才能得到响应的数据。
2.3 非周期写服务的实现
非周期写服务的实现和非周期读类似,只是功能号不同,非周期写服务的功能号为:
FuncTIon Num=0x5F。
3 Hart通信的实现
通过DPVl实现Hart的通信时,首先要解决协议的转换问题,即如何将Hart协议报文通过DP主站传输到DP从站(即HMD)中,再将报文转换为Hart报文传送到现场Hart设备中。在应答中,也存在同样的问题。规范中定义了透明和压缩两种传输格式。
顾名思义,透明格式就是将Hart报文简单的嵌入到PROFIBUS报文中,当然,这种结构会有冗余的信息,本文就是采用这种格式实现传输。其格式如图5所示。
压缩格式一般会尽可能的精简嵌入到PROFIBUS报文的Hart报文,以便能够传输更大的数据长度,那些被省去的报文信息可由HMD经过分析填充到Hart报文中,比如Hart报文中的ADDRS就可以由PROFIBUS报文中的Slot_Num和Index组合得到。
另一个需要解决的问题是第一次和HMD如何实现。由于结构的不同,HMD又可分为简单HMD和模块化HMD。简单HMD中仅有一个HartMaster,在这个Hart Master中会有很多用索引标识的数据对象,其中有一个总目录(Direetory)的数据对象,其它数据对象的索引在这个数据对象中可查,而Directory的索引会在GSD文件中解析得到。其关键字格式如:Subsysy_Dir_Index(1)=Index_Number;因此,在交换Hart数据之前,Hart Client应先读取并解析Directory的信息。其流程图如图6所示。
4 结束语
PROFIBUS—DP在工业自动化中占有相当的份额,因此,选择DP作为Hart Client和Hart设备的通信方式非常有必要。为此,在国际市场中,DCS和PLC的制造商大部分都提供了DP接口。而本文的实现方法有助于DCS和PLC在Hart智能设备、Hart仪表现场的推广。