新闻中心

EEPW首页>嵌入式系统>设计应用> CAN总线在风力发电控制系统中的应用

CAN总线在风力发电控制系统中的应用

作者: 时间:2012-05-25 来源:网络 收藏

read从接收缓冲区读取数据;write向发送缓冲区写人数据;release关闭can 控制器;ioctl向can 控制器发各种操作命令,包括设置sja1000总线波特率、id过滤器等;open 打开can 控制器,并使用函数request_irq()向系统申请中断,并设置中断处理程序为can_interrupt(),当sja1000内部中断寄存器(ir)的任意位置为1时,int引脚低电平有效,调用其中断处理函数can-interrupt(),在该函数中读取中断控制寄存器,判断中断原因(接收中断、发送中断、错误中断、数据溢出中断、唤醒中断),从而调用相应的服务子程序。
(2)sja1000读写逻辑分析及设计。由于sja1000的地址线和数据线是分时复用的,需要通过软件编程模拟地址锁存信号,以达到数据和地址的分时传输,因此,在程序设计中,要考虑sja1000的读写时序。图4为sja1000的写时序图。

4.2 写时序逻辑
通过分析写时序,可知,sja1000的写数据/命令过程分为以下两步[4]:
(1)将sja1000的ale引脚信号拉高,然后往复用总线上送地址信号,待数据稳定后,拉低ale信号,在ale引脚产生下降沿,进行地址锁存。
(2)将cs引脚信号拉低,并拉低wr信号,打开写允许;然后往复用总线上送数据信号,待数据稳定后,拉高wr信号,使wr引脚产生上升沿,进行写操作,将数据写入sja1000目标寄存器。
linux系统中,不能直接访问物理地址,而是先要映射到内核空间中,通过虚拟地址去访问。由硬件电路可知,sja1000的物理地址是0x50000000,最大空间为为108个字节(pelican方式)。sja1000写程序如下:
addr = ioremap(0x50000000, 0x80);
void write_sja1000 (unsigned int data, unsigned int reg) {
writeb (reg, addr+1);
writeb (data, addr);
}
其中,ioremap()为物理地址到虚拟内存的映射,addr为地址映射后得到的内核空间虚拟地址;reg是sja1000内部寄存器地址;data是要写的数据。writeb(reg, addr+1)模拟ale锁存地址,发地址信号reg,addr+1将使地址线a0产生高电平,由硬件设计电路知道这将使地址锁存信号ale拉高;然后,reg被送到了复用总线上。writeb (data, addr)发送数据到地址reg,addr将使a0拉低,reg被锁存;然后,data被送到复用总线上,也就写到了被锁存的地址reg所指空间。
4.3 读时序逻辑
图5为sja1000的读时序图。

通过分析读时序,可知,sja1000的读数据/命令过程分为以下两步[4]:
(1) 将sja1000的ale引脚信号拉高,然后往复用总线上送地址信号,待数据稳定后,拉低ale信号,在ale引脚产生下降沿,进行地址锁存。
(2)将cs引脚信号拉低,并拉低rd信号,打开读允许;然后往复用总线上送数据信号,待数据稳定后,拉高rd信号,使rd引脚产生上升沿,进行读操作,将sja1000目标寄存器的数据读回。
sja1000读程序如下:
int read_sja1000 (unsigned int reg) {
writeb (reg , addr+1);
readb ( addr);
}
readb(addr)从地址reg读取数据。addr将使a0拉低,reg被锁存;然后,通过复用总线读取被锁存的地址reg所指空间数据。
4.4 can通讯应用程序设计
(1) can数据报文格式。风电机组控制系统中,各控制模块之间需要传输的信号很多,包括模拟量、数字量以及控制指令和控制参数等。模拟量包括风速风向,电压电流,功率,电网频率,各类转速和温度等,数字量包括机组的各类状态信息,如并网状态,电源状态等及各类故障信息。这些信号均根据can协议封装为报文,以数据包的形式发送。每个报文可由一个或一组信号组成。各个报文需要定义其帧格式,包括数据id,优先级,数据长度等。每个模拟量均定义为两个字节长度,数字量则占1位。为了提高传输效率,多个数字量组合为一个报文来发送。
系统中can通讯协议采用扩展帧格式,29位id定义见图6。

其中,命令码是来自不同模块的报文的代号,占id的高12位,范围为0x000-0x0FFf,包含同一组信号的报文具有唯一的命令码。源地址和目标地址取决于控制器地址,主控制器为0x01,网侧变流控制器为0x02,电机侧变流控制器为0x03,变桨偏航控制器为0x04。id的低9位分别为后续帧标志和后续帧帧数,若后续帧标志为1,则表示该报文还有后续帧需要传输。
(2) 基于qt/e的图形界面应用程序设计。本系统中主控制器图形界面应用程序基于linux平台的qt/e实现。图形界面应用程序主要功能有两个:一是从can 总线接收风电机组运行状态信息,并显示给用户,二是判断并处理机组状态信息,通过can接口向各子控制模块发送控制信息。由于本系统中can以多主方式工作,接收来自多个节点的数据,并向多个节点发送数据,因此,在应用程序中要封装不同的报文,还要分析收到数据的信息。
为了提高系统的响应,应用程序采用多线程机制,本系统中设计三个独立线程来处理不同的任务。主线程负责主界面实时数据显示,历史数据查询以及机组状态的逻辑判断和流程控制等。由于数据库的读写是对磁盘文件的直接操作,速度较慢,因此在一独立线程中实现历史数据的写操作,以防止对主线程控制程序的影响,而对于历史数据的查询,现场只在特定情况下用到,仍在主线程中实现。can总线数据的交互比较频繁,为了避免数据的丢失,在一独立线程中完成数据的接收。
5 结束语
目前,风力发电控制技术主要掌握在国外大企业手中,国内机组的控制器主要依靠技术进口,因此,研究并设计有自主产权的机组控制系统有着深远的意义。

参考文献
[1] 叶杭冶. 风力发电机组的控制技术[m]. 北京:机械工业出版社,2006.
[2] 孙大鹏. 双馈风力发电机组电控与安全保护系统设计研究[d]. 北京:华北电力大学研究生论文,2009.
[3] 绕运涛等. 现场总线can原理与应用技术[m]. 北京:北京航空航天大学出版社,2007:242-243.
[4] 储忠,温阳东. 基于s3c2410控制的can总线接口设计[j]. 合肥学院学报:自然科学版,2007,5,2:59-62.

风力发电机相关文章:风力发电机原理

上一页 1 2 下一页

评论


相关推荐

技术专区

关闭