历史上的今天
返回首页

历史上的今天

今天是:2025年03月23日(星期日)

正在发生

2018年03月23日 | 采用模块化编程设计的基于CAN总线的智能继电器研究

2018-03-23 来源:eefocus

     为解决电气系统中控制距离短,开关响应实时性不强,一般智能节点容易受到外界干扰,系统掉电后数据丢失等一些列问题,结合微电子技术、微处理器的特点,以及CAN总线的优势,对以AT89C51和SJA1000为控制核心,采用模块化编程设计的基于CAN总线的智能继电器进行了研究。研究结果表明,能更进一步提高系统的控制距离,有效检测系统中的大电流,并及时通断开关,对突发性电源故障能进行可靠检测,并及时保存重要数据,提高了系统的抗干扰性,也可以接入CAN总线网络,使得对继电器的控制变得更为灵活。


    过去的几十年里,在很多电气设备中,比如车辆、舰船、飞机等中的电气用电设备,它们一直采用保险丝盒断路器等被动防护装置,致使无法故障预警,故障诊断起来也比较困难,严重影响了设备的整体性能;同时,由于总线类设备能提供信息查询、故障记录、参数保护等功能。因此在一些底层器件中引入总线技术,能更方便用户配置系统,就像设备中多了很多对眼睛,可以很好地把握设备的工作情况。所以研发具有预警和诊断功能的新器件势在必行。

    本文中主要是在继电器中引入总线技术,使得继电器具有总线通信功能。通过总线继电器控制模块可以将具有智能化、网络化功能的电器节点模块有机的组合起来,构成一种新的电气负载管理系统,即针对系统发出的指令进行逻辑切换和信息反馈,以实现数据采集、过载保护、状态检测及故障记录等功能,大大提高了系统的可靠性、可维护性、可扩展性。下面将结合总线智能继电器的功能从5个方面来研究它的软件设计:系统初始化、报文的收发处理、信号的数据采集、看门狗程序的软件设计及数据保护等5部分。

    1 系统的初始化

    系统的初始化包括2部分:一部分是单片机初始化;另一部分是SJA1000的初始化。

    1.1 单片机的初始化

    文中使用的单片机是美国Atmel公司生产的AT89C51单片机,该款单片机的特点是低电压、高性能、CMOS工艺、片内含有4 KB可反复擦写只读存储器和128 B的随机存储器,兼容MCS-51指令集,片内还含有8位的CPU和FLASH存储单元,广泛灵活运用于各种控制领域。设计中使用该单片机完成和SJA1000的端口初始化、外部中断设置、定时器设置。其中和SJA1000的端口初始化用来片选SJA1000,外部中断0用来检测电源故障,外部中断1用来读取SJA1000收到的报文,定时器0用来看门狗定期复位,定时器1用来记录继电器触点接通时间。图1是单片机初始化流程图。

   a.JPG

    1.2 SJA1000的初始化

    SJA1000是一款总线控制器,它的作用是为了保证总线控制器局域网络中的网络层次结构中数据链路层和物理层的可靠通信,这一功能的实现主要得益于该芯片上具有可编程的逻辑电路,并且还有和微处理器相连接的接口。它内部由很多寄存器,微控制器通过对这些寄存器控制,可以设置它的工作方式、工作状态、报文的收发格式。

    SJA1000的初始化主要是完成一些寄存器的配置。要完成这些配置,该控制器必须处于复位模式下。它进入复位模式的情况通常有3种:上电复位、硬件复位和软件复位。复位后,需要设置的寄存器通常有以下几个:控制寄存器、模式寄存器、时钟分频寄存器、验收滤波器、中断使能寄存器、总线定时器和输出控制器。完成这些寄存器的配置后,就要退出复位模式,进入工作模式。它的初始化流程图如图2所示。

    2 报文的收发处理

    对SJA1000的操作通常有2种方案,一种是时序模拟模式;另一种便是用扩展RAM的模式来完成。该控制器通常有2种读写模式,一种是Intel模式;另一种是Motorola模式,由于它的管脚设置和普通的RAM管脚设置相似,因此文中采用扩展RAM的模式来实现总线的报文收发。总线继电器的报文的处理包括2部分,即数据的接收处理,报文的发送处理。

    2.1 报文的接收

    报文的接收是由该控制器自动完成,文中要做的就是要把信息从接收缓存中读出来,然后将读出来的信息存放在数据存储器中。一条数据报文能否被成功地接收由验收滤波器模式控制位、验收代码寄存器、验收代码屏蔽寄存器、报文标识符共同决定。只有通过验收滤波器的过滤的报文才能被接收,否则是不能送到控制器接收缓冲区的。当报文成功通过验收滤波器并被送入接收缓冲中后,会置位接收缓冲区状态位,如果这个时候使能接收中断RIE,就会产生接收中断,使得控制器的INT的电平发生变化,此时中断微控制器。接下来微处理器的任务大致由下面三步分组成,首先要监视控制器的状态,确定一下是否有需要读取的报文;其次便是将接收缓冲区中的数据读出来存放到数据存储器中并需要置位接收处理标志;最后便是处理接收到的报文。需要注意的是处理接收报文的目的主要是为驱动继电器做准备。报文的接收处理流程图如图3所示。

   b.JPG

    2.2 报文的发送

    报文的发送负责将待发数据发到总线上。第一屏蔽相关中断,避免收到的数据对发送的影响;第二要对和报文发送相关的数据寄存器进行设置,确定通信的目标节点,同时准备好要发送的数据;第三在发送之前要对SJA1000发送缓冲区是否有待发送的数据进行检查,如果没有待发送的数据或者正在发送的数据,则可以将准备好的数据发送到控制器发送缓冲区做好发送准备,否则新的报文是不能写入发送缓冲区的;第四就是把要发送的报文写入控制器发送缓冲区,准备发送;第五就是置位发送请求标志位,之后控制器会自动完成报文的发送。信息的发送流程图如图4所示。

   c.JPG

    3 电流信号的数据采集

    系统电流信号的采集,文中采用的是美国国家半导体生产的8位分辨率、双通道A/D转换芯片。文中之所以使用该款芯片,主要是考虑到它的体积较小、兼容性强、性价比高,更为重要的是它的数据是串行输出,节约了单片机的管脚资源。

    一般情况下,和单片通信的管脚由以下4个:片选端CS、时钟输入端CLK、数据输出端DO、模式选择输入端DI。通过对时序图的分析发现,DI和DO不是始终同时有效,因此在设计电路时,可以将此二管脚并接到一起作为一个管脚连接到单片机上。ADC转换流程大致如下。首先是使能选中芯片,即要拉低片选CS,并且要保持该电平到转换完毕,因为当CS置位的时候,该芯片是不能使用的;其次是要发送一个起始信号,这就需要在第一个时钟的下降沿到来之前拉高DI;再次是要输入通道选择控制字进行转换通道选择,通道控制的选择需要在接下来第2、3个脉冲下降沿来临之前输入两位数据文中先后对DI输入1,0;最后是从DO端输出AD转换结果,即在先在第4时钟下降沿到第11个时钟下降沿之间的每一个下降沿都会输出A/D转换结果,高位在前,共8位,接下来在从第11个时钟下降沿到第19个时钟下降沿的每个时钟下降沿又一次

    输出和之前相反的数据,也是8位,只是这个时候是低位在前;最后便是拉高CS,禁止使能A/D转换,对该2个8位数据进行比对,将转换结果送到数据寄存器中。图5是ADC转换的流程图。

    4 看门狗MAX813L

    在单片机构成的系统当中,单片机的工作往往会受到来自外界干扰,导致程序陷入死循环,进而使得单片机无法正常工作,单片机的手动复位又有其局限性,为此文中采用专门监测单片机运行状态的芯片MAX813L。该芯片不仅能实现系统复位,还可以监测电源状态,当出现掉电或者低压等情况时保护重要数据。

    4.1 系统复位

    当系统受到某些干扰的影响,使得系统程序跑飞,当该芯片的看门狗信号输入端WDI在超过1.6 s时间内得不到清除定时器的脉冲时,看门狗输出管脚WDO将由高电平变为低电平,根据图6会发现,复位输入端MR会被拉低成低电平,当这个低电平保持时间在140 ms以上时,复位信号输出端RST会复位信号,从而复位CPU。根据前面分析,系统的正常运行需要最多以1.6 s的时间间隔给看门狗输入端输入脉冲。文中使用定时器0的工作方式1每隔50 ms给看门狗芯片一个清定时器脉冲。喂狗的实现代码如图7所示。

   d.JPG

    4.2 电源监视

    当电源故障输入管脚的电位低于1.25 V时,电源故障输出端的电平会由高变低,导致微处理器P32管脚的电平发生变化,进而触发外部中断0,执行中断服务程序,即冻结寄存器的内容,保存RAM中的数据,激活掉电模式,进入掉电工作状态。要想退出掉电模式,系统必须复位。电源监视的部分代码如图8所示。

   e.JPG

       5 状态参数保护

    智能继电器在信号处理的过程中,有很多参数需要存储,而且需要在外部供电掉电的情况下,能够继续保持到下次外部供电恢复。一般的参数存储方法是使用静态RAM外加铬镍电池及外加辅助电路,但是该种方法存在很多弊端。因此,文中采用AT24C02来实现数据保护。这主要得益于它体积小、使用灵活,而且不会因为系统掉电、干扰等原因丢失数据,有效地保存各种参数。图8的参考代码可以实现根据负载电流的过流情况发送不同的控制指令并及时保存保存此时的负载电流。

    6 结语

    本文设计的CAN总线智能继电器除了具备普通继电器的接通和关断功能以外,还具有如下功能:现场总线通信功能,即改变传统系统中点对点控制方式,通过总线指令实现继电器的通断,减轻设备总量;负载电流检测功能,即实时监测继电器负载电流状况,并且是可查询的;负载电流过载保护和短路跳闸功能,并且跳闸阈值可以离线设置;继电器的触点通断状态实时监测功能,即可有效防止异常通断的发生;历史工作记录查询功能,即可以查询诸如过载电流、短路情况、触点状态、触点接通时间等状态参数,并且掉电后,不丢失这些数据。


推荐阅读

史海拾趣

ADLINK公司的发展小趣事

ADLINK 是一家全球领先的嵌入式计算解决方案提供商,以下是该公司发展的五个相关故事:

  1. 公司创立与初期发展: ADLINK 成立于1995年,总部位于台湾新北市。公司专注于为工业自动化、通讯、医疗保健、交通运输等领域提供高性能的嵌入式计算和连接解决方案。在创立初期,ADLINK 主要专注于硬件产品的开发和销售,如嵌入式计算板卡、模块、工业计算机等。

  2. 技术创新与产品扩展: 随着市场需求的不断变化和技术的发展,ADLINK 不断进行技术创新,积极拓展产品线。除了传统的嵌入式计算硬件产品外,公司还推出了嵌入式操作系统、软件工具和解决方案等,以满足客户在物联网、人工智能、工业4.0 等领域的需求。

  3. 全球业务布局与国际化发展: ADLINK 在全球范围内建立了广泛的销售网络和服务体系,拥有多个全球研发和生产基地,并在美国、欧洲、亚洲等地设有分支机构和办事处。通过与全球领先企业的合作和市场拓展,ADLINK 的产品和解决方案已经覆盖了全球100多个国家和地区。

  4. 合作伙伴关系与客户案例: ADLINK 与世界各地的行业领先企业建立了紧密的合作伙伴关系,共同开发创新性的解决方案,应用于工业自动化、智能交通、医疗保健等领域。例如,公司与德国西门子、美国英特尔等知名企业合作,在工业物联网、边缘计算等领域取得了一系列成功案例。

  5. 未来展望与持续发展: 面对快速变化的市场环境和日益激烈的竞争,ADLINK 将继续致力于技术创新和产品研发,不断提升解决方案的质量和性能,以满足客户日益增长的需求。公司将继续秉承“创新、合作、可靠”的核心价值观,努力成为全球领先的嵌入式计算和连接解决方案提供商。

CHERRY公司的发展小趣事

1953年,一位名叫Walter Lorain CHERRY的德国年轻人在美国创立了Cherry公司,地点选在了一家餐厅的地下室。当时,Cherry的主要业务是生产微动开关,这种开关被广泛应用于各种电子设备中。Cherry的微动开关因其高品质和可靠性而赢得了市场的广泛认可,逐渐成为了行业内的佼佼者。

德欣(COV)公司的发展小趣事

随着技术的不断成熟和产品的不断优化,德欣公司开始积极拓展市场。公司通过参加各类行业展会、举办技术交流会等方式,与国内外客户建立了广泛的联系。同时,德欣公司还注重品牌建设,通过优质的产品和服务赢得了客户的信任和认可。逐渐地,德欣品牌在电子行业中崭露头角,成为了一家备受瞩目的企业。

Bomar Interconnect公司的发展小趣事

为了确保产品质量和稳定性,Bomar Interconnect公司建立了严格的质量管理体系。公司引进了先进的质量检测设备和方法,对原材料、生产过程、成品进行全面检测和控制。同时,公司还加强了员工培训,提高了员工的质量意识和操作技能。这些措施有效提升了产品的质量水平,降低了不良品率,为客户提供了更加可靠的产品和服务。

Abundance Enterprise Company公司的发展小趣事

Abundance Enterprise Company成立于XXXX年,初期专注于电子元器件的研发和生产。公司凭借对市场需求的敏锐洞察,迅速定位在高端电子元器件市场,通过精准的市场定位和高质量的产品,逐渐在电子行业中占据了一席之地。初创团队凭借扎实的技术基础和不懈的努力,成功打破了国外品牌在高端市场的垄断,为国内电子元器件行业树立了新的标杆。

地博电子(DIBO)公司的发展小趣事

为了进一步拓展市场,地博电子在2016年成立了湖南地博光学材料有限公司,并建立了覆盖全国的营销网络。这一举措使得地博电子的产品能够更快速地触达目标客户,提高了市场占有率和品牌影响力。同时,全国营销网络的建立也为地博电子的未来发展提供了更广阔的空间。

问答坊 | AI 解惑

转魏坤的手持示波器资料

性能与指标: 单通道,彩屏显示,存储回放功能,游标测量功能,频率,幅度自动测量,AC/DC偶和方式选择,实时/存储工作方式选择 采样率: 60M, 30M, 15M, 6M, ...…

查看全部问答>

自制PIC单片机编程器.

自制PIC单片机编程器.…

查看全部问答>

基于ARM的SD主控制器的设计与实现.pdf

基于ARM的SD主控制器的设计与实现.pdf…

查看全部问答>

WinCE Mobile下D3DM 3D显示问题

我现在要在wince下实现D3DM显示,不知如何利用非托管程序实现.x文件导出的3d图像。 马宁做个讲座的,但最后讲的不是很清楚。他讲的是利用托管程序实现。 不知谁有他讲座的ppt资料。…

查看全部问答>

如何在wince中把图片和表格数据写入到word中?

如何在wince中把图片和表格数据写入到word中? 有没有什么类或者插件可以实现这个功能,似乎挺常用的一个功能。…

查看全部问答>

RETAILMSG() 函数的一个疑惑

问题出处: http://topic.eeworld.net/u/20090324/08/6d13fa10-a840-4f53-8b63-3b58bd5ddbbd.html?seed=11119132 本人在做WinCE5.0的OV9650摄像头抓拍小项目时,发现一个问题啊,手头上在CE4.2和CE5.0这两个版本的Camera驱动中,在camera.cpp文件 ...…

查看全部问答>

BSP编译的问题

我编译BSP的时候出现如下错误,请问是什么原因呢?BUILD: [00:0000000078:ERRORE] \\WINCE500\\PLATFORM\\SMDK2440A\\Src\\Drivers\\Display\\ has sources file and dirs file.…

查看全部问答>

用MSVC1.52和MASM6.11编译Loadcepc.mak问题

请问下 我用MSVC1.52编译 loadcepc.mak  我现在编译它的系统是XP 这个是怎么回事呢? 我要设置些什么呢? 还是本来就系统不对啊 还是要换个系统编译 错误信息: Invoking external build utility... \'NMAKE\' 不是内部或外部命令, ...…

查看全部问答>

DriverWized生成的应用程序

用DS3.2的DriverWized生成一个驱动程序后. 生成的win32 console应用程序无法打开和运行.exe文件. 错误提示: Could not execute: Bad executable format (Win32 error 193) Cannot execute program 为什么我的应用程序无法运行? 另外如何直接在D ...…

查看全部问答>