传感器开发平台
登录
直播中
段丽
7年用户
162经验值
私信
关注
基于PowerPC的CAN总线通信系统怎么设计?
开启该帖子的消息推送
嵌入式
数据采集
CAN总线
嵌入式数据采集与监测平台主要完成数据采集、数据处理与分析、网络
通信
等功能,对外提供数据采集接口、网络通信接口和人机交互接口。同时,该平台也集成了嵌入式Web服务器和嵌入式实时数据库。
回帖
(2)
庄雪昕
2019-9-2 15:52:12
嵌入式数据采集与监测平台的设计与开发主要基于PowerPC的CAN总线通信系统、ARM的Modbus协议通信系统、ARM的InterBus现场总线通信系统、ARM的远程I/0数据采集系统、嵌入式MCU的通信协议转换器、Zigbee技术的无线远程监测系统。而广泛应用于电厂和输配电系统的是PowerPC的CAN总线通信系统和ARM的远程I/O数据采集系统。
一、基于PowerPC的CAN总线通信系统设计与开发
基于PowerPC的嵌入式系统硬件平台设计
基于PowerPC和CAN总线的嵌入式数据采集监测系统在硬件方面选择以飞思卡尔MPC8248处理器为核心的开发板构建硬件平台。
(1)MF~C8248嵌入式处理器简介
MPC8248是基于飞思卡尔PowerQUICCⅡ技术的高端双核芯片。一个处理器是嵌入的G2_LE内核,另一个是专门的RISC的通信处理模块CPM。MPC8248的功能结构框图见图1。
(2)基于EP8248E开发板的系统硬件平台架构
为了缩短开发周期并提高开发效率,选用基于MPC8248的嵌入式开发板EP8248E作为基本硬件平台。这样可以节省大量的硬件开发工作。
除了基于MPC8248的嵌入式开发板EP8248E基本硬件平台,该系统的数据采集要求可以支持多种通信方式。但开发板没有某些通信方式的硬件支持,这就需要我们通过设计来实现。一般来说,有两种方式:一种是在开发板中直接扩展硬件接口设备,由开发板中的微处理器直接控制;另一种是独立设计接口板,使之与主开发板连接,由接口板上微处理器来实现通信转发。
图2为基于PowerPC的硬件接口结构图。由于PowerPC处理器上需要加载嵌入式Linux操作系统,且考虑应用程序较大,需要扩展程序存储器和FIash来存储程序及数据。EElDROM用来存储用户的组态配置信息。通过扩展以太网接口、RS-232/485、(CAN总线通信接口,将各类监测数据采集到PowerPC处理器。并进行响应的分析处理后通过以太网远程传输到上位DAS、DCS等系统进行进一步的分析处理与存储等。
基于PowerPC的嵌入式系统软件设计
作为嵌入式系统极为重要的组成部分,嵌入式操作系统通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等。
(1)嵌入式Linux操作系统及其移植
嵌入式Linux操作系统最大的特点是源代码公开并且遵循GPL协议,人们可以任意修改以满足自己的应用,并且查错也很容易。选择Linux不仅因为其经济性,同时,PowetPC是Linux较早支持的芯片之一。Linux在嵌入式PowetPC芯片上已经有了许多成功的应用案例。
嵌入式Linux操作系统的移植包括Bootloader的移植、Linux内核裁剪移植以及根文件系统配置等。一般来说,嵌入式Linux系统的大小可以控制在3MB以内,而系统硬件平台EP8248E有8MB的Flash和16MB的SDRAM,有足够的存储空间来满足嵌入式Linux系统的应用要求。在EP8248E系统中,对于嵌入式Linux系统,采用的是通过内核源代码重新配置和裁减的方法,删除不用的功能和操作,减小系统体积,并移植到EP8248开发板所带
的Flash中去。
为了使Linux更加灵活,保证内核的独立性,Linux内核已经不再包括Bootloader代码。在MPC8248开发板的Support CD中附有支持嵌入式PowerPC的Bootloader程序。它具有众多强大的功能,支持TFTP、NFS等多种协议,可以从网络引导Linux,并且包含了测试硬件等多种功能。
Linux内核是可配置的,它既可以配置为大型服务器服务的内核,也可以配置为嵌入式环境下运行的精简内核,这也是Linux的精妙之处。
在嵌入式系统中,没有桌面系统和服务器系统中常见的许多设备,如:IDE、SCCS、硬盘、光驱、键盘、鼠标等。在配置内核时,应该注意去除这些设备选项。通常用户的再发板都不在Linux内核支持的范围内,所以要修改Linux内核使它适合自己的开发板。如果以相近的开发板为蓝本,修改口核源码以适合EP8248E的移植,需要做很多工作。在EP8248E BSP,安装文件夹下有-linuxp-pc_2_4_devel文件夹,它是针对嵌入式PowerPC开发的Linux内核,包括对多种PowerPC开发板的支持。这就意味着我们不再需要修改Linux内核代码,就可以直接配置Linux 内核。
一个Linux系统除了内核外,还必须有一个根文件系统Rootfs,里面包括Linux的第一个进程lnit,用户交互的SheⅡ以及其他文件系统、网络系统的工具等等。经过前面的工作,我们成功地将嵌入式Linux移植到开发板EP8248E上了。Linux加载运行之后,将启动Linux SheⅡ.
用户通过它可以和Linux进行交互。
(2)嵌入式软件功能模块设计
嵌入式Linux操作系统之上的应用层软件设计遵循模块化设计。图3为系统软件模块结构图,主要分为通信驱动层、数据处理层和网络接口层三个层次。通信驱动层主要实现各种工业通信协议,如Modbus、CAN、TCP/IP等。数据处理层是整个软件开发的核心,包括数据采集模块、数据过滤模块、数据存储模块、数据处理模块、组态模块和嵌入式Web服务器等。其中,嵌入式Web服务器可实现将Java Applet通信控件植入Web网页,在用户访问Web服务器英国威廉希尔公司网站 时,这个控件会通过HTTP协议自动下载到客户端并与Socket服务器模块进行连接,从而实现现场与远程客户端的数据交互。报警模块在Web网页实现报警功能,提示工作人员各设备运行状态变化,防止事故的发生。Web定制模块对Web服务器进行一些功能定制,如用户登录验证功能、用户权限设置功能等,从而使系统更安全、稳定。网络接口层主要实现嵌入式PowerPC系统通过TCP/IP协议与上位DCS、DAS等监控系统的数据传输.
嵌入式数据采集与监测平台的设计与开发主要基于PowerPC的CAN总线通信系统、ARM的Modbus协议通信系统、ARM的InterBus现场总线通信系统、ARM的远程I/0数据采集系统、嵌入式MCU的通信协议转换器、Zigbee技术的无线远程监测系统。而广泛应用于电厂和输配电系统的是PowerPC的CAN总线通信系统和ARM的远程I/O数据采集系统。
一、基于PowerPC的CAN总线通信系统设计与开发
基于PowerPC的嵌入式系统硬件平台设计
基于PowerPC和CAN总线的嵌入式数据采集监测系统在硬件方面选择以飞思卡尔MPC8248处理器为核心的开发板构建硬件平台。
(1)MF~C8248嵌入式处理器简介
MPC8248是基于飞思卡尔PowerQUICCⅡ技术的高端双核芯片。一个处理器是嵌入的G2_LE内核,另一个是专门的RISC的通信处理模块CPM。MPC8248的功能结构框图见图1。
(2)基于EP8248E开发板的系统硬件平台架构
为了缩短开发周期并提高开发效率,选用基于MPC8248的嵌入式开发板EP8248E作为基本硬件平台。这样可以节省大量的硬件开发工作。
除了基于MPC8248的嵌入式开发板EP8248E基本硬件平台,该系统的数据采集要求可以支持多种通信方式。但开发板没有某些通信方式的硬件支持,这就需要我们通过设计来实现。一般来说,有两种方式:一种是在开发板中直接扩展硬件接口设备,由开发板中的微处理器直接控制;另一种是独立设计接口板,使之与主开发板连接,由接口板上微处理器来实现通信转发。
图2为基于PowerPC的硬件接口结构图。由于PowerPC处理器上需要加载嵌入式Linux操作系统,且考虑应用程序较大,需要扩展程序存储器和FIash来存储程序及数据。EElDROM用来存储用户的组态配置信息。通过扩展以太网接口、RS-232/485、(CAN总线通信接口,将各类监测数据采集到PowerPC处理器。并进行响应的分析处理后通过以太网远程传输到上位DAS、DCS等系统进行进一步的分析处理与存储等。
基于PowerPC的嵌入式系统软件设计
作为嵌入式系统极为重要的组成部分,嵌入式操作系统通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等。
(1)嵌入式Linux操作系统及其移植
嵌入式Linux操作系统最大的特点是源代码公开并且遵循GPL协议,人们可以任意修改以满足自己的应用,并且查错也很容易。选择Linux不仅因为其经济性,同时,PowetPC是Linux较早支持的芯片之一。Linux在嵌入式PowetPC芯片上已经有了许多成功的应用案例。
嵌入式Linux操作系统的移植包括Bootloader的移植、Linux内核裁剪移植以及根文件系统配置等。一般来说,嵌入式Linux系统的大小可以控制在3MB以内,而系统硬件平台EP8248E有8MB的Flash和16MB的SDRAM,有足够的存储空间来满足嵌入式Linux系统的应用要求。在EP8248E系统中,对于嵌入式Linux系统,采用的是通过内核源代码重新配置和裁减的方法,删除不用的功能和操作,减小系统体积,并移植到EP8248开发板所带
的Flash中去。
为了使Linux更加灵活,保证内核的独立性,Linux内核已经不再包括Bootloader代码。在MPC8248开发板的Support CD中附有支持嵌入式PowerPC的Bootloader程序。它具有众多强大的功能,支持TFTP、NFS等多种协议,可以从网络引导Linux,并且包含了测试硬件等多种功能。
Linux内核是可配置的,它既可以配置为大型服务器服务的内核,也可以配置为嵌入式环境下运行的精简内核,这也是Linux的精妙之处。
在嵌入式系统中,没有桌面系统和服务器系统中常见的许多设备,如:IDE、SCCS、硬盘、光驱、键盘、鼠标等。在配置内核时,应该注意去除这些设备选项。通常用户的再发板都不在Linux内核支持的范围内,所以要修改Linux内核使它适合自己的开发板。如果以相近的开发板为蓝本,修改口核源码以适合EP8248E的移植,需要做很多工作。在EP8248E BSP,安装文件夹下有-linuxp-pc_2_4_devel文件夹,它是针对嵌入式PowerPC开发的Linux内核,包括对多种PowerPC开发板的支持。这就意味着我们不再需要修改Linux内核代码,就可以直接配置Linux 内核。
一个Linux系统除了内核外,还必须有一个根文件系统Rootfs,里面包括Linux的第一个进程lnit,用户交互的SheⅡ以及其他文件系统、网络系统的工具等等。经过前面的工作,我们成功地将嵌入式Linux移植到开发板EP8248E上了。Linux加载运行之后,将启动Linux SheⅡ.
用户通过它可以和Linux进行交互。
(2)嵌入式软件功能模块设计
嵌入式Linux操作系统之上的应用层软件设计遵循模块化设计。图3为系统软件模块结构图,主要分为通信驱动层、数据处理层和网络接口层三个层次。通信驱动层主要实现各种工业通信协议,如Modbus、CAN、TCP/IP等。数据处理层是整个软件开发的核心,包括数据采集模块、数据过滤模块、数据存储模块、数据处理模块、组态模块和嵌入式Web服务器等。其中,嵌入式Web服务器可实现将Java Applet通信控件植入Web网页,在用户访问Web服务器英国威廉希尔公司网站 时,这个控件会通过HTTP协议自动下载到客户端并与Socket服务器模块进行连接,从而实现现场与远程客户端的数据交互。报警模块在Web网页实现报警功能,提示工作人员各设备运行状态变化,防止事故的发生。Web定制模块对Web服务器进行一些功能定制,如用户登录验证功能、用户权限设置功能等,从而使系统更安全、稳定。网络接口层主要实现嵌入式PowerPC系统通过TCP/IP协议与上位DCS、DAS等监控系统的数据传输.
举报
张健
2019-9-2 15:52:23
二、基于ARM的远程I/O数据采集系统设计以及开发系统结构设计
基于嵌入式ARM的远程I/O数据采集系统硬件平台采用32位ARM嵌入式微处理器LPC2132,软件平台采用源码公开、可移植、可裁剪、可固化的多任务实时操作系统μC/0S—Il内核。实时操作系统RTOS的使用使得应用程序的设计和扩展变得很容易,不需要大的改动就可以增加新的功能。通过将应用程序分割成若干独立任务,RTOS大大简化了应用程序的设计过程。
系统配备电源、键盘、复位、LCD显示、ADC、RS485、以太网、JTAG、12C、E2PROM等外围设备。A/D接口威廉希尔官方网站 和嵌入式系统威廉希尔官方网站 分别采用独立模块,利于系统维护、升级。系统自带设置按键和128×64 LCD液晶显示,便于现场调试和参数修改。同时,也可以采用Modbus/RTU或Modbus/TCP通信协议,通过RS485或以太网通信方式将采集数据传送到上位DAS、DCS等系统,由上位系统做统一处理后,用于设备参数监测及作为设备控制的依据。系统具有双网冗余远程通信功能,以提高通信网络的抗干扰能力和可靠性。
系统软件设计与实现
(1)系统软件功能设计
采集系统的软件平台采用源码公开、可移植、可裁剪、可固化的抢占式实时多任务操作系统μC/OS—Ⅱ。实时操作系统RTOS中最关键的部分是实时多任务内核——μC/OS—Ⅱ实时多任务内核。其基本功能包括任务管理、资源管理、系统管理、定时器管理、存储器管理、时间管理、消息管理、队列管理等。这些管理功能是通过内核服务函数形式交给用户调用的,也就是RTOS的APi函数。
μC/OS—Ⅱ实时操作系统内核简化了应用系统的设计,使整个系统结构简洁,使复杂的应用程序层次化。整个系统设计由操作系统和一系列用户应用任务构成,使应用程序更容易设计与维护。系统主函数是首先执行的一个函数,主要实现系统硬件和操作系统的初始化。硬件初始化包括中断、键盘、显示等;操作系统初始化包括任务控制块和事件控制块的初始化,而且在启动多任务调度之前,必须创建至少一个任务。在此系统中创建了一个启动任务,主要负责时钟的初始化和启动,中断的启动,通信任务模十央的初始化、启动以及任务的划分等。要完成系统实时多任务的各种功能,必须对任务进行划分。
系统应用程序根据各个任务的重要性和实时性,把程序分成六个具有不同优先级的任务,它们是系统监控任务、A/D数据采样任务、接收队列监视任务、数据发送任务、键盘输入任务、LCD显示任务。其中A/D数据采样任务实时性要求最高,LCD显示任务实时性要求最低。各个任务具有不同的优先级,通过调用系统挂起函数或延时函数,可以启动具有更高优先级的任务。在设计中,通过对延时参数的设置,系统每隔一定的时钟节拍,就启动接收队列监视任务,定期扫描环形缓冲区。一旦发现读指针与写指针不相等时,就将环形缓冲区中新接收到的数据存入丁EMPBUF中,同时发送信号量SerldSem。数据发送任务接收到信号量,启动运行,完成数据发送功能。
(2)A/D转换程序设计与实现
应用程序A/D转换是数据采集系统的重要组成部分。在μC/OS—Ⅱ实时操作系统内核下,A/D驱动程序的实现过程主要取决于A/D转换器的转换时间、模拟值的转换频率、输入通道数等。典型的A/D转换威廉希尔官方网站 由模拟多路复用器(MUX)、放大器和模数转换器(ADC)三部分组成。图4所示为应用程序调用驱动程序图。驱动程序通过MUX选择要读取的模拟
通道①,延时几微妙以便使信号通过MUX传递,并使之稳定下来。接着,ADC被触发开始转换②。然后驱动程序在一个软件循环中等待③,直到完成转换。在循环等待时,驱动程序检测ADC的状态信号。如果等待时间超过设定的软件定时值,则结束等待循环。如果在循环等待中,检测到ADC发出转换结束的信号时,驱动程序读取ADC转换的结果④,并将结果返回到应用程序⑤。
(3)串口通信程序设计
由于串行设备存在外设处理速度和CPU速度不匹配的问题,所以需要一个缓冲区。LPC2132芯片的异步串口带有16字节接收和发送FIFO。在实际应用中,需要从内存中开辟两个缓冲区,分别为接收缓冲区和发送缓冲区。
串口的操作模式如下:用户任务想写,但缓冲区满时,在信号量上睡眠,让CPU运行别的任务,待ISR从缓冲区读走数据后唤醒此睡眠任务;同样,用户任务想读,但缓冲区空时,也可以在信号量上睡眠,待外部设备有数据来了再唤醒。由于μC/OS—Ⅱ的信号量提供了超时等待机制,串口当然也具有超时读写能力。
图5所示为带缓冲区和信号量的串口接收示意图。数据接收信号量初始化为O,表示在环形缓冲区中无数据。接收中断到来后,ISR从UART的接收缓冲器中读入接收的字节②,放入接收缓冲区③,然后通过接收信号量唤醒用户任务端的读操作④、①。在整个过程中,可以查询记录缓冲区中当前字节数的变量值,此变量表明接收缓冲区是否已满。缓冲区的大小应合理设置,降低数据丢失的可能性,又要避免存储空间的浪费。
系统通信采用Modbus RTU协议,每一个数据字节包括:一个起始位、8位数据位、偶校验位、一个停止位,并采用CRC循环冗余码校验方式。
二、基于ARM的远程I/O数据采集系统设计以及开发系统结构设计
基于嵌入式ARM的远程I/O数据采集系统硬件平台采用32位ARM嵌入式微处理器LPC2132,软件平台采用源码公开、可移植、可裁剪、可固化的多任务实时操作系统μC/0S—Il内核。实时操作系统RTOS的使用使得应用程序的设计和扩展变得很容易,不需要大的改动就可以增加新的功能。通过将应用程序分割成若干独立任务,RTOS大大简化了应用程序的设计过程。
系统配备电源、键盘、复位、LCD显示、ADC、RS485、以太网、JTAG、12C、E2PROM等外围设备。A/D接口威廉希尔官方网站 和嵌入式系统威廉希尔官方网站 分别采用独立模块,利于系统维护、升级。系统自带设置按键和128×64 LCD液晶显示,便于现场调试和参数修改。同时,也可以采用Modbus/RTU或Modbus/TCP通信协议,通过RS485或以太网通信方式将采集数据传送到上位DAS、DCS等系统,由上位系统做统一处理后,用于设备参数监测及作为设备控制的依据。系统具有双网冗余远程通信功能,以提高通信网络的抗干扰能力和可靠性。
系统软件设计与实现
(1)系统软件功能设计
采集系统的软件平台采用源码公开、可移植、可裁剪、可固化的抢占式实时多任务操作系统μC/OS—Ⅱ。实时操作系统RTOS中最关键的部分是实时多任务内核——μC/OS—Ⅱ实时多任务内核。其基本功能包括任务管理、资源管理、系统管理、定时器管理、存储器管理、时间管理、消息管理、队列管理等。这些管理功能是通过内核服务函数形式交给用户调用的,也就是RTOS的APi函数。
μC/OS—Ⅱ实时操作系统内核简化了应用系统的设计,使整个系统结构简洁,使复杂的应用程序层次化。整个系统设计由操作系统和一系列用户应用任务构成,使应用程序更容易设计与维护。系统主函数是首先执行的一个函数,主要实现系统硬件和操作系统的初始化。硬件初始化包括中断、键盘、显示等;操作系统初始化包括任务控制块和事件控制块的初始化,而且在启动多任务调度之前,必须创建至少一个任务。在此系统中创建了一个启动任务,主要负责时钟的初始化和启动,中断的启动,通信任务模十央的初始化、启动以及任务的划分等。要完成系统实时多任务的各种功能,必须对任务进行划分。
系统应用程序根据各个任务的重要性和实时性,把程序分成六个具有不同优先级的任务,它们是系统监控任务、A/D数据采样任务、接收队列监视任务、数据发送任务、键盘输入任务、LCD显示任务。其中A/D数据采样任务实时性要求最高,LCD显示任务实时性要求最低。各个任务具有不同的优先级,通过调用系统挂起函数或延时函数,可以启动具有更高优先级的任务。在设计中,通过对延时参数的设置,系统每隔一定的时钟节拍,就启动接收队列监视任务,定期扫描环形缓冲区。一旦发现读指针与写指针不相等时,就将环形缓冲区中新接收到的数据存入丁EMPBUF中,同时发送信号量SerldSem。数据发送任务接收到信号量,启动运行,完成数据发送功能。
(2)A/D转换程序设计与实现
应用程序A/D转换是数据采集系统的重要组成部分。在μC/OS—Ⅱ实时操作系统内核下,A/D驱动程序的实现过程主要取决于A/D转换器的转换时间、模拟值的转换频率、输入通道数等。典型的A/D转换威廉希尔官方网站 由模拟多路复用器(MUX)、放大器和模数转换器(ADC)三部分组成。图4所示为应用程序调用驱动程序图。驱动程序通过MUX选择要读取的模拟
通道①,延时几微妙以便使信号通过MUX传递,并使之稳定下来。接着,ADC被触发开始转换②。然后驱动程序在一个软件循环中等待③,直到完成转换。在循环等待时,驱动程序检测ADC的状态信号。如果等待时间超过设定的软件定时值,则结束等待循环。如果在循环等待中,检测到ADC发出转换结束的信号时,驱动程序读取ADC转换的结果④,并将结果返回到应用程序⑤。
(3)串口通信程序设计
由于串行设备存在外设处理速度和CPU速度不匹配的问题,所以需要一个缓冲区。LPC2132芯片的异步串口带有16字节接收和发送FIFO。在实际应用中,需要从内存中开辟两个缓冲区,分别为接收缓冲区和发送缓冲区。
串口的操作模式如下:用户任务想写,但缓冲区满时,在信号量上睡眠,让CPU运行别的任务,待ISR从缓冲区读走数据后唤醒此睡眠任务;同样,用户任务想读,但缓冲区空时,也可以在信号量上睡眠,待外部设备有数据来了再唤醒。由于μC/OS—Ⅱ的信号量提供了超时等待机制,串口当然也具有超时读写能力。
图5所示为带缓冲区和信号量的串口接收示意图。数据接收信号量初始化为O,表示在环形缓冲区中无数据。接收中断到来后,ISR从UART的接收缓冲器中读入接收的字节②,放入接收缓冲区③,然后通过接收信号量唤醒用户任务端的读操作④、①。在整个过程中,可以查询记录缓冲区中当前字节数的变量值,此变量表明接收缓冲区是否已满。缓冲区的大小应合理设置,降低数据丢失的可能性,又要避免存储空间的浪费。
系统通信采用Modbus RTU协议,每一个数据字节包括:一个起始位、8位数据位、偶校验位、一个停止位,并采用CRC循环冗余码校验方式。
举报
更多回帖
rotate(-90deg);
回复
相关问答
嵌入式
数据采集
CAN总线
求一种基于DSP的
CAN
总线
通信
控制方案
2021-05-28
930
汽车电子与
CAN
总线
-汽车车身网络
系统
2015-08-18
8101
怎么实现基于
CAN
总线
智能建筑监控
系统
的
通信
协议设计?
2021-06-02
1818
怎么实现基于
CAN
总线
的电动汽车电源管理
通信系统
设计?
2021-05-18
1834
CAN
总线
如何实现
通信
呢?
2020-06-01
2107
怎样去设计一种
CAN
总线
通信
板?
2021-06-03
1054
怎样去设计一种基于STM32F4的
CAN
总线
多节点
通信
系统
?
2021-06-30
1551
如何利用FPGA实现
CAN
总线
通信
节点设计?
2019-09-26
1125
CAN
总线
通信
控制协议的仿真与性能解析,不看肯定后悔
2021-05-21
1310
CAN
总线
通信
板有什么优势?
2019-09-26
1753
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
英国威廉希尔公司网站
william hill官网 版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分