基于iCAN协议的嵌入式从站模块设计

2014-12-07 06:19璇,尹
电子技术应用 2014年3期
关键词:主站模拟量报文

勾 璇,尹 岗

(内蒙古工业大学 电力学院,内蒙古 呼和浩特 010080)

在工业控制系统网络化趋势下,工业控制系统逐渐采用更加彻底的分布式结构,而在这个发展过程中,现场总线的应用起到了主导作用[1]。作为市场上占有率很高的现场总线之一,CAN-bus总线凭借其良好的开放性、可靠性和实时性以及较低的成本,在工业控制、远程数据传输等领域中获得了广泛应用[2]。

iCAN(Industrial CAN)协议即 “工业CAN应用层协议”是我国自行研发的现场总线技术标准,它的物理层和数据链路层完全兼容CAN2.0B协议规范。iCAN协议优先保障通信数据的可靠性与实时性,以相对简单的方式进行数据通信,有效降低了硬件实现成本。它的出现为中国中小型CAN-bus应用网络提供出一种简单、可靠、稳定的应用层协议,更为可贵的是iCAN协议是我国具有完全自主知识产权的总线协议,它为我国开发具有自主知识产权的现场总线技术标准提供了宝贵的经验[3]。

本设计采用NXP公司的LPC11C14微处理器作为模块核心,这是一种内嵌CAN控制器的32位ARM芯片。初始化后,LPC11C14将进行数据信号的采集,基于iCAN协议的报文解析与打包,并完成于主站的通信功能。

1 总体方案设计

1.1 基本结构及功能

基于iCAN协议的嵌入式从站模块 (以下简称iCAN从站模块)由三部分组成:微处理器系统模块、CAN总线通信模块、本地应用电路。从站模块功能结构图如图1所示。

图1 从站模块功能结构图

iCAN从站模块中选用的微处理器LPC11C14内部嵌入CAN控制器,因此微处理器系统包括微处理器及CAN控制器两部分。iCAN从站模块主要完成三部分功能:(1)通过本地应用电路将不同的应用对象的各功能单元连入iCAN总线,应用对象包括4路模拟量输入、4路模拟量输出、8路数字量输入和8路数字量输出;(2)通过CAN收发器与iCAN主站相连,将采集到的数据上传至主站或执行主站下达的命令;(3)通过串行接口与上位PC机相连,完成对模块用户参数的配置。

1.2 模块硬件电路设计

iCAN从站模块的硬件结构框图如图2所示,主要包括微处理器、通用输入输出模块、CAN通信模块、UART通信模块、存储器扩展模块及各基础电路模块。微处理器采用基于Cortex内核的ARM芯片LPC11C14,其内置1路CAN控制器,通过外接 CAN收发器可方便地进行 CAN数据收发。通用输入输出模块设计了8路数字量输入端口、8路数字量输出端口、4路模拟量输入端口、4路PWM输出端口,这样即可满足在不同工业环境下对接口的要求。LPC11C14芯片拥有8通道10位AD转换器,它们可在8个引脚中实现输入多路复用,利用该芯片这一优势,本模块设计了4路模拟量输入。模块初次上电时,用户可在PC上通过串口调试助手对模块基本参数进行设置,这些参数包括:节点MACID、CAN通信波特率、A/D采样次数、PWM周期。模块的用户参数设置数据通过存储器扩展模块进行保存,当模块再次上电时将从片外存储器中读取已保存数据进行初始化。

图2 从站模块硬件结构图

1.2.1 器件选型

为提高模块的实时性和可靠性,iCAN从站模块选用NXP公司推出的Cortex-M0内核微处理器 LPC11C14,工作频率高达50 MHz,运算控制能力较强,每秒可以执行超过4 500万条指令,并且配有SWD调试功能;同时这款芯片拥有4个通用定时器,16位和32位各两个,均带有PWM输出/匹配/捕捉功能;另外芯片拥有8通道10位ADC,它们可在8个引脚中实现输入多路复用,并且10位转换时间最小仅为2.44μs;芯片的这些特点轻松满足了模块对通用接口上的要求[4]。除此之外,LPC11C14这款芯片是针对控制局域网(CAN)2.0B标准研制的,集成了C_CAN控制器,是业界首款在片上直接支持CAN控制器的Cortex-M0微控制器,是目前市场上性价比最高的一款微处理器,从而解决了使用ARM微处理器所造成的成本提高的问题。

1.2.2 CAN总线通信模块硬件设计

通过CAN总线通信模块可使iCAN从站模块和iCAN总站完成通信,实现将采集数据上传或执行主站下达的命令的任务。CAN总线接口硬件电路如图3所示。

图3 CAN通信接口电路原理图

LPC11C14内部集成有一个兼容CAN2.0B的CAN控制器,只需增加一个 CAN总线收发器就能满足设计要求。ISO1050是TI公司的电气隔离式CAN收发器,此器件有一个被硅二极管绝缘隔栅分开的逻辑输入和输出缓冲器,具有DC 2500V的隔离功能。ISO1050DUB的输入电源与输出电源之间必须用电源隔离模块隔开,但由于本模块硬件部分需要做到尽量小,因此电源隔离这部分需要用户在底板上实现。为实现有效的瞬态保护,在CAN信号输出部分加了低电容瞬态电压抑制器PSM712。PSM712可以保护收发器在瞬时高电压情况下不受损坏。

2 软件设计

2.1 主程序设计

iCAN从站模块的主要功能是对外部数字/模拟输入信号进行循环采集,在接收到主站的命令帧时,向主站发送响应帧并执行命令。所有的功能都在一个主循环里实现。首先进行各功能模块的初始化,初始化完毕后判断是否已进行用户参数配置,配置好参数后,检测是否接收到有效CAN报文,若接收到则进行报文处理。当有中断发生时,执行中断程序。主流程图如图4所示。

2.2 CAN模块通信程序设计

图4 主程序流程图

基于LPC11Cxx系列的微控制器的ZLG_CAN通用驱动库提供了完整、可靠的 CAN操作 API,调用 API既可以完成对CAN控制器和报文对象的配置,并实现CAN中断的管理、CAN通信等工作。但是,通过ZLG_CAN通用驱动库来进行应用编程,仍然涉及到十几个底层接口函数,不便于移植和维护。因此本设计中的CAN模块编程部分采用了对通用驱动的函数进行了进一步封装的zlg_can程序模块,图5为CAN模块编程流程框图。

图5 基于zlg_can程序模块编程

2.3 基于iCAN协议的报文处理程序设计

iCAN协议为CAN总线的应用层协议,iCAN协议定义的通信方式是“面向节点,基于连接的通信方式。面向节点是指源节点地址及目的节点地址均已给定,即对于任何一个报文参与通信的双方是确定的,基于连接是指在网络中任何一个参与通信的从站设备都必须和主站设备建立一个独立的通信连接。这样也为对任何一个设备的通信进行监控提供可能[5]。

此外,iCAN协议也是一种主从方式的协议。iCAN协议中规定了三种通信模式:(1)主从通信模式,主站对从站发送命令帧,从站模块回发响应帧来应答。这种通信模式为本模块的常态通信模式。(2)事件触发通信模式,用于在从站模块输入端口状态发生改变时,主动向主站传送数据。这种通信模式弥补了主从通信模式下总线利用率低的问题。(3)定式循环传送模式,用于从站模块在固定的时间间隔(由主站设置)向主站传送数据。

iCAN协议使用了扩展帧格式CAN报文,对CAN报文的29位标识符和报文数据都做了详细规定。报文标识符制定了数据通信中的源节点MACID和目标节点MACID,并指示了报文的功能以及所要访问的资源。在iCAN协议中,使用资源节点来对设备进行描述,在iCAN网络中,iCAN设备对iCAN主站而言就是许多资源节点的集合,通过资源节点主站和从站来完成数据交换[6]。iCAN标识符分配如图6所示。

图6 iCAN标识符分配

iCAN协议规定了7种功能码,主要有连续写端口、连续读端口、事件触发传送、建立连接等,这部分软件就基于这几种功能码进行模块化编写。

iCAN协议通信方式是基于连接的,任何通信都是在连接的基础上进行建立连接是iCAN协议通信第一步,也是最重要的一步。这里介绍一下建立连接的程序流程,当从站模块接收到主站发来的建立连接命令帧时,首先判断报文是否合法且从站模块尚未与其他模块建立连接,若报文非法或已处于连接状态,则向主站回发异常响应报文;若通过判断,则继续判断连接定时参数是否为零,若为零,则从站模块直接与主站建立连接并回发正常响应帧,若不为零,则先启动连接定时器,再与主站建立连接回发报文。建立连接的程序流程图如图7所示。

图7 “建立连接”处理流程图

本设计中的iCAN从站模块收发的数据均符合iCAN协议报文的格式,当收到一帧CAN报文时,首先对其进行报文解析,翻译成iCAN协议规定的报文格式,再做处理;同样,当从站模块要发送一帧报文时,首先需将iCAN报文翻译成CAN报文,然后再经过CAN通信程序进行发送。

2.4 用户参数配置软件设计

从站模块初次上电后,用户需要对其基本参数进行设置,可设置的参数包括:节点 MACID、CAN通信波特率、A/D采样次数、PWM周期。因此,进行了“iCAN模块用户参数配置软件”设计,如图8所示。点击“恢复出厂设置”按钮即将参数设置为:模块节点编号01,CAN波特率设置为 500 kb/s,A/D采样次数设置为 64,PWM周期设置为3(1 ms)。

图8 iCAN模块用户参数配置软件

3 系统调试与运行

3.1 模块硬件

iCAN从站模块为核心模块,用户可根据自己的需求设计合适的底板,配合使用。这就要求本模块体积要足够小,因此本模块按32 mm×32 mm的尺寸设计,把数字量输入输出、模拟量输入输出都通过排针引出。由于面积小,器件较多,因此采用双面贴片。

3.2 模块软件通信调试

将iCAN从站模块插到测试底板上,将测试底板的CAN接口和USBCAN分析仪相连接,USBCAN分析仪的另一端连接PC(这里用PC模拟iCAN主站)。

打开iCAN模块用户参数配置软件,设置好端口号,点击“连接”按钮,红灯亮,表示串口已连接正常;然后填写各参数预设置的数值,填好后点击“写入”按钮,观察“返回状态显示窗口”,若出现“WRITEOK”字样即说明设置成功。

打开CANPro通信软件,点击“启动”按钮,弹出打开设备对话框,设备索引号设置为“0”,将波特率设置为500 Mb/s,与iCAN模块波特率设置一致选中iCAN窗口,进行下面的测试。

3.2.1 MAC ID检测

硬件连接正常时,iCAN从站模块上电后,主动向主站发送MAC ID检测命令,以检测iCAN从站模块的节点号在网络中是否唯一。若1 s内未收到MAC ID检测响应帧,则iCAN模块进入可操作状态。

3.2.2 建立连接

MAC ID检测通过后,编号为“0”的主站节点发送“建立连接”命令帧,CyclicMaster这里设置为 0,表示不装载连接定时器;从站收到正确的命令帧,返回响应帧,数据部分分别为 DI、DO、AI、PWM 的数目,单位为 B;此时编号为2的节点又向iCAN从站模块发送建立连接命令帧,iCAN从站模块收到后,返回异常响应帧,告知本节点已与其他节点建立连接。

3.2.3 采集模拟量输入端口

iCAN从站模块与主站建立连接后,就可与主站进行通信,响应主站命令。这里以采集模拟量输入端口为例,介绍iCAN从站模块的通信功能。

主站发送命令帧,读取4路模拟量端口的输入数据,每路模拟量16 bit,用2 B表示,因此命令帧数据部分08表示读取8 B数据;iCAN从站模块接收命令帧,在极短时间内回发响应帧,返回4路模拟量输入端口的数值。

本设计在对iCAN总线协议深入研究的基础上,结合经济性和实用性的原则,设计了一种基于iCAN协议的嵌入式从站模块,使更多的研究者可抛开CAN-bus产品复杂的设计和漫长的测试过程,制造出适用于不同工业控制环境的产品,为进一步开发设计基于CAN-bus产品提供了便利。

[1]周立功单片机发展有限公司.基于iCAN协议的CAN bus分布式控制系统[J].产业技术与信息,2006(4):84-85.

[2]阳宪惠.现场总线技术及其应用[M].北京:清华大学出版社,2008.

[3]张健,蒋新华,陈兴武.CAN总线在基于ARM嵌入式数控系统中的应用[J].自动化与仪表,2008(7):25-27.

[4]广州周立功单片机发展有限公司.深入浅出Cortex-M0—LPC1100系列[Z].2013.

[5]周立功.iCAN现场总线原理与应用[M].北京:北京航空航天大学出版社,2007.

[6]冯江涛.基MCGS和iCAN的分布式监控系统[J].工业控制计算机,2008(2):18-19.

猜你喜欢
主站模拟量报文
基于J1939 协议多包报文的时序研究及应用
CTCS-2级报文数据管理需求分析和实现
浅析反驳类报文要点
基于FPGA的多通道模拟量采集/输出PCI板卡的研制
EtherCAT主站与主站通信协议的研究与实现*
多表远程集抄主站系统
ATS与列车通信报文分析
关于600MW火电机组模拟量控制系统设计和研究
模拟量输入式合并单元测试仪的研制
基于改进经济压差算法的主站AVC的研究