论文部分内容阅读
【摘要】本文介绍了基于XPE的实时智能CAN卡数据采集系统的硬件和软件设计架构,可以实时地对工业现场数据进行采集分析,实现一个高性能、高可靠性的智能CAN模块,保障PC机与底层CAN总线上其他CAN节点可靠的实时通信、稳定的数据交换以及智能的命令控制。
【关健词】XPE;实时;智能CAN卡;数据采集
1.引言
随着工业控制的迅速发展,工业控制所覆盖领域也越来越广,由于它们主要工作在复杂恶劣的环境中,就需要实时地对它们所处的工作环境进行采集处理以避免产生严重的后果。基于XPE的实时智能CAN卡系统架构可以实时可靠地实现数据采集传输。通过循环采集各个节点的数据从而实现各个节点的监控。
Windows XP Embedded是一种嵌入式操作系统,可以以组件化的形式提供Windows操作系统的功能。它包含10,000多个独立的功能组件,提供了业内领先的可靠性、安全性和性能,并且具备最新的多媒体、Web浏览、电源管理及设置支持功能。Windows XP Embedded还集成了最新的嵌入式支持功能,具有:对安全和可伸缩网络的支持;得到增强的实时处理能力;更为优秀的性能表现;更为丰富的多媒体和Web浏览功能;与个人计算机、服务器、Web服务以及其它设备更为出色的互操作性;行业领先的可靠性、安全性和性能等优点。
CAN是控制网络Control Area Network的简称,最早由德国BOSCH公司推出,用于汽车内部测量与执行部件之间的数据通信。控制域局域网为串行通信协议,能有效的支持具有很高安全等级的分布式实时控制系统。由于其极高的性能和可靠的可靠性,已广泛用于环境监测、现场控制、楼宇安防、交通工具等。其信号传输介质为双绞线,通信速率最高可达到1Mbps,可挂接设备最多110个。
传统的CAN卡数据采集系统通过CAN控制器与收发器直接与PC机相连中,实现对信息的采集,这种方法操作简捷方便,任务单一,但加重了CPU的负载处理,利用率低;通过引入MCU可以实现分步式的处理,对采集到的信息先由MCU进行判决,若有效,再上行至PC机进行处理,否则不予响应。这种方式既加快了处理速度,强化了任务处理,同时减轻了PC机的负荷。
2.系统硬件架构设计
2.1 硬件框架图(如图1)
2.2 硬件设计过程
基于X86的架构,采用Intel E600系列处理器。作为嵌入式系统芯片的E600系列处理器在架构和开放接口方面具有独特优势,它采用标准的PCI Express作为处理器与芯片的接口,增强了灵活性,提供了完善的信息系统解决方案。
PCI桥接芯片选取PLX公司的PCI9054。PCI9054是PLX公司推出的一种32位33MHz的PCI总线主控I/O加速器,它采用PLX在业界领先的数据流水线框架,包含DMA引擎,可编程的PCI起始器和目标数据传输模式以及PCI信息传输功能。PCI9054提供了三种物理总线接口:PCI总线接口,LOCAL总线接口及串行EPROM接口。LOCAL总线的数据宽度为32位,时钟频率可达到50MHZ并且支持数据预取功能。PCI9054的本地总线有M、C、J 3种工作模式,可通过模式选择引脚MODE[1:0]进行控制,C模式能够满足绝大多数的应用需求,而且C模式的本地总线操作时序最为简单,逻辑控制相对容易,其开发难度相对较低。在此系统中,我们采用C模式进行开发。PCI9054工作时需要一片配置芯片EEPROM,在PCI卡上电时,配置PCI9054。
CAN控制器有两种工作模式,BasicCAN模式和PeliCAN模式,常用于工业环境中的区域网络的控制。在该系统中,数据控制口直接与MCU的IO口相连,并采用5V隔离电源;采用光耦隔离芯片以避免由于地环流的损坏,增强系统在恶劣环境中使用的可靠性;为提高系统的灵活性与数据的吞吐能力。
FPGA是该系统的设计核心部分。由于总线仲裁在PCI9054与本地总线的接口设计中,需要进行逻辑控制,因此总线仲裁逻辑成为关键核心部分,本地总线的所有控制逻辑必须服从于总线仲裁逻辑。由于FPGA具有灵活的编程特点,在进行控制时,FPGA具有比双口RAM更灵活的数据存取控制。当驱动程序和MCU底层程序同时对同一地址数据区域进行读写访问时,就会产生冲突,采用FPGA既可以实现数据的共享存储,同时可以提高供访问仲裁功能,根据应用需求仲裁访问权归属到某一方,并通知另外一方此时无法访问该地址(如图2所示)。
FPGA实现PCI9054与双口RAM的读写接口,同时将数据缓存,实现双口RAM功能。在FPGA内部开辟了两个双缓冲区RAM,每个缓冲区的大小为4KB,一个缓冲区用于接收来自PCI9054的数据,另一个缓冲区用于接收来自MCU的数据。双缓冲的方式可以有效的避免读写冲突。
FPGA接收PCI9054端写入的数据,写入RAM1中对应的地址中;如果PCI9054写发送中断寄存器(T_INT,地址0x2000),FPGA将与MCU连接的INT信号置一个高电平,待MCU读取地址0x000时,FPGA自动将中断信号置为低电平(清中断);MCU读FPGA时,FPGA将MCU端需要读出的数据从RAM1中读出后,放到MCU数据线上,由MCU读走;
FPGA接收MCU端写入数据时,FPGA将MCU端写入的数据,写入RAM2对应的地址中;如果MCU写发送接收寄存器(R_INT),则FPGA将与PCI9054连接的INT信号(LINT)置一个低电平,待PCI9054读取地址0x000或者地址0x800时,FPGA自动将中断信号置为高电平(清中断);PCI9054读PFGA时,FPGA将PCI9054端需要读出的数据从RAM2中读出后,放到PCI localbus数据线上,由PCI9054读走; 3.系统软件框架设计
3.1 软件整体框图(如图3)
3.2 驱动程序设计
驱动程序支持应用程序通过调用API函数对FPGA芯片进行读写操作,驱动程序运行于XPE操作系统环境下,类型为WDM驱动。智能CAN模块的驱动程序为CAN.sys,支持对设备的打开/关闭、读写控制、即插即用、电源管理等。驱动程序内部封装了5个API函数,分别实现了:CAN卡激活功能;CAN卡关闭功能;CAN卡的初始化功能;通过从双口RAM的指定地址读取数据到上层应用的指定的存储空间;将上层应用传入的指令写入到双口RAM的指定地址。
3.3 MCU底层程序
MCU底层程序运行于MCU芯片中,从FPGA芯片中读取CAN通信指令,进行指令解析,实现相应CAN通信功能(如图4所示)。
当上电启动后,开始芯片初始化,进行CAN芯片配置,然后循环查询接收和发送数据,有接收数据到来,刚进入到接收数据处理函数进行处理,否则继续查询,发送数据过程亦然。当有外部中断时,响应中断,进入中断处理程序,读取上位机的命令进行命令处理;系统定时器中断时,将清零看门狗定时器,同时使软定时器计数减1。中断的优先级为外中断高于定时器中断。
3.4 FPGA流程设计
如图5所示,PCI9054的从模式单周期读、写时序是设计的难点,开始状态为空闲状态,若Lads为0时且LW/R为1时,转到写状态;若Lads为0时且LW/R为0时,转到读准备状态;在写状态时,此时状态下要置信号READY为0,表示写数据有效,当Blast为0时,继续执行写的过程,当Blast为1时,PCI9054不再请求本地总线,则跳转至空闲状态;在读状态时,此时状态下要置信号READY为0,表示读数据有效,读使能信号有效,表示数据有效可以读取,当Blast为0时,继续准备读数据,当Blast为1时,表明读取完成,转至空闲状态。
4.结束语
通过基于XPE实时操作系统的智能CAN模块,保障了PC机与底层CAN总线上其他CAN节点可靠的实时通信、稳定的数据交换以及智能的命令控制。PC机通过使用该智能CAN模块,可以减少通过CAN总线进行大量数据传输时CPU的负荷,同时拥有高数据吞吐能力。将该CAN卡加予拓展,可以广泛的用于车载信息系统、数字安全监控、工业自动化等行业,实现可观的应用。
参考文献
[1]夏宇闻.数字系统设计-Verilog实现[M].北京:高等教育出版社,2006.
[2]张帆,史彩成.Windows驱动开发技术详解[M].北京:电子工业出版社.
[3]PLX Technology Inc.PCI9054 data book.
[4]王黎明,夏立,邵英,闫晓玲.CAN现场总线系统的设计与应用[M].北京:电子工业出版社.
[5]徐美荣,蔡铭,董金祥.基于实时操作系统Windows的CAN驱动设计与实现[J].
[6]徐木水,刘金国.基于FPGA的CAN总线通信接口的设计[J].电子设计工程,2010,10(18).
作者简介:
吴舒辞,教授,博士生导师,研究方向:控制理论与工程。
刘俞,中南林业科技大学计算机与信息工程学院硕士研究生在读,主要研究方向:智能检测与自动控制。
夏利锋(1979—),男,湖南长沙人,硕士,主要从事智能测控系统、虚拟仪器的研究。
【关健词】XPE;实时;智能CAN卡;数据采集
1.引言
随着工业控制的迅速发展,工业控制所覆盖领域也越来越广,由于它们主要工作在复杂恶劣的环境中,就需要实时地对它们所处的工作环境进行采集处理以避免产生严重的后果。基于XPE的实时智能CAN卡系统架构可以实时可靠地实现数据采集传输。通过循环采集各个节点的数据从而实现各个节点的监控。
Windows XP Embedded是一种嵌入式操作系统,可以以组件化的形式提供Windows操作系统的功能。它包含10,000多个独立的功能组件,提供了业内领先的可靠性、安全性和性能,并且具备最新的多媒体、Web浏览、电源管理及设置支持功能。Windows XP Embedded还集成了最新的嵌入式支持功能,具有:对安全和可伸缩网络的支持;得到增强的实时处理能力;更为优秀的性能表现;更为丰富的多媒体和Web浏览功能;与个人计算机、服务器、Web服务以及其它设备更为出色的互操作性;行业领先的可靠性、安全性和性能等优点。
CAN是控制网络Control Area Network的简称,最早由德国BOSCH公司推出,用于汽车内部测量与执行部件之间的数据通信。控制域局域网为串行通信协议,能有效的支持具有很高安全等级的分布式实时控制系统。由于其极高的性能和可靠的可靠性,已广泛用于环境监测、现场控制、楼宇安防、交通工具等。其信号传输介质为双绞线,通信速率最高可达到1Mbps,可挂接设备最多110个。
传统的CAN卡数据采集系统通过CAN控制器与收发器直接与PC机相连中,实现对信息的采集,这种方法操作简捷方便,任务单一,但加重了CPU的负载处理,利用率低;通过引入MCU可以实现分步式的处理,对采集到的信息先由MCU进行判决,若有效,再上行至PC机进行处理,否则不予响应。这种方式既加快了处理速度,强化了任务处理,同时减轻了PC机的负荷。
2.系统硬件架构设计
2.1 硬件框架图(如图1)
2.2 硬件设计过程
基于X86的架构,采用Intel E600系列处理器。作为嵌入式系统芯片的E600系列处理器在架构和开放接口方面具有独特优势,它采用标准的PCI Express作为处理器与芯片的接口,增强了灵活性,提供了完善的信息系统解决方案。
PCI桥接芯片选取PLX公司的PCI9054。PCI9054是PLX公司推出的一种32位33MHz的PCI总线主控I/O加速器,它采用PLX在业界领先的数据流水线框架,包含DMA引擎,可编程的PCI起始器和目标数据传输模式以及PCI信息传输功能。PCI9054提供了三种物理总线接口:PCI总线接口,LOCAL总线接口及串行EPROM接口。LOCAL总线的数据宽度为32位,时钟频率可达到50MHZ并且支持数据预取功能。PCI9054的本地总线有M、C、J 3种工作模式,可通过模式选择引脚MODE[1:0]进行控制,C模式能够满足绝大多数的应用需求,而且C模式的本地总线操作时序最为简单,逻辑控制相对容易,其开发难度相对较低。在此系统中,我们采用C模式进行开发。PCI9054工作时需要一片配置芯片EEPROM,在PCI卡上电时,配置PCI9054。
CAN控制器有两种工作模式,BasicCAN模式和PeliCAN模式,常用于工业环境中的区域网络的控制。在该系统中,数据控制口直接与MCU的IO口相连,并采用5V隔离电源;采用光耦隔离芯片以避免由于地环流的损坏,增强系统在恶劣环境中使用的可靠性;为提高系统的灵活性与数据的吞吐能力。
FPGA是该系统的设计核心部分。由于总线仲裁在PCI9054与本地总线的接口设计中,需要进行逻辑控制,因此总线仲裁逻辑成为关键核心部分,本地总线的所有控制逻辑必须服从于总线仲裁逻辑。由于FPGA具有灵活的编程特点,在进行控制时,FPGA具有比双口RAM更灵活的数据存取控制。当驱动程序和MCU底层程序同时对同一地址数据区域进行读写访问时,就会产生冲突,采用FPGA既可以实现数据的共享存储,同时可以提高供访问仲裁功能,根据应用需求仲裁访问权归属到某一方,并通知另外一方此时无法访问该地址(如图2所示)。
FPGA实现PCI9054与双口RAM的读写接口,同时将数据缓存,实现双口RAM功能。在FPGA内部开辟了两个双缓冲区RAM,每个缓冲区的大小为4KB,一个缓冲区用于接收来自PCI9054的数据,另一个缓冲区用于接收来自MCU的数据。双缓冲的方式可以有效的避免读写冲突。
FPGA接收PCI9054端写入的数据,写入RAM1中对应的地址中;如果PCI9054写发送中断寄存器(T_INT,地址0x2000),FPGA将与MCU连接的INT信号置一个高电平,待MCU读取地址0x000时,FPGA自动将中断信号置为低电平(清中断);MCU读FPGA时,FPGA将MCU端需要读出的数据从RAM1中读出后,放到MCU数据线上,由MCU读走;
FPGA接收MCU端写入数据时,FPGA将MCU端写入的数据,写入RAM2对应的地址中;如果MCU写发送接收寄存器(R_INT),则FPGA将与PCI9054连接的INT信号(LINT)置一个低电平,待PCI9054读取地址0x000或者地址0x800时,FPGA自动将中断信号置为高电平(清中断);PCI9054读PFGA时,FPGA将PCI9054端需要读出的数据从RAM2中读出后,放到PCI localbus数据线上,由PCI9054读走; 3.系统软件框架设计
3.1 软件整体框图(如图3)
3.2 驱动程序设计
驱动程序支持应用程序通过调用API函数对FPGA芯片进行读写操作,驱动程序运行于XPE操作系统环境下,类型为WDM驱动。智能CAN模块的驱动程序为CAN.sys,支持对设备的打开/关闭、读写控制、即插即用、电源管理等。驱动程序内部封装了5个API函数,分别实现了:CAN卡激活功能;CAN卡关闭功能;CAN卡的初始化功能;通过从双口RAM的指定地址读取数据到上层应用的指定的存储空间;将上层应用传入的指令写入到双口RAM的指定地址。
3.3 MCU底层程序
MCU底层程序运行于MCU芯片中,从FPGA芯片中读取CAN通信指令,进行指令解析,实现相应CAN通信功能(如图4所示)。
当上电启动后,开始芯片初始化,进行CAN芯片配置,然后循环查询接收和发送数据,有接收数据到来,刚进入到接收数据处理函数进行处理,否则继续查询,发送数据过程亦然。当有外部中断时,响应中断,进入中断处理程序,读取上位机的命令进行命令处理;系统定时器中断时,将清零看门狗定时器,同时使软定时器计数减1。中断的优先级为外中断高于定时器中断。
3.4 FPGA流程设计
如图5所示,PCI9054的从模式单周期读、写时序是设计的难点,开始状态为空闲状态,若Lads为0时且LW/R为1时,转到写状态;若Lads为0时且LW/R为0时,转到读准备状态;在写状态时,此时状态下要置信号READY为0,表示写数据有效,当Blast为0时,继续执行写的过程,当Blast为1时,PCI9054不再请求本地总线,则跳转至空闲状态;在读状态时,此时状态下要置信号READY为0,表示读数据有效,读使能信号有效,表示数据有效可以读取,当Blast为0时,继续准备读数据,当Blast为1时,表明读取完成,转至空闲状态。
4.结束语
通过基于XPE实时操作系统的智能CAN模块,保障了PC机与底层CAN总线上其他CAN节点可靠的实时通信、稳定的数据交换以及智能的命令控制。PC机通过使用该智能CAN模块,可以减少通过CAN总线进行大量数据传输时CPU的负荷,同时拥有高数据吞吐能力。将该CAN卡加予拓展,可以广泛的用于车载信息系统、数字安全监控、工业自动化等行业,实现可观的应用。
参考文献
[1]夏宇闻.数字系统设计-Verilog实现[M].北京:高等教育出版社,2006.
[2]张帆,史彩成.Windows驱动开发技术详解[M].北京:电子工业出版社.
[3]PLX Technology Inc.PCI9054 data book.
[4]王黎明,夏立,邵英,闫晓玲.CAN现场总线系统的设计与应用[M].北京:电子工业出版社.
[5]徐美荣,蔡铭,董金祥.基于实时操作系统Windows的CAN驱动设计与实现[J].
[6]徐木水,刘金国.基于FPGA的CAN总线通信接口的设计[J].电子设计工程,2010,10(18).
作者简介:
吴舒辞,教授,博士生导师,研究方向:控制理论与工程。
刘俞,中南林业科技大学计算机与信息工程学院硕士研究生在读,主要研究方向:智能检测与自动控制。
夏利锋(1979—),男,湖南长沙人,硕士,主要从事智能测控系统、虚拟仪器的研究。