具体实施方式
以下提供实施例并结合附图对本发明做进一步详细的说明。
如图1所示,本实施例的可动态配置的信息交换装置,包括数字信号处理器、CAN总线接口和CANopen总线接口,设有RS232通信接口,所述数字信号处理器还外挂有存储器,所述信息交换装置软件包括驱动程序模块、操作系统模块和应用程序模块,所述存储器接用于存储参数配置文件;所述应用程序模块用于完成所述信息交换装置的各种应用功能;所述存储器中可通过所述RS232通信接口与远程的配置装置连接以修改其中的参数配置文件。所述参数配置文件的内容包括硬件参数、CAN协议参数、CANopen协议参数和数据映射关系参数;所述应用程序模块包括CAN模块、CANopen模块、文件系统、SCI通信模块和参数转换模块,所述CAN模块,主要用来处理CAN应用层协议;所述CANopen模块是用来处理CANopen协议;所述文件系统使用来管理和存储文件;所述SCI通信模块是用来处理IEC60870-101协议的,通过101协议来上传或者下载配置文件,所述参数配置模块是用来处理解析配置文件及参数映射功能。
数字信号处理器采用TI公司的DSP(Digital Signal Processing,数字信号处理器)芯片TMS320F28335,操作系统采用TI公司的bios操作系统,应用程序采用一种可配置的数据映射方案,能够将标准CAN2.0B协议转换为标准的CANopen协议。驱动程序模块实现了bios操作系统下DSP外设的驱动程序,信息交换装置的属性可通过配置装置进行动态的配置,配置装置通过生成的配置文件可对信息交换装置的硬件参数、CANopen协议参数、CAN协议参数及数据映射关系进行修改配置。所述配置装置可以是按照有相应配置软件的计算机系统。
在前期,要尽可能的搜集整理用户的需求,通过配置装置按照用户的需求生成需要的配置文件。例如某用户在硬件设置方面需求为:
用户SCI的数据校验位为:无奇偶校验;数据长度为:8;停止位为:1;波特率为115200;CAN的通信波特率为:115200bps;CAN的波特率为:9600bps。
DutyCycle=0.5
HeartPeriod(ms)=200
CheckBit=NO_PARITY
DataLen=8
StopBit=1
BandRate=115200
CanOpenBaund(bps)=115200
CanBaund(bps)=9600bps
CAN端与CANopen端数据映射需求为:
将CAN端数据ID为205的变量的第12位、13位、8位作位与运算后映射到CANopen端数据索引为8193,子索引为0的变量的第0位;将CAN端数据ID为202的变量第7位,ID为205变量的第9位,ID为207变量的第7位做位或后映射到CANopen端的索引为8194,字索引为3的变量的第15位;将CANopen端的索引为8192,字索引为0的变量的第6位,索引为8194,字索引为0的变量的第7位,索引为8195,字索引为3的变量的第2位作位或后映射到CAN端数据ID为202的变量的第9位;将CAN端数据ID为205的变量第6位取反后映射到CANopen端的索引为8196,字索引为1的变量的第0位;将CAN端数据ID为207的变量第7位直接映射到CANopen端的索引为8195,字索引为3的变量的第8位;将CAN端数据ID为71的变量乘以100接映射到CANopen端的索引为8195,字索引为2的变量;将CANopen端的索引为8195,字索引为3的变量乘以0.01映射到CAN端数据ID为90的变量。
所对应的配置文件中的映射关系为
205.12&&205.13&&205.8->8193.0.2
202.7‖205.9‖207.7->8194.3.15
202.9<-8192.0.6‖8194.0.7‖8195..3.2
CANopen通信需求如下:
OD对象索引为9000,子索引为0的变量、映射到发送PDO数据字段的第一个。索引为9001,子索引为0的变量、索引为9002,子索引为0的变量分别映射到发送PDO0的数据区的第一个、第二个、第三个位置。
OD对象索引为8207,子索引为0的变量、映射到发送PDO数据字段的第一个。索引为8203,子索引为0的变量、索引为8204,子索引为0的变量分别映射到发送PDO1的数据区的第一个、第二个、第三个位置。
OD对象索引为8310,子索引为0的变量、映射到发送PDO数据字段的第一个。索引为8209,子索引为0的变量、索引为8210,子索引为0的变量分别映射到发送PDO3的数据区的第一个、第二个、第三个位置。
OD对象索引为8310,子索引为0的变量、映射到发送PDO数据字段的第一个。索引为8209,子索引为0的变量、索引为8210,子索引为0的变量分别映射到发送PDO3的数据区的第一个、第二个、第三个位置。
OD对象索引为8202,子索引为0的变量、映射到发送PDO数据字段的第一个。索引为8201,子索引为0的变量、索引为8200,子索引为0的变量分别映射到发送PDO3的数据区的第一个、第二个、第三个位置。
接下来,将生成的配置文件以文件的形式通过嵌入式串行文件传输协议下载到数字信号处理器的外部闪存(即Flash存储器)中,如图2所示,是进行配置文件下载的示意图。之后,信息交换装置读取配置文件,解析配置参数,系统状态切换到初始化状态,重新初始化各个功能模块,完成后,系统进入正常的运行状态。以上工作过程可通过如图3所示的流程图表不。
嵌入式串行文件传输协议物理媒介采用RS232通信接口,选用IEC60870-101协议作为其高层协议,使用文件系统模块(即前述的应用程序模块中的一个子模块)进行文件的存储与管理。利用IEC60870-101协议中文件传输的报文来实现数据传输。在传输过程中,串行文件传输协议与文件系统模块(比如可以是SAFE软件,也即文件存储与管理软件)进行相结合,调用文件系统模块提供的API接口(API接口,即应用程序接口,是文件系统模块所提供的功能接口,应用程序通过此接口来调用文件系统模块提供的功能),可靠的将传输的文件存储在非易失性的外部闪存中。
在IEC60870-101协议的设计实现过程中,为了使文件传输的过程清晰,文件处理代码更加高效,采用有限状态机设计文件传输的程序架构。采用有限状态机的设计方法,把文件下载分成了5种状态去处理,文件上传分成了8种状态处理。图4、5分别是文件下载、上传的示意图。
当信息交换装置接收到召唤目录报文,文件上传开始,文件上传的状态机启动,具体过程如下:
1.数字信号处理器接收到召唤目录报文,进行回复目录报文;
2.数字信号处理器接收到选择文件报文,进行回复文件准备就绪报文;
3.数字信号处理器接收到召唤文件报文,数字信号处理器从外部闪存中读文件,如果成功读取,进行回复节准备就绪报文。如果失败读取,进行回复检错报文,错误类型为外部闪存读错误,转到步鄹9。
4.数字信号处理器接收到召唤节报文,进行回复段报文;
5.数字信号处理器本节数据全部传送结束后,进行回复最后的段报文;
6.数字信号处理器接收到节否定确认,进行回复本节准备就绪;
7.数字信号处理器接收到节肯定确认,如果还有后续的节,数字信号处理器从外部闪存中读文件,如果成功读取,进行回复下一节准备就绪报文。转到步鄹4;如果失败读取,进行回复检错报文,错误类型为外部闪存读错误,转到步鄹9;如果无后续的节,回复最后的节;
8.数字信号处理器接收到文件否定确认,数字信号处理器从外部闪存中读文件,如果成功读取,进行回复第一节准备就绪报文,转到步鄹4;如果失败读取,进行回复检错报文,错误类型为外部闪存读错误,转到步鄹9;数字信号处理器接收到文件肯定确认,文件上传结束;
9.数字信号处理器接收到格式化外部闪存操作,进行回复外部闪存操作确认,文件上传结束。
当数字信号处理器接收到文件准备就绪报文,文件下载开始,文件下载的状态机启动,具体过程如下:
1.数字信号处理器接收到文件准备就绪报文,进行回复召唤文件;
2.数字信号处理器接收到节准备就绪报文,进行回复召唤相应的节报文;
3.数字信号处理器接收到段报文,进行存储段数据;
4.数字信号处理器接收到最后的段报文,进行节确认;数字信号处理器如果肯定确认,进行节存入外部闪存操作,转到步鄹5;数字信号处理器如果否定确认,进行回复节否定确认;则转到步鄹2;
5.数字信号处理器写外部闪存操作成功,进行回复节肯定确认,则转到步鄹6;数字信号处理器写外部闪存操作错误,进行回复检错报文,错误类型为外部闪存写错误,转到步鄹8;
6.数字信号处理器接收到节准备就绪报文,进行回复召唤相应的节报文,转到步鄹3,数字信号处理器接收到最后的节报文,进行文件确认;
7.数字信号处理器如果否定确认,进行回复文件否定确认,转到步鄹2;数字信号处理器如果肯定确认,进行回复文件肯定确认,文件下载结束;
8.数字信号处理器接收到格式化外部闪存操作,进行回复外部闪存操作确认,文件下载结束。
通过IEC60870-101协议栈的文件传输机制,可以对文件进行分段、可靠的传输。同时定义传输原因请求,信息体地址为0,信息体元素为错误类型。在CANopen项目中,定义了错误类型如下表一;同时还根据IEC60870-101协议的类型标识字段,定义类型标识134为检错报文,请见表二。
表一
编号 |
说明 |
0 |
类型标识错误(类型标识、传送原因、应用层地址、信息体地址) |
1 |
报文状态错误 |
2 |
文件报文限定词错误 |
3 |
文件节队列满 |
4 |
文件节队列空 |
5 |
读外部闪存中文件错误 |
6 |
写外部闪存中文件错误 |
7 |
删除文件错误 |
8 |
打开文件错误 |
9 |
关闭文件错误 |
表二
增加了错误检错报文,使IEC101协议的应用层功能更加健全,同时采用了上位机进行监控,可以及时的显示报文错误的类型,便于使用者及时进行处理。
这样应用层可以对接收到的报文进行检错,并提示配置软件,显示报文错误类型。
CAN与CANopen可配置数据映射方案说明如下:
本实施例的技术方案主要是为了解决在标准CAN2.0B的应用层协议与CANopen协议之间进行转化过程中,针对不同的客户对于CAN传输端传输数据与CANopen传输端传输数据的映射关系的不同需求,设计了一种可动态配置的数据映射方案,通过动态的配置满足了不同客户的需求。
数据映射的关系为配置文件的一部分,开始存放于数字信号处理器的外部闪存上,由配置软件生成,它用来描述CAN端数据与CANopen端传输数据的映射关系。在数字信号处理器中,将CAN端需要传输的每一个数据赋予一个唯一的ID用来进行标识变量,配置文件中映射关系是通过的CAN通信接口端传输数据的ID与CANopen端传输数据的索引和子索引结合约定的逻辑标识符来表示的,其内容包含将CAN传输数据的ID映射到用户需要的OD(Object Dictionary)对象变量,将CAN传输数据的位映射到用户需要的位,或者将用户需要的OD对象变量映射到CAN传输数据的ID,将用户需要的位映射到CAN总线接口端传输数据的位。映射关系包括有符号整型映射,无符号整型映射,位映射(包括逻辑或、与、非、位直接映射),映射方案如图6所示。
例如:在用户的需求中,需要将CAN端数据ID为205的变量的第12位、13位、8位作位与运算后映射到CANopen端数据索引为8193,子索引为0的变量的第0位;将CAN端数据ID为202的变量第7位,ID为205变量的第9位,ID为207变量的第7位做位或后映射到CANopen端的索引为8194,字索引为3的变量的第15位;将CANopen端的索引为8192,字索引为0的变量的第6位,索引为8194,字索引为0的变量的第7位,索引为8195,字索引为3的变量的第2位作位或后映射到CAN端数据ID为202的变量的第9位;此需求也就是配置文件中参数映射关系表达式的前三个。用户需求的变化就是如上映射关系的变化。
信息交换装置在重新复位或者配置文件发生更改时,解析模块都会从外部闪存中读取配置文件,在初始化过程中,读取数据映射参数,解析逻辑关系,并在内存中动态开辟数据空间,以特定的数据结构存放解析的逻辑映射关系,这样在数字信号处理器运行的过程中,通过一定的算法对这种特定的数据结构进行逻辑运算,达到数据映射的可动态配置。
CANopen数据里的OD数据都是用OD数据索引来表示的。在CAN应用层协议里传输的每一个数据也都有唯一的ID号。在数字信号处理器中一个CAN端数据用一个ID代表,一个CANopen端的数据变量用一个OD索引值代表。在配置文件里我们通过ID和索引值加上我们自己定义的逻辑关系表达式来表示特定的映射关系,这种表达式对于桌面配置软件和数字信号处理器都是透明的。这样在数字信号处理器读取配置文件后,对这种逻辑关系表达式进行解析,然后把这种关系存放到我们定义的链表节点中。通过上述所说的“一定的算法”,便可达到可动态配置。
本实施例中的自定义逻辑关系表达式示例。
配置文件中参数映射关系表达式为:
205.12&&205.13&&205.8->8193.0.2
202.7‖205.9‖207.7->8194.3.15
202.9<-8192.0.6‖8194.0.7‖8195.3.2
205.6~->8196.1.0
207.7->8195.3.8
71*100->8195.2
71*100->8195.2
90<-8195.3*0.01
表示的含义为:
将CAN端数据ID为205的变量的第12位、13位、8位作位与运算后映射到CANopen端数据索引为8193,子索引为0的变量的第0位;将CAN端数据ID为202的变量第7位,ID为205变量的第9位,ID为207变量的第7位做位或后映射到CANopen端的索引为8194,字索引为3的变量的第15位;将CANopen端的索引为8192,字索引为0的变量的第6位,索引为8194,字索引为0的变量的第7位,索引为8195,字索引为3的变量的第2位作位或后映射到CAN端数据ID为202的变量的第9位;将CAN端数据ID为205的变量第6位取反后映射到CANopen端的索引为8196,字索引为1的变量的第0位;将CAN端数据ID为207的变量第7位直接映射到CANopen端的索引为8195,字索引为3的变量的第8位;将CAN端数据ID为71的变量乘以100接映射到CANopen端的索引为8195,字索引为2的变量;将CANopen端的索引为8195,字索引为3的变量乘以0.01映射到CAN端数据ID为90的变量。
外设驱动的实现如下:
本实施例主要基于DSP28系列芯片的硬件平台,完成了BIOS操作系统下SCI(serialconmucation interface串行通信接口)及CAN外设驱动。外设驱动采用统一的GIO类驱动模型,应用于DSP28系列芯片(如c2000)的硬件平台,实现了非阻塞的驱动模式。驱动实现中采用了在DSP28芯片(c2000)平台下自定义实现的硬件抽象层PAL。本实施例的驱动结构如图7所示,由上到下主要包括:应用层,系统应用程序,GIOAPI函数(即驱动程序对应用层提供的统一应用接口),IOM微型驱动(即各种外设驱动的数据流的实现,其依赖于设备抽象层,且被GIOAPI接口层调用),设备抽象层(对各外围设备的寄存器进行封装,完成特定功能,由IOM微型驱动层调用),片上设备(指DSP芯片上的设备),外围设备(指DSP芯片上外设,如SCI等)。
基于DSP28系列芯片和bios操作系统的CANopen协议软件的实现方案说明如下:
基于bios操作系统的应用程序中,我们将CANopen协议栈运行在有限的状态之中,系统可以根据外界的指令在不同的状态中切换,使得对于状态可控的CANopen协议栈的控制更加的灵活。在bios操作系统中,本方案将CANopen协议栈的运行作为一种任务,CANopen协议栈的调度交给操作系统,而设计者不必再为CANopen协议栈的执行设定执行顺序。在本实施例中,我们将CANopen协议栈的运行状态划分为如图8所示的以下五种状态:
a.CANopen运行空闲状态;
b.CANopen初始化状态;
c.CANopen调试状态;
d.CANopen运行状态;
e.CANopen停止状态;
在CANopen各种状态下,本实施例可以进行相应的CANopen协议栈模块的处理程序。CANopen状态的切换可由更高一级的系统来调度控制实现。更高一级的系统可以是安装在计算机中的桌面配置软件,或者另一个更高一层(软件架构分层)的模块,用于管理状态的转移。本实施例中采用了安装在计算机中的桌面配置软件,通过RS232接口进行通信。其中:INIT状态用来初始化CANopen协议栈;IDLE状态使得CANopen协议栈运行在空闲状态,不做任何事情;STOP状态用来停止CANopen的运行;DEBUG状态是用在调试阶段。
通过配置文件进行CANopen协议参数配置方案说明如下:
CANopen协议规定CANopen从站的参数配置通过主站发送服务数据对象(SDO)进行配置和修改。将CANopen的参数配置信息存放在配置文件中,在CANopen初始化阶段,通过解析配置文件里的配置信息,然后在动态的内存中创建所需数据结构,来对CANopen从站进行参数配置。
CANopen协议参数配置主要有CANopen协议中PDO属性,CANOpen对象变量属性和CANopen对象到PDO的映射,在配置文件中,我们用如下关系表达式来表示(见配置示例)。在CANopen初始化过程中,我们会解析所述的关系表达式,来修改相应的参数,达到动态配置和修改CANopen协议参数。以下是一个具体的配置示例:
CANopenPDO属性:
[CANopenPDO]
RxPdo0,127,5120,1,514,254,0,0,3
RxPdo1,127,5121,1,2147484418,254,0,0,0
RxPdo2,127,5122,1,2147484674,254,0,0,0
RxPdo3,127,5123,1,2147484930,254,0,0,0
TxPdo0,127,6144,0,386,254,100,20,3
TxPdo1,127,6145,0,642,254,100,60,3
TxPdo2,127,6146,0,898,254,100,80,3
TxPdo3,127,6147,0,2147484802,254,100,100,0
CANopen对象到PDO的映射
[PDOMAP]
TxPdo2.2->8210.0
TxPdo2.1->8209.0
TxPdo2.0->8310.0
TxPdo1.2->8204.0
TxPdo1.1->8203.0
TxPdo1.0->8207.0
TxPdo0.2->9002.0
TxPdo0.1->9001.0
TxPdo0.0->9000.0
RxPdo0.2->8200.0
RxPdo0.1->8201.0
RxPdo0.0->8202.0
CanOpen对象变量属性
[VarTab]
15,8193,0,1,UNSIGNED,0,0
15,8194,0,1,SIGNED,0,0
15,8195,0,1,SIGNED,0,0
15,9000,0,1,UNSIGNED,0,0
15,9001,0,1,SIGNED,0,0
15,9002,0,1,SIGNED,0,0
15,8207,0,1,UNSIGNED,0,0
15,8203,0,1,SIGNED,0,0
15,8204,0,1,UNSIGNED,0,0
15,8310,0,1,UNSIGNED,0,0
15,8209,0,1,SIGNED,0,0
15,8210,0,1,SIGNED,0,0
本实施例的安全性方案如下:
1.配置软件本身的安全性:该软件通过硬件狗的保护,在没有硬件狗的情况下,是无法使用的,从而从权限上保证了安全性。
2.配置文件的安全性:一股软件的配置文件为.ini文件,其实就是文本文件,这样的配置文件,任何人都能打开,对于功能的安全(容易被人不小心更改)和技术安全(被人获知我们的配置内容,从而进行逆向工程)是没法保证的,本方案采用的是加密的数据库(Access),除非破解Access,否则是无法查看配置文件的.从而保证了配置文件的安全。
3.通信的安全性:通信的安全主要体现在文件本身能够安全,无损伤的到达通信节点,本方案采用的是基于101数据帧的串行文件传输协议,配置软件实现其主站,由于采用专用协议,很大程度上保证了通信的安全性和稳定性。
信息交换装置出厂之前,外部闪存中会保存有备份的配置文件,信息交换装置上电之后,会按默认的配置文件进行系统参数的配置。当用户需求改变时,可通过配置软件,进行参数的配置,配置软件将新的配置文件下载到数字信号处理器的外部闪存中,之后数字信号处理器会解析配置文件,按照新的配置参数重新初始化各个模块,这样数字信号处理器就会工作在用户需求的状态下。
以下是从数字信号处理器出厂、通过桌面配置软件进行参数配置、下载配置文件、读取配置文件、解析配置文件的参数到运行在用户需求的状态下的一个完整的流程的说明:
1.打开桌面配置软件
打开桌面配置软件需要遵守:使用合法的硬件狗(USBKey),如果出现如图9所示对话框,请申请合法的硬件狗,然后使用桌面配置软件。
2.导入文件
导入文件为从数据库中提取出CanOpen数字信号处理器的配置信息,显示在界面供用户或观察,该数据库已经加密,只有通过桌面配置软件才能打开。
点击桌面配置软件“文件”菜单,点击“导入文件”菜单项,如图10。
点击“导入文件”菜单项,出现打开文件对话框,如图11。
打开所需数据库文件,则配置信息导入桌面配置界面,状态栏有成功提示,如下图12所示。
3.修改配置
桌面配置软件所能修改的部分主要包括:
硬件配置设置包括:版本号、项目名称、SCI及eCAN硬件配置等信息。
映射关系包括:变量映射和PDO映射。
属性设置包括:CANopen协议中PDO属性,CANOpen对象变量属性和CANopen对象到PDO的映射。
映射节点包括:CanID,变量索引和PDO。
用户需求的变化也都集中在这几个地方,通过对桌面配置软件的界面的操作,即可达到对可变部分的修改。
4.下载配置文件
下载文件是将当前界面的配置信息下载到数字信号处理器。点击“命令”菜单下的“下载文件”菜单项。
在我们点击下载文件菜单项时,桌面配置软件会将桌面的配置信心按照配置软件与数字信号处理器的约定格式生成配置文件数据流,之后通过串行文件传输协议下载到数字信号处理器中。
5.导出文件
导出文件是将界面信息导入到事先导入的数据库文件中,数据库文件为CanOpenConfig.mdb。点击“文件”菜单下的“导出文件”菜单项。
当然,桌面软件还提供配置文件上传功能,上传配置文件是将数字信号处理器中的配置文件上传至桌面配置界面,以方便用户查看数字信号处理器中的配置信息。
整个数字信号处理器在工作状态下,如果用户需求发生变化,可按照1~5的步骤进行操作,在第4步下载完成后,数字信号处理器单板不需要进行上电复位,即可自动按照用户的需求状态进行工作。
以上内容是结合具体实施实施例对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。