历史上的今天
返回首页

历史上的今天

今天是:2024年12月17日(星期二)

正在发生

2019年12月17日 | 分析仪器CAN网络通信设计

2019-12-17 来源:elecfans

  基于单片机(80C196)或微处理器(DSP、ARM 等)的多组分气体分析仪采用功能强大的CPU,可实时快速测定各种燃烧设备的各项热工参数。根据测量数据,通过自动调节装置调整风量,保持适当的空气/燃料比,使燃料系统达到最佳运行状态,以获得最高的燃烧效率和最低的燃料消耗。仪器还可以测定CO、SO2、NO、NO2、烟气黑度等参数,并配有液晶屏、键盘等外设。


  CAN(CONtroll Area Network)是国际上应用最广泛的现场总线之一,使用了一种串行多控制方通信协议,可以有效地支持分布式实时控制,并且具有很高的安全性和高达1Mbps的通信速率。


  一个包含PC 机和n-1(n≤110)个智能节点的CAN 总线网络结构图如图1 所示。

  

 

  图1 n 个节点的CAN 网络结构图

  信息的传输采用CAN 通信协议,传输介质采用双绞线,如果需要进一步提高系统的抗干扰能力,还可以在控制器和传输介质之间加接光电隔离,电源采用DC-DC 变换器等措施。


  1 分析仪器CAN 网络应用层协议的制定

  CAN 的国际标准中只定义了物理层和数据链路层的规范,由于本项目构建的CAN 总线网络节点数目不多,所有节点都由项目组自行设计,不需要与国际标准设备进行接口,所以,这里根据本项目的具体情况,制定了一个简易的CAN 应用层协议。


  根据厂方要求,网络初步规划应至少可容纳16 个节点。上位机收集各分析仪器的信息,包括气体组分分析含量、出错信息和被测气体的一些参数,如温度、压力、流量等,也返回一些控制信息给智能节点。在每个分析周期从节点的气体组分分析结果送往主节点,主节点待收到所有待测组分含量后,将所有信息一并送往上位机。网络中的任一台分析仪器均可做为主节点或从节点,甚至在没有上位机的情况下也可以做为上位机。


  在CAN 系统中,以11 位(标准帧)或29 位(扩展帧)的标识符来标识数据的含义,标识符决定了信息的优先权和等待时间,同时也影响信息滤波的适用性。因而,合理、高效的信息标识符ID 分配方案是充分发挥CAN 总线性能的前提条件。


  分析仪器主控制器之一F2812 DSP 片上共有32 个邮箱,在SCC 模式下0-15 邮箱可用,在eCAN 模式下,32 个邮箱全部可用,可以很方便地实现主节点对从节点信息的接收和存储。故推荐采用主控制器为F2812 的分析仪器作为该网络中的主节点,选择eCAN 模式,使用标准标识符(11 位),对其进行如表1 所示的静态分配策略,即可满足上位机和主节点识别帧来源和帧意义的要求。


  2 网络通信程序

  2.1 上位机端初始化

  上位机端主要完成对各分析平台分析结果的采集、显示,使用PC 机加CAN 通讯卡KPCI-8110。KPCI-8110 上集成了独立的CAN 控制器SJA1000。SJA1000 用于移动目标和一般工业环境中的区域网络控制(CAN),在使用前要先对其进行初始化。


  上位机显示界面采用适合快速开发的可视化面向对象高级语言VB 来编写。KPCI-8110CAN 适配卡提供.dll 驱动和.lib 库函数,通过在VB 程序中调用相关的驱动函数就可以实现CAN 适配卡的配置和数据的读写。


  上位机端接收数据的流程如图2 所示。

  

 

  图2 上位机接口函数使用流程图


  数据接收到上位机之后保存在一个大容量的内存缓冲池内,用户只需实时通过函数CAN_ReadDataNum(mindex) 查询缓冲池内的数据量, 再通过函数CAN_ReadBlockData(mindex,num,obyte)及时读走保存即可。其中obyte 为接收数据起始指针。


  CAN_ClearBlock(mindex,num,obyte)为清空从obyte 指针开始的缓冲池空间。


  注意:由于SJA1000 CAN 控制器每个地址存储8 位数据,而F2812 内置CAN 控制器每个地址存储16 位数据,而且标准数据帧的标识符也不是从字节的起始位开始的,所以定义标识符的时候要按照不同控制器的要求来定义。例如F2812 内置CAN 控制器定义数据帧标识符为344 0000(bit28-bit18 为标识符位),SJA1000 独立控制器对应的标识符应为1A20(bit15-bit5 为标识符位)。

推荐阅读

史海拾趣

意瑞(COSEMITECH)公司的发展小趣事

随着技术的不断成熟和产品的不断优化,意瑞半导体的市场影响力逐渐扩大。其高集成度、高性能的芯片广泛应用于国内外主流OEM及全球知名Tier1厂商。在汽车电子领域,公司布局了动力总成、车身控制、电源管理和底盘安全等模块,其产品在多家主机厂成功导入并量产,性能超过了国外老牌芯片,成为该品类中本土鲜有的实现汽车市场大批量出货的产品。

台湾肯尼威(CANNYWELL)公司的发展小趣事

随着公司产品的逐渐推广,肯尼威面临着日益激烈的市场竞争。李明深知,要想在竞争中脱颖而出,必须走品质之路。他引入了国际先进的质量管理体系,率先在同行业中通过ISO9001认证。这一举措不仅提高了产品质量,也提升了公司的品牌形象。同时,公司还建立了严格的品质检测流程,确保每一件产品都符合高标准的品质要求。

Altitude Technology公司的发展小趣事

随着产品的不断升级和市场的不断扩大,Altitude Technology开始将目光投向海外市场。公司制定了详细的市场拓展计划,通过参加国际电子展会、建立海外销售渠道等方式,积极推广自己的产品。经过一番努力,Altitude Technology的产品逐渐在国际市场上获得了认可,公司的知名度也得到了提升。

Gardner Denver公司的发展小趣事

随着产品的不断升级和市场的不断扩大,Altitude Technology开始将目光投向海外市场。公司制定了详细的市场拓展计划,通过参加国际电子展会、建立海外销售渠道等方式,积极推广自己的产品。经过一番努力,Altitude Technology的产品逐渐在国际市场上获得了认可,公司的知名度也得到了提升。

GISMA Steckverbinder GmbH公司的发展小趣事

随着全球电子市场的不断扩大,GISMA积极实施国际化战略,努力拓展海外市场。公司不仅在欧洲市场建立了稳固的地位,还逐步将业务拓展到亚洲、北美等地区。通过参加国际展会、建立海外销售网络等方式,GISMA成功吸引了众多国际客户的关注,进一步提升了品牌知名度和市场占有率。同时,GISMA还积极寻求与国际知名企业的合作机会,共同推动电子行业的发展。

aconno公司的发展小趣事

在追求经济效益的同时,aconno公司也积极履行社会责任,致力于实现可持续发展。公司注重环保和节能,采用环保材料和工艺,减少生产过程中的污染排放。此外,aconno还积极参与社会公益事业,为弱势群体提供帮助和支持。这些举措不仅提升了公司的社会形象,也为公司的长期发展奠定了坚实的基础。

以上便是关于aconno公司在电子行业中发展起来的5个相关故事。这些故事展示了aconno在创新、品质、市场、人才和社会责任等方面的努力和成就,为公司的长远发展奠定了坚实的基础。

问答坊 | AI 解惑

Windows CE提供优质智能家居生活

随着社会的发展,人们对于居住环境的安全、方便、舒适提出了越来越高的要求,希望回到家即可得到100%的休息与享受,尽可能的减少每天所进行的无用功,而出外时如有非法进入、火灾、液化气泄漏等情况,可自动通知户主并报警。因此,智能家居在这种 ...…

查看全部问答>

$$$咨询:WINCE下手写软件的价格

    我公司一产品上使用了windows ce 4.2 net 版本, 处理器为ARM4VR,分辨率为240*320,现在想寻一款手写软件, 现咨询一下购买这种软件要多少钱?     胡先生   13320807449   QQ:562850914  &n ...…

查看全部问答>

新手上路,求助

本人是个新手,想自学单片机,但是不知道该怎么入手,有高手介绍下经验么?上网搜了,可是还是没有系统的认识,另外,现在学什么类型的,更容易上手,有知道的帮忙回答下,万分感谢~…

查看全部问答>

Wince 是否支持大页nand flash?文件格式是dosfs吗?

Wince是否支持大页nand flash?文件格式是dosfs吗? Wince支持的Nand的大页模式和小页模式是同一个文件系统吗?…

查看全部问答>

Zstack学习经验点滴:如何使用OSAL的事件?

如何使用OSAL的事件?OSAL通过一个16位宽度的数组来管理事件,意味着OSAL最多可以支持16个事件,其中最高位(0x08000,SYS_EVENT_MSG)系统保留,用户可以使用的事件有15个。事件的使用很简单:1)需要找个地方定义事件的ID,实际上是指定该事件占 ...…

查看全部问答>

CAN一次最多发多少字节数据?

TxMessage.DLC最多是8字节,我一次要发24个。分三次发,发送程序如下TestStatus CAN_Polling(void){  u32 i = 0;  u8  m=0;  //每次发送的字节数  u8  n=0; ...…

查看全部问答>

交流群创建喽

本人非常之喜欢这个论坛,所以私自创建了一个群, 群号:168221728 大家可以加这个号,方便交流 …

查看全部问答>

uc/os求助

如何建立两个任务,一个检测两次按键的时间间隔,并将此值存放在全局变量KTime中,另一个任务按此时间间隔定时向电脑屏幕发出字符“M\"及该时间间隔信息??????????????…

查看全部问答>

MSP430G2程序设计--基于CCS5.1

Simplifying MSP430G2 Programming February 27, 2012, 8:58 pm I just started playing with TI’s MSP430 LaunchPad (MSP-EXP430G2) a few weeks ago and have found it surprisingly capable so far. But having to remember all those reg ...…

查看全部问答>