一种多协议总线之间的转换方法

文档序号:7924196阅读:509来源:国知局
专利名称:一种多协议总线之间的转换方法
技术领域
本文涉及一种多种工业通信网络协议之间的转换,提出了一种通用的多协议总线之间的 转换方法,属于现场总线控制技术领域。
背景技术
现场总线是用于生产制造现场的底层通信网络,它实现了微机化的现场测量控制仪器或 设备之间的双向串行多节点数字通信,具有实时性、稳定性高的特点。自从2000年国际电工 委员会(正C)公布通过了正C61158现场总线标准,现在己有十多种现场总线标准。
以太网是商业领域里普遍采用的局域网络,结合TCP/IP协议构成了 Internet的基础,成 为网络应用中事实上的标准,这也使得现场总线控制系统通过以太网与企业信息网集成实现 工厂监控一体化成为大势所趋。
当前现场总线、工业以太网技术在工业生产中得到广泛应用,然而由于流程工业的复杂 性,有线网络无法满足恶劣环境卜'的测控需求,而无线网络技术为此提供了良好的解决途径。 所以随着工业以太网的出现以及最新对于工业无线网络的发展,势必造成多种协议共存的局 面。所以研究多协议转换器已成这领域研究的热门方向。
费敏锐等人在2005年4月21日提交了"MODBUS/TCP工业以太网与设备网多协议转换 方法和装置"(中请号200510025262.4);上海电器科学研究所(集团)有限公司在2005年 提交了 "一种通信适配器"(申请号:200510030649.9);刘健等人在2007年提交了 "多协议 工业以太网适配器"(申请号200710171777.4)。在现有的申请专利中均是针对某几种特定 的协议进行多协议转换,还未有一个通用的转换模型。本发明提出了一个适合目前多数流行 协议的通用转换模型及协议转换方法。

发明内容
本发明的目的是在于提供一种多种协议总线之间的转换方法。本协议转换模型主要釆用 基于协议的从站模型,加上多任务操作系统,使该协议模型能适合多种协议。
为了实现上述目的,本发明的构思是
首先从协议转换模型出发,在大多数协议模型中往往是由主站来对整个系统进行组态和 管理。而对于一个通用的多协议转换适配器,主要是针对一个现有系统的改造或多个系统之 间的互联,它应在尽量在不破坏现有系统组态的基础上提供相应的协议转换。因此, 一个通 用协议的转换模型应采用一个从站之间协议转换模型。
其次,需要把各协议的数据报文统一地接入协议转换模型。该模型是基于单处理器的,
通过外扩协议的物理层接口,或者外扩协议芯片与物理层接口,实现各协议的从站节点。由 于协议的建立与操作都需要在该单处理器中完成,所以该芯片应采用卨端类型的微处理器。
最后,为了能使各协议能同时并行工作,该协议模型还需引入多任务实时操作系统。操 作系统为每种协议各分配一个实时任务,承担协议数据报文收发的控制调度,而多个协议间 如何协调硬件资源则由操作系统的调度机制负责完成。由于该协议转换模型是建立在从站模 型上的,每个从站站点的周期报文有相应的轮询周期,各个协议的任务周期应配合相应的协 议的轮询周期。对于紧急报文的处理,采用软件中断机制,在操作系统中,中断的级别比任 务的级别高,任务可以被中断打断,但是中断不可以被任务打断,从而可以确保对紧急报文 的处理。而由于紧急报文是非周期数据报文,故软件中断的引入也不会影响任务处理协议转 换中周期数据报文的性能。
由于多任务操作系统的引入,单处理器可以看作是多个微处理器在并行运行。而每个任 务创建时,操作系统都将为其分配一定的资源空间,而这些资源空间是相互独立的,互不影 响。当然,系统资源中还有一部分是共享资源,操作系统可以通过信号量对这些共享资源进 行保护,使其能够被合理地利用。正是因为操作系统的这些特性,结合工业通讯协议的特点, 提出了一种多协议的转换方法。以下是对于这种方法的洋细介绍
首先,由于该协议转换模型是基于从站之间的转换模型,所需要转换的数据量比较少, 对于实时性的要求高,所以该协议转换的数据结构模型采用了软件分布式存储系统中的"无 主站结构"。对于本协议转换模型中,该结构实质就是为每种协议分配一张私有数据变量表, 并且建立一张全局目录管理列表,通过该列表对各协议的私有数据变量表进行统一对应管理。
对于私有数据变量表,操作系统为其分配了 256KB的数据空间,并为其指定该数据空间 的起始地址。根据协议报文类型的不同,可以分为周期性数据报文与非周期数据报文;根据 不同的数据报文,把私有数据变量表也相应分为两块。不同数据报文所采取转换方式(在软 件式分布存储系统中称为一致性协议)不同,对于周期性数据报文采取"读更新"方法,是 指数据报文更新发生在读时刻。当该协议转换模型数据被改写时,数据并不更新其它协议私 有数据变量表数据,只有当读操作时才发生更新。而对于非周期数据报文采取"写更新"方 法,是指数据更新发生在写时刻,当该协议转换模型数据被改写时,数据立即更新其它协议 私有数据变量表数据。
每次协议交换数据量的大小称为一致性粒度。粒度越粗,所需建立的目录列表越小,每 次数据交换的数据量越大。这样就会造成一种情况,即使当转换时协议报文所要更新的数据 量较小时,也会造成数据的大量更新操作。但粒度越细,所需建立的目录列表越大,每次数 据交换的数据量越小,而且当某个报文涉及到多个点的数据时,报文的更新操作就比较频繁。 鉴于该模型是建立在工业通讯协议之上的,其数据量比较少,该空间表的数据中以八个字节 为一页,并在全局目录管理列表与其对应。
根据上述发明构思,本发明采用下述技术方案
一种多协议总线之间的转换方法,其基本特征在于通过微处理器、DeviceNet、 Prafibus 及Modbus/TCP网络协议的物理层部分电路以及微处理器程序,实现接收各协议数据,并储 存在微处理器内,采用系统协议转换方法实现多协议之间的协议转换。而整个协议转换程序 采用了实时多任务操作系统的任务调度方法,实现多协议转换数据的实时交互与更新控制; 具体实施步骤如下
1) 微处理器①初始化;
2) 操作系统初始化;
3) 读入系统配置参数;
4) 分别初始化DeviceNet、 ProfiBus及Modbus/TCP网络,并分别为三种网络分配一张 私有数据变量表;
5) 为私有数据变量表与全局目录管理列表之间建立对应关系;
6) 为每种网络各建立一个实时任务,实现相关协议,并收发相关协议数据,并进行多种 协议之间的协议转换。
如上述的多协议总线之间的转换方法中的实时任务对于周期数据报文的多种协议之间的 协议转换的具体方法为
(1) 收到周期性数据报文时,判断是读数据操作还是写数据操作,如果是读操作继续 执行;如果是写操作,转到步骤(4)执行;
(2) 根据读数据报文的首地址和数据长度确定该数据在该私有数据变量表中的页号, 取得全局目录管理列表中结构体数组所对应结构体的位置。
(3) 判断该协议页节点的状态
A. 若为可读写状态,直接从该私有数据变量表中读取数据,转至步骤(6)执行;
B. 若为锁定状态,读取该页节点所对应结构体中的CurrentAddr;读取该页的最新副 本,此副本实际对应了另一协议的私有数据变量表,转至步骤(6)执行;
C. 若为无转换状态,直接从该私有数据变量表读取数据,转至步骤(6)执行;
(4) 根据写数据报文的首地址和数据长度确定该数据在该私有数据变量表中的页号, 取得全局目录管理列表中结构体数组所对应结构体的位置。
(5) 判断该协议页节点的状态
A. 若为无转换状态,直接将数据写入该私有数据变量表,转至步骤(6)执行;
B. 若为可读写状态或锁定状态,直接将数据写入该私有数据变量表,并判断该页所 对应结构体其他页节点的状态
a) 若为无转换状态,不进行任何操作,转至步骤(6)执行;
b) 若为其他状态,把该页节点的状态设为锁定状态,把结构体中的CurrentAddr 设置为当前页节点的首地址,转至步骤(6)执行;
(6) 程序结束,返回。
如上述的多协议总线之间的转换方法中的实时任务对于非周期数据报文的多种协议之间 的协议转换的具体方法为
(1) 收到非周期性数据报文时,判断是读数据操作还是写数据操作,如果是读操作继
续执行;如果是写操作,转到步骤(4)执行;
(2) 根据读数据报文的首地址和数据长度确定该数据在该私有数据变量表中的页号, 取得全局目录管理列表中结构体数组所对应结构体的位置;
(3) 直接从该私有数据变量表中读取数据,转至步骤(6)执行;
(4) 根据写数据报文的首地址和数据长度确定该数据在该私有数据变量表中的页号, 取得全局目录管理列表中结构体数组所对应结构体的位置;
(5) 判断该协议页节点的状态
A. 若为无转换状态,直接将数据写入该私有数据变量表,转至步骤(6)执行;
B. 若为其它状态,直接将数据写入该私有数据变量表和该页所对应结构体其他页节 点的私有数据变量表,并判断该页所对应结构体其他页节点的状态
a) 若为无转换状态,不进行任何操作,转至步骤(6)执行;
b) 若为其他状态,将该页节点私有数据变量表数据写入其他页节点的私有数据
变量表,转至步骤(6)执行;
(6) 程序结束,返回。
本发明与现有的技术相比,具有以下的突出特点和显著进步
1. 本发明提出了一个适合多数流行协议的通用转换模型,该协议转换模型是基于从站之间的 转换模型,可以不破坏现有的系统组态。
2. 将操作系统引入到系统中,使多个任务能在单微处理器中并行运行,提高协议转换效率。
3.系统采用了 "软件式分布存储系统"概念,为每种协议分配了一张私有数据变量表,并建 立一张全局目录管理列表,通过该列表对各协议的私有数据变量表进行统一对应管理,保证 协议转换的无缝连接。


图1是本发明实施例的硬件实例框图。 图2是本发明实施例的主程序流程图。
图3是本发明实施例的私有数据变量表与目录管理列表对应示意图。 图4是本发明实施例的周期数据报文的协议转换程序流程图。 图5是本发明实施例的非周期数据报文的协议转换程序流程图。
具体实施例方式
本发明的一个优选实施例结合

如下参见图1,本多协议总线之间的转换方法
的硬件基础包括微处理器①、外扩存储器②和③、CAN控制器⑥、CAN接口电路⑨、以太 网物理接口芯片④,以太网接U电路⑦、ProfiBus协议芯片⑤和485接口电路⑧等。
核心芯片选用ATMEL公司的AT91SAM9261①,该芯片工作最高频率为200Mbps,集成 SDRAM控制器②和FLASH控制器③,通过外部总线⑩外扩了 16MB FLASH禾n 32MB SDRAM。通过外部总线⑩连接CAN控制器SJA100 ,再加上相应的CAN接口电路⑨从而 实现CAN的物理接口,编写DeviceNet从站程序,从而实现DeviceNet从站的功能;通过外 部总线⑩连接以太网物理接口芯片DM9000A④,再加上相应的网络的接口电路⑦从而建立了 10/100M网络接口,编写Modbus/TCP从站程序,从而实现Modbus / TCP从站功能;通过 外部总线⑩连接SPC3协议芯片 ,再加上相应的485的接口电路⑧从而实现ProfiBus从站 站点。SPC3为ProfiBus协议芯片,具体的协议状态机由该芯片实现,微处理器重的软件只负 责初始化与收发控制。
参见图2,本多协议总线之间的转换方法,通过微处理器、DeviceNet、 Profibus及 Modbus/TCP网络协议的物理层部分电路以及微处理器程序,实现接收各协议数据,并储存在 微处理器内,釆用系统协议转换方法实现多协议之间的协议转换。而整个协议转换程序采用 了实时多任务操作系统的任务调度方法,实现多协议转换数据的实时交互与更新控制;具体 实施步骤如下
1) 微处理器①初始化;
2) 操作系统初始化;
3) 读入系统配置参数;
4) 分别初始化DeviceNet、 ProfiBus及Modbus/TCP网络,并分别在协议转换模型为三 种网络分配一张私有数据变量表;
5) 为私有数据变量表与全局目录管理列表之间建立对应关系;
6) 为每种网络各建立一个实时任务,实现相关协议,并收发相关协议数据,并进行多种 协议之间的协议转换。
参见图3,协议转换模型的私有数据变量表与该S录管理列表对应。首先,为每种协议 开辟一个私有数据变量表,大小为256KB。前192 KB分配给周期性报文数据,而后64KB 分配给非周性报文数据。该私有数据变量表的地址的表示方式为基址地址加上偏移地址。基 址地址对于每种协议各不相同,且选取的基址地址之间偏移必须大于256KB,偏移地址线性 增加。在本实例中我们取三者的基址地址分别为0x21000000、 0x21000256和0x21000512。 其次,以8个字节数据为一页,页号与当前地址的关系为偏移地址除以8的商。接着,建立 一个结构体数组Struct ContentList [SIZE] (SIZE为32,实际上与页号——对应),其中该结 构体为
Struct ContentList
Struct ContentDataContentDatal; Struct ContentDataContentData2; Struct ContentDataContentData3; Uintl6 CurrentAddr; } ContentList
其中CurrentAddr为该协议转换页所拥有的最新副本的页起始地址。而Struct ContentData 为一页结点
Struct ContentData
Uint 16CurrentAddr; Uint8 currentStatus; } ContentData
CurrentData由当前的协议私有数据变量表的内存地址与当前状态构成。而CurrentAddr 为当前所需转换私有数据变量表的某页的起始地址,currentStatus为当前页的状态,有如下三
种状态
0x00: 可读写状态 0x01: 锁定状态 0x02: 无转换状态
根据不同的数据报文,所采用的转换的方式不同。参见图4,在协议转换中对于周期数 据报文而言当读取数据时,首先从该数据的首地址和数据长度确定该数据在该私有数据变 量表中的页号。而页号恰好等于该页在全局目录管理列表中结构体数组所对应结构体的位置。 判断该协议页节点的状态如为可读写状态,直接从该私有数据变量表读取数据;如为锁定
状态,读取该页节点所对应结构体的CurrentAddr,读取该页最新的副本,该副本实际对应了 另一协议的私有数据变量表。如无转换状态,直接读取该私有数据变量表读取数据。
当写入数据时,首先也从该数据的首地址和数据长度确定该数据在该私有数据变量表中 的页号,取得全局目录管理列表中结构体数组所对应结构体的位置。判断该协议页节点的状 态。如为无转换状态,直接写入该私有数据变量表。如为可读写状态或锁定状态,直接写入 该私有数据变量表,并且判断该页所对应结构体其他页节点的状态,如为无转换状态,对于 不进行任何操作;如为其他状态把该页节点的状态设为锁定状态,最后再把结构体中的 CurrentAddr,设置为当前页节点的首地址。协议转换具体方法为
1. 收到周期性数据报文时,判断是读数据操作还是写数据操作,如果是读操作继续执行;如 果是写操作,转到步骤(4)执行;
2. 根据读数据报文的首地址和数据长度确定该数据在该私有数据变量表中的页号,取得全局 目录管理列表中结构体数组所对应结构体的位置。
3. 判断该协议页节点的状态
A. 若为可读写状态,直接从该私有数据变量表中读取数据,转至歩骤(6)执行;
B. 若为锁定状态,读取该页节点所对应结构体中的CuirentAddr;读取该页的最新副 本,此副本实际对应了另一协议的私有数据变量表,转至步骤(6)执行;
C. 若为无转换状态,直接从该私有数据变量表读取数据,转至步骤(6)执行;
4. 根据写数据报文的首地址和数据长度确定该数据在该私有数据变量表中的页号,取得全局 目录管理列表中结构体数组所对应结构体的位置。
5. 判断该协议页节点的状态
A. 若为无转换状态,直接将数据写入该私有数据变量表,转至步骤(6)执行;
B. 若为可读写状态或锁定状态,直接将数据写入该私有数据变量表,并判断该页所
对应结构体其他页节点的状态
a) 若为无转换状态,不进行任何操作,转至步骤(6)执行;
b) 若为其他状态,把该页节点的状态设为锁定状态,把结构体中的CurrentAddr 设置为当前页节点的首地址,转至步骤(6)执行;
6.程序结束,返回。
参见图5,在协议转换中对于非周期数据报文而言
当读取数据时,首先从该数据的首地址和数据长度确定该数据在该私有数据变量表中的 页号,取得全局目录管理列表中结构体数组所对应结构体的位置。直接从该私有数据变量表 读取数据。
当写入数据时,首先从该数据的首地址和数据长度确定该数据在该私有数据变量表中的 页号,取得全局目录管理列表中结构体数组所对应结构体的位置。须判断该协议页节点的状 态。如为无转换状态,直接写入该私有数据变量表。如为其它状态,直接写入该私有数据变
量表和该页所对应结构体其他页节点的私有数据变量表。协议转换具体方法为
(1) 收到非周期性数据报文时,判断是读数据操作还是写数据操作,如果是读操作继
续执行;如果是写操作,转到步骤(4)执行;
(2) 根据读数据报文的首地址和数据长度确定该数据在该私有数据变量表中的页号, 取得全局目录管理列表中结构体数组所对应结构体的位置;
(3) 直接从该私有数据变量表中读取数据,转至步骤(6)执行;
(4) 根据写数据报文的首地址和数据长度确定该数据在该私有数据变量表中的页号, 取得全局目录管理列表中结构体数组所对应结构体的位置;
(5) 判断该协议页节点的状态
A. 若为无转换状态,直接将数据写入该私有数据变量表,转至步骤(6)执行;
B. 若为其它状态,直接将数据写入该私有数据变量表和该页所对应结构休其他页节 点的私有数据变量表,并判断该页所对应结构体其他页节点的状态
a) 若为无转换状态,不进行任何操作,转至步骤(6)执行;
b) 若为其他状态,将该页节点私有数据变量表数据写入其他页节点的私有数据
变量表,转至步骤(6)执行;
程序结束,返回。
权利要求
1. 一种多协议总线之间的转换方法,其特征在于通过微处理器、DcviceNet、Profibus及Modbus/TCP网络协议的物理层部分电路以及微处理器程序,实现接收各协议数据、并储存在微处理器内,采用系统协议转换方法实现多协议之间的协议转换;而整个协议转换程序采用实时多任务操作系统的任务调度方法,实现多协议转换数据的实时交互与更新控制;具体实施步骤如下1)微处理器①初始化;2)操作系统初始化;3)读入系统配置参数;4)分别初始化DeviceNet、ProfiBus及Modbus/TCP网络,并分别在协议转换模型为三种网络分配一张私有数据变量表;5)为私有数据变量表与全局目录管理列表之间建立对应关系;6)为每种网络各建立一个实时任务,实现相关协议,并收发相关协议数据,并根据周期保文与非周期保文分别进行多种协议之间的协议转换。
2. 如权利要求1所述的多协议总线之间的转换方法,其特征在于所述歩骤6)中的实时任 务对于周期数据报文的多种协议之间的协议转换的具体方法为(1) 收到周期性数据报文时,判断是读数据操作还是写数据操作,如果是读操作继续 执行;如果是写操作,转到步骤(4)执行;(2) 根据读数据报文的首地址和数据长度确定该数据在该私有数据变量表中的页号, 取得全局目录管理列表中结构体数组所对应结构体的位置。(3) 判断该协议页节点的状态A. 若为可读写状态,直接从该私有数据变量表中读取数据,转至步骤(6)执行;B. 若为锁定状态,读取该页节点所对应结构体中的CurrentAddr;读取该页的最新副 本,此副本实际对应了另一协议的私有数据变量表,转至步骤(6)执行;C. 若为无转换状态,直接从该私有数据变量表读取数据,转至步骤(6)执行;(4) 根据写数据报文的首地址和数据长度确定该数据在该私有数据变量表中的页号, 取得全局目录管理列表中结构体数组所对应结构体的位置。(5) 判断该协议页节点的状态A. 若为无转换状态,直接将数据写入该私有数据变量表,转至步骤(6)执行;B. 若为可读写状态或锁定状态,直接将数据写入该私有数据变量表,并判断该页所对应结构体其他页节点的状态 a) 若为无转换状态,不进行任何操作,转至步骤(6)执行;b) 若为其他状态,把该页节点的状态设为锁定状态,把结构体中的CurrentAddr 设置为当前页节点的首地址,转至步骤(6)执行;(6)程序结束,返回。
3. 如权利要求1所述的多协议总线之间的转换方法,其特征在于所述步骤6)屮的实时任 务对于非周期数据报文的多种协议之间的协议转换的具体方法为(1) 收到非周期性数据报文时,判断是读数据操作还是写数据操作,如果是读操作继 续执行;如果是写操作,转到步骤(4)执行;(2) 根据读数据报文的首地址和数据长度确定该数据在该私有数据变量表中的页号, 取得全局目录管理列表中结构体数组所对应结构体的位置;(3) 直接从该私有数据变量表中读取数据,转至步骤(6)执行;(4) 根据写数据报文的首地址和数据长度确定该数据在该私有数据变量表中的页号, 取得全局目录管理列表中结构体数组所对应结构体的位置;(5) 判断该协议页节点的状态-A. 若为无转换状态,直接将数据写入该私有数据变量表,转至步骤(6)执行;B. 若为其它状态,直接将数据写入该私有数据变量表和该页所对应结构体其他页节点的私有数据变量表,并判断该页所对应结构体其他页节点的状态a) 若为无转换状态,不进行任何操作,转至步骤(6)执行b) 若为其他状态,将该页节点私有数据变量表数据写入其他页节点的私有数据 变量表,转至步骤(6)执行;(6) 程序结束,返回。
4. 如权利要求1所述的多协议总线之间的转换方法,其特征在于为各协议建立一张私有 数据变量表,大小为256KB;前192KB分配给周期性报文数据,后64KB分配给非周期 性报文数据;该私有数据变量表的地址的表示方式为基址地址加上偏移地址,基址地址 对于每种协议各不相同,且选取的基址地址之间偏移必须大于256KB,偏移地址线性增 加。
5. 如权利要求1所述的多协议总线之间的转换方法,其特征在于建立一张全局目录管理 列表,通过该列表对各协议的私有数据变量表进行统一对应管理;从数据的首地址和数 据长度确定该数据在该私有数据变量表中的页号,而页号等于该页在全局目录管理列表 中结构体数组所对应结构体的位置。
全文摘要
本发明涉及一种多协议总线之间的转换方法。本方法通过微处理器、DeviceNet、Profibus及Modbus/TCP网络协议的物理层部分电路及微处理器程序,实现接收各协议数据、并储存在微处理器内,采用系统协议转换方法实现多协议之间的协议转换,而整个协议转换程序采用实时多任务操作系统的任务调度方法,实现多协议转换数据的实时交互与更新控制。
文档编号H04L12/40GK101388889SQ20081020157
公开日2009年3月18日 申请日期2008年10月23日 优先权日2008年10月23日
发明者王佳承, 王海宽, 王秉臣, 费敏锐, 来 魏 申请人:上海大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1