用于卷烟机组的CAN总线实时监听器的设计与实现

发布者:angelbaby最新更新时间:2012-02-22 来源: eefocus关键字:卷烟机组  上位机  控制系统  CAN总线 手机看文章 扫描二维码
随时随地手机看文章

引 言
  
卷烟生产中的卷烟机组主要包括两大部分,上位机MLP,用于为控制系统和检测系统提供操作和显示的装置,它包括一个工业PC和一个监视器。以及下位机SRP,包括传感器,调节装置或者检测装置。SRP主要包括四种结点1)SPS,2)HIP,3)CIS,4)SRM。上位机和下位机各结点之间的通信是频繁的,数据对象众多,数据种类也繁多,包括参数上传,下传,指令,域数据等等,所以在这之中,难免会因为操作人员操作失误或者控制器本身的原因导致错误,但错误发生的时候需要尽快的分析,发现错误,解决错误。因此我们需要建立一个可靠的错误判断机制。本文所讨论的CANBUS实时监听器正是应这种需求而产生的。工作人员根据实时监听器所捕获的并且友好显示的线路上的适时数据便可分析出是哪一方出了问题,出了什么类型的问题。这对安全生产,准确控制起了举足轻重的作用。

(一) 硬件实现
  
在实时监听器的实现中,我们选择采用了周立功公司的PCI-9810非智能CAN接口卡作为硬件接口用于接收捕获CAN总线上的传输数据。如下图
  
PCI-9810非智能CAN接口卡是具有高性能价格比的CAN-bus总线通讯适配卡,它使PC机方便的连接到CAN总线上,实现CAN2.0B协议的连接通讯。它是一款采用专用PCI接口转换芯片设计的非智能型CAN接口卡,即插即用,符合PCI2.1规范。它采用中断接收方式,可最大限度减轻占用PC的负荷;具有最多8帧的数据缓冲区。另外我们采用了周立功公司提供的Windows驱动程序升级版PCI-9810BWDM驱动文件将其驱动。


(二) 界面软件实现
  
界面软件实现主要包括四大方面,1)软件平台的选择,2)对硬件接口CAN卡的使用,3)利用接口接收CANBUS线路上数据的实现,4)所接收数据的处理(主要是判断和显示)的实现。
  
〈1〉软件平台的选择—DELPHI

系统的开发可利用多种程序设计语言,如DELPHI,VB,VC,PB等语言都是面向对象的程序设计语言,但把几者相比较,DELPHI是唯一一套能够同时适用于开发数据库应用、网络及WEB 应用等所有软件的高效率开发环境,且第三方控件多,开发比较快,且设计界面比VB,VC,PB 灵活。基于以上因素,考虑到所要监听CANBUS线路的传输数据信息量大、种类多,以及信息之间相对独立,又有关系且必须备有优良的图形显示等特点,我们选择DELPHI作为软件开发平台。
  
〈2〉对硬件接口PCI-9810的操作的实现
  
在DELPHI程序中,我们是通过调用周立功提供的通用VCI动态链接库来实现对硬件接口PCI-9810的操作的,该动态链接库提供了界面软件能在windows下运行必需的代码和其他资源,其中主要包括十个接口函数如设备相关函数和CAN通讯相关函数以及相关的数据结构的定义。把动态链接库文件夹添加到项目文件夹,然后把库源文件添加到程序代码的应用文件单元即可实现对动态链接库的调用,也就实现了对PCI-9810卡的打开,关闭,启动,复位,收发数据等操作。
  
〈3〉CANBUS线路上数据的实时接收
  
CANBUS线路上的数据对CAN卡来说有着不期性,所以要能对数据实时,准确的接收,必须要通过程序实现一种功能即线路上一旦有数据,就能捕获。对于此,我们采用的方式是利用多线程。即在程序中专门开辟一个线程用于对线路的监听,接收。
  
关于多线程
  
在32位的windows系统中,系统可以同时运行多个进程,一个调入内存并准备执行的应用程序称为一个进程,它由装入内存的程序代码和操作系统及由此创建的应用程序执行环境组成,进程就是应用程序的运行实例。每个进程都有自己私有的虚拟地址空间和动态分配的内存,以及文件,线程和其它模块。每个进程都有一个主线程,但可以建立另外的线程。进程中的线程是并行执行的,每个线程占用CPU的时间由系统来划分,可以把线程看成是操作系统分配CPU时间的基本实体。每个进程也可以同时执行多个线程并由系统不停地在各个线程之间切换。
  
多线程的DELPHI实现
  
虽然Windows 提供了比较多的多线程设计的API 函数,但是直接使用API 函数一方面极其不方便,而且使用不当还容易出错。为避免这个问题,我们采用了DEPHI所提供的方法即继承TThread类产生线程对象。TThread由DELPHI的VCL类库提供用于线程编程。在Tthread类中封装了windows中关于线程机制的API函数,继承TThread类产生的线程对象就代表了实际程序中的一个线程。线程对象通过封装使用线程所需的内容大大简化了多线程问题的处理。另外,在DELPHI中,Tthread在Classes单元中声明,直接从Tobject继承下来的,因此,它不是组件。Tthread是个抽象类,所以不能创建Tthread的实例,而只能创建其派生类的实例。在本程序中利用Ttread类来编写多线程的步骤如下
  
(1)从Tthread类派生出一个新的线程类。即建立的TreceiveThread。
  
(2)创建线程对象。即在Types里面定义thread1:TreceiveThread。
  
(3)在DELPHI自动生成的用于保存派生类代码的新的单独的文件中重载Execute过程,在该过程中将对CAN线路上的数据实时接收并调用对接收到的数据进行处理的基本显示和分类显示函数。在Execute过程中使用了repeat…..until语句来判断过程是否结束。
  
(4)如果Execute过程执行完毕,则该线程就结束了,并释放线程占用的栈空间。
  
〈4〉对所接收的数据进行处理
  
对数据的实时处理包括两方面:1)将接收到的数据桢按照接收数据的数据结构完全显示,这包括桢类型,桢格式,桢ID,桢数据等等。2)将数据进行更深一层的分析判断出数据的真实含义,并将其填入对应的文本框或者画出对应的状态图等等。
  
(1)对于第一种基本显示,我们采用的是用DELPHI提供的listbox控件进行
  
滚动显示,listbox的容量足够本显示的需要,另外,我们还添加了一个按钮控件用于按照操作人员的需要随时清除listbox里面的内容。
  
(2)对于第二种分类显示。对于不同的数据,我们将用不同的分析处理方法进行显示。根据数据的现实含义,主要分为1)上,下传参数。2)域请求和域数据,3)下传指令和上传消息。下面将分别介绍处理方法:

1 利用数据库系统进行上,下传参数的显示
  
在CAN线路上传输的参数不仅多达近200种,而且有上传和下传之分,可见所要显示的量之大,加上上下传的参数有着相同的数据结构,所以我们采用查询预先建立好的数据库的方法来进行显示。
  
关于数据库系统数据库系统为我们提供了一种把与我们的工作和生活紧密相关的信息集合在一起的方法。它还提供了在某个集中的地方存储和维护这些信息的方法。数据库系统主要由三大部分组成:数据库管理系统,数据库应用程序,数据库。[page]

数据库系统的DELPHI实现 (1)建立数据库,在本项目中,我们是利用Microsoft Access 建立了一个关系数据库(由若干表组成的数据库)。其中包含了一张表,该表的字段分为id表示用以判断的字符串,以及location表示参数值应填的文本框代号。(2)在应用程序中要实现对所建立的数据库的访问需要用到数据库引擎和数据库访问组件以及数据库控制组件,DELPHI7中提供了BDE,ADO数据引擎,考虑到项目中的数据库应用相对简单,我们选择了常用的BDE(Borland Database Engine)控制读取所建立的数据库,具体操作为1)利用DEPHI7文件夹中的BDE Administer为所建立的数据库创建别名。2)在窗体中添加数据库访问组件和数据库控制组件(包括Data Access页和BDE页中的组件)来实现应用程序与数据库之间的联系。项目中,我们用Table组件来封装数据表,通过BDE数据引擎从数据库表格中取得数据(参数值应填的文本框代号)并通过DataSource组件将数据传递给数据控制组件TDBEdit,3)在程序中,我们通过TTable提供的Gotokey的方法实现对数据库的查找,以及通过对TDBEdit中的数据的使用。实现了将不同参数值填到其唯一对应的文本框中。

2 域请求和域数据的处理
  
因为域数据的多类,多变性,以及不确定性,我们不能用处理参数一样的数据库或者其他统一处理的方法,所以在程序中我们使用的是用多层复合选择语句进行判断然后根据不同的域数据做出不同的处理,域数据是根据标识符上传的,只有数据没有别的判断信息,对域数据的判断决定于域请求的数据内容,因此在程序中首先判断桢是否为域请求,如果是,则将桢数据赋值对应的变量,这些变量保存的便是域数据的判断信息,而如果根据标识符判断出为域数据,则根据变量保存的信息进行对应的处理。
  
在域数据的处理中,很多情况是要绘出曲线。对此,我们选择了DELPHI的Tchart控件。利用其Series属性里面的Fast-line,将收到的数据正确的绘成曲线。

3 指令和消息的处理
  
指令和消息的处理类似于域数据的处理,也是采用多层复合选择语句进行判断,然后做出相应的处理,在此,相应的处理即将指令,消息的相关信息填入文本框。
  
〈5〉软件流程图

  
数据处理函数dataprocess()流程图

结 论
  
在本项目中,CAN卡PCI-9810的控制器是SJA1000,在收发数据方面它支持正常和只听两种模式,在监听器的实际运行中我们选用只听模式进行线路监听,取的了不错的效果,而且在界面的设计过程中上我们添加了发送部分,这是便于进行CAN卡的检测以及数据接收的调试,此时需要选择正常模式。
  
本文作者的创新点:结合实际情况的具体需要,合理的选用了Delphi作为软件开发平台,在实时性方面,我们选择了Delphi自身提供的线程类,而不是按照常规选择windows提供的API函数,从而使程序的设计变的简洁,另外在数据的处理方面,我们不仅采用了通常的数据库方法,而且还根据实际需要采用了其他简易可行的方法。很好地完成了需求。
  
总之,借鉴前者地经验加上实际地创新我们成功设计了实时监听器并通过了实际检验,本项目所设计的实时监听器在实用性,实时性,准确性,以及友好性上都是很不错的。

关键字:卷烟机组  上位机  控制系统  CAN总线 引用地址:用于卷烟机组的CAN总线实时监听器的设计与实现

上一篇:USB/SATA升级 Intel 8系芯片组规格曝
下一篇:基于PCIe总线的航空视频采集记录系统的设计

推荐阅读最新更新时间:2024-05-02 21:55

基于单片机的自动巡线轮式机器人控制系统设计
摘 要 :设计了一种自动巡线轮式行走机器人控制系统,采用AT89S52型单片机作为主控CPU,外加一个复杂可鳊程逻辑器件(CPID)协助CPU处理数据,扩展了程序参数存储器,能够进行检测引导线和直流电机、舵机的PWM控制。 关键词 :控制系统;复杂可编程逻辑器件;存储器;光电检测;脉冲宽度调制 1 引言 轮式移动机器人是机器人研究领域的一项重要内容.它集机械、电子、检测技术与智能控制于一体。在各种移动机构中,轮式移动机构最为常见。轮式移动机构之所以得到广泛的应用。主要是因为容易控制其移动速度和移动方向。因此.有必要研制一套完整的轮式机器人系统。并进行相应的运动规划和控制算法研究。笔者设计和开发了基于5l型单片机的自动巡线轮式
[单片机]
基于单片机的自动巡线轮式机器人<font color='red'>控制系统</font>设计
汽车为什么选择了CAN总线技术?
围绕“汽车为什么选择了CAN总线技术?汽车CAN总线技术到底是怎么一回事?采用汽车CAN总线技术有哪些优点?汽车总线的发展趋势”等问题作了一个浅短的介绍: 1. 汽车为什么选择了CAN总线技术? 现在总线技术有很多种。从成本上讲,RS-232/485的成本都比CAN低;速度上讲,工业以太网等也都不错。为什么唯独CAN在汽车电子中得到亲睐? 从成本上来说,CAN比UART、RS-232/485高,但比以太网低;从实时性来说:CAN的实时性比UART 和以太网高,为了保证安全,车用通信协议都是按周期性主动发送,不论是CAN还是LIN,对实时性要求高的消息其发送周期都小于10ms(每辆车都有好几 条这样的消息),发动机、ABS和变
[嵌入式]
基于超声波传感器的水位自动控制系统研究
0 引 言     目前国内在液位自动控制方面缺少长期可靠的使用范例,还没有适用于液位测量和自动控制的定型产品。因此,开展液位自动控制的研究工作十分必要。     系统为一个水位监测与控制装置,通过键盘可以设定瓶内液位(0~25cm内的任意值),并通过控制电磁阀(或类似于电磁阀的装置)使瓶内的液位达到设定值,液位超过25cm或低于2cm时会发出警报。显示器能实时显示当前液位状态和瓶内液体重量以及阀门状态。 1 系统功能概述及框图     本设计利用MCS-51 单片机结合数字芯片、模拟电路,完成对水位的检测和自动控制。     基本工作流程为:主机通过键盘设定自己和从机的液位,超声波传感器测出当前水位对应的电压
[嵌入式]
基于PLC的大型超滤污水处理控制系统
随着水处理工艺流程的快速发展,其控制方法也越来越复杂,而对于大型超滤污水处理系统将存在更多的自动控制难题。如何实现超滤污水处理系统高效、稳定、可靠及安全的运行,将成为大型超滤污水处理系统未来大规模发展所需研究的重点。本文以北京市小红门污水处理厂60万吨/天超滤污水处理系统为研究对象,通过对反洗和气擦洗时廊道竞争问题的解决,不但保证了超滤膜的安全,同时也实现了产量的最大化;针对于来水量的非稳定性问题,采用自适应梯阶进水控制方法,实现了“按需控制”的理念,即根据当前实际需要处理的水量去控制系统的处理能力,保证了整个超滤系统的持续稳定的运行;水锤问题一直是限制大型超滤控制系统发展的问题之一,本研究通过采用变频S曲线停泵及PWM阀门控制技
[嵌入式]
基于工控机的锅炉控制系统的设计与应用
    锅炉是广泛应用于石油化工、热力发电等工业生产场合的蕈要动力设备之一,其主要作用是提供合格的蒸汽。锅炉控制系统的任务是确保蒸汽的温度、压力及流量等参数符合工艺要求;维持汽包水位和炉膛压力在一定的范围内以保证设备安全运行;保证燃烧充分以提高生产的经济性、避免环境污染。因此,锅炉控制系统的工作质量直接影响着锅炉的正常生产,是其安全运行的重要保障。 1 锅炉控制方案的设计     1.1 汽包液位的控制     锅炉汽包液位是确保安全生产和提供优质蒸汽的重要参数。液位过高会影响汽、水分离效果,使蒸汽带液,损坏下游设备;水位过低,会影响水在汽包中自然循环的正常进行,甚至使部分管壁过热而爆管。因此必须严格将水位控制在规定的范围。   
[嵌入式]
三自由度直升机的嵌入式控制系统
三自由度直升机可以应用于飞行器控制系统的半实物仿真试验和性能测试等场合,用以模拟横列式直升机,即倾转旋翼机的直升机状态 。其控制系统属于典型的多输入-多输出系统,具有非线性和强交叉耦合性,不易用传递函数和状态方程描述,是控制系统中较为复杂的被控对象 。实验室配备的三自由度直升机平台采用PC机+运动控制卡的控制方案,运动控制卡实时测量并控制三自由度直升机平台的飞行姿态,控制量的计算则由PC机完成 。该方案偏离了真实直升机的飞行控制系统方案。为此,本文采用嵌入式设计方法重新设计了三自由度直升机的控制系统。在此基础上,改变外接的飞行摇杆的俯仰角和横侧角,并以此为指令信号,实时控制三自由度直升机平台的飞行姿态。通过对飞行摇杆上快捷键的
[工业控制]
三自由度直升机的嵌入式<font color='red'>控制系统</font>
CAN总线通信解密方法
   在海思向客户LonWorks现场总线技术服务中,常常会遇到LonWorks网络与CAN总线建立无缝连接的情况。如果无法从CAN设备厂商取得CAN总线通信协议,如何破解CAN总线协议是必须要解决的课题。本文介绍一种CAN总线解码方法,供大家学习参考。    采用示波器侦测串口总线的通信是比较常用的一种解码技术。以Pico示波器为例,Pico示波器具有串行解码的功能,能够对CAN、FlexRay、I2C、I2S、SPI、LIN或UART等串行总线进行解码。Pico示波器比较适合做串行解码,因为它们的深度存储器可以让软件采集较长时间、不间断的数据,尤其是6000系列能够在几秒内采集数千个数据帧存入到512M的样本存储器。下面将介绍如
[嵌入式]
plc控制系统原理及分类
  PLC内部工作方式一般是采用循环扫描工作方式,在一些大、中型的PLC中增加了中断工作方式。当用户将用户程序调试完成后,通过编程器将其程序写入PLC存储器中,同时将现场的输入信号和被控制的执行元件相应的连接在输入模块的输入端和输出模块的输出端,接着将PLC工作方式选择为运行工作方式,后面的工作就由PLC根据用户程序去完成,概述图是PLC执行过程框图。PLC在工作过程中,主要完成六个模块的处理。   1.电源组件电源组件用于提供PLC运行所需的电源,可将外部电源转换为供PLC内部与案件适用的电源。2.微处理器CPU及存储器组件微处理器CPU是PLC的核心器件,CPU因生产厂商各有不同,有采用市场销售的标准芯片,也有采用可编程序
[嵌入式]
小广播
热门活动
换一批
更多
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多精选电路图
换一换 更多 相关热搜器件
更多每日新闻
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved