胡维
中广核新能源安徽分公司 安徽 合肥 230000
摘要:随着国家经济快速发展,各个风电场环境较为恶劣,对于风力发电控制系统的高速、实效等要求提高。本文是基于CAN总线结构下的风力发电控制系统,确保主控系统与各个子系统可以进行实时通讯和分散控制。文章主要分析了系统结构和功能、CAN总线扩展以及程序编写等多种问题。
关键词:CAN总线;风力发电;控制系统
引言:风力发电控制系统是一个完整的控制系统,控制系统只有开或关任务,参数是一个分布在操作系统上的串行连接网络,在实际时间内控制误差,它工作在一个状态连接速率可以是1Mbps。默认情况下,CAN总线上的参数用于风力控制系统,可以通过对接口的分析,配置了接口,本文给出了基于硬件方案的应用程序设计。
1、系统结构与功能
主控制器采用32位嵌入式处理器AT91RM9200,通过硬件设计扩展外围CAN,实现与其他节点的通信,同时外部液晶显示器与触摸屏相连,监控接口采用集成QT,主控制器通过以太网与Windpark控制中心通信。转换器采用双PWM控制模式,即两个DSP产生PWM信号,发动机侧负责控制发动机激励,电网侧负责网络联动控制;这两个模块基于TMS320F2812,通过各自的ECAN接口与主控制器和其他节点进行通信。
变桨控制系统也是在ARM(AT91RM9200)上设计的,可以通过扩展接口实现通信,俯仰控制器和变频器通过I/O通道采集和接收传感器数据,进行相关计算和评估,输出信号,实现智能分散控制,向主控制器发送机组参数,接收主控制命令,主控制器位于地面控制柜内,控制器位于机房控制柜内,变频器分为机侧和网侧两部分,光电转换后的模块之间采用光纤连接CAN总线信号[1]。
2、CAN接口硬件设计
CAN是一种基于广播的通信机制。消息由消息标识符标识,协议能否支持两种帧格式,区别在于标识符字段的长度不同。一个可以称为支持11位标识符长度的标准帧;另一种称为扩展帧,支持29位标识符。CAN接口芯片接受飞利浦公司的CAN独立控制器SJA1000,arm处理器AT91RM9200集成外部总线接口EBI,EBI与SJA1000相连,SJA1000的CAN信号输出通过光耦隔离,并与TJA1050收发器相连,收发器输出连接到总线。SJA1000的地址线和数据线是分时多路复用器,而AT91RM9200的外部总线接口EBI的地址线和数据线是相互独立的。因此,有必要通过软件编程来实现耗时的数据和地址传输。SJA1000的数据/地址复用总线直接连接到arm的EBI总线的下8位,地址锁定信号/ALE由arm的A0、CS和/或产生在ncs4、new和A0操作之后或之后,通过硬件电路可以确定SJA1000的物理地址为0x50000000。
为了保证控制系统数据传输的准确性和改善CAN总线节点的故障,SJA1000控制采用6n137光高速耦合器隔离,并与TJA1050收发机相连,直流模块dcr01055用于实现光耦两端的栅极隔离,CANh连接到总线的高端,而CANl连接到母线的低端,由于风电机组垂直距离大,容易受到雷电的影响。一个30pf电容器和一个闪光保护管分别平行于两个CAN总线入口和地板之间。用于过滤高频故障,防止过载。
3、CAN接口通讯软件设计
3.1CAN驱动程序设计
底层驱动程序总体设计在Linux中,设备驱动程序由一系列数据结构和函数组成,这些数据结构和函数可以中断设备的子程序(如open、read、write、close、IOCTL等),初始化函数CAN uInit和interrupt Handler can interrupt在LinuxInit中加载CAN驱动程序时调用CAN驱动程序,向操作系统注册设备,设置CAN总线的构建速率,设置ID过滤器,删除接收器和发送缓冲区,并启动中断。
初始化完成后,退出复位模式,进入正常工作模式[2]。
从接收缓冲器读取数据;将数据写入传输缓冲区;CAN控制器关闭;IOCTL向CAN控制器发送各种命令,包括设置SJA1000总线、ID过滤器等。打开CAN控制器并使用函数requestIRQ从系统请求中断,并将中断处理程序设置为尽可能中断,如果SJA1000 1的内部中断寄存器(IR)的位置是int pin的低值。调用其中断处理函数可以中断,读取函数中的中断控制选项卡,评估中断的原因(中断接收、中断发送、中断错误、中断数据流、唤醒中断),然后调用相应的服务子程序。
3.2SJA1000读写逻辑分析及设计
由于SJA1000的地址线和数据线是分时乘法,因此需要通过软件编程来模拟地址锁信号,实现数据和地址的分时。因此,在程序设计中应考虑SJA1000的写入时间,通过对写入时间的分析,编写时序逻辑,可以看出SJA1000的数据/命令写入过程分为以下两个步骤:首先,将SJA1000的Ale引脚信号上拉,然后在总线上来回发送地址信号。数据稳定后,拉下Ale信号,在65288棒的Ale引脚上生成下降沿;其次,取下CS引脚信号,按WR信号开启写授权;数据稳定后,打开WR信号,使WR引脚产生一个递增边,并将数据写入SJA1000目标寄存器。
3.3读时序逻辑
通过对读取时间点的分析可以看出,SJA1000的读取数据/命令过程分为以下两个步骤:首先突出显示SJA1000的Ale引脚信号,然后在总线上来回发送地址信号。在数据稳定之后,移除Ale信号并在Ale管脚上为地址锁6588生成下降沿;其次下载CS引脚信号,按RD信号打开读授权;数据稳定后,拉上RD信号,使RD引脚产生一个递增边,然后从SJA1000目标寄存器读回数据。然后,多路复用总线将读取由阻塞地址reg给出的空间数据。
3.4 CAN通讯应用程序设计
3.4.1CAN数据报文格式
在风电机组控制系统中,有许多信号需要在控制模块之间传输,包括模拟量、数字量、控制命令和控制参数,模拟量包括风速、风向、电压、电流、电流、功率、网络频率、各种速度和温度,而数字量则包含了机组的各种状态信息,如网络连接状态等,包括网络解析状态和所有类型的错误信息。这些信号根据CAN协议封装在数据包中并以数据包的形式发送。每条消息可以由一个或一组信号组成。每条消息必须有其帧格式,包括数据标识、优先级、数据长度等。每个模拟量定义为两个字节的长度,而数字量则需要一个位。为了提高传输效率,将多个数字量组合起来发送消息。其中是来自不同模块的消息的命令代码,负责ID的最高12位,范围为0x000-0x0fff。包含同一组信号的消息具有唯一的命令代码。源地址和目标地址取决于控制器地址。主控制器为0x01,网页转换器控制器为0x02,引擎页转换器控制器为0x03,俯仰偏航控制器为0x04。ID的底部9位是以下帧标志和后续帧的数量。
3.4.2基于qt/e的图形界面应用程序设计
在本系统中,主控图形界面基于Linux平台的QT/E实现,GUI应用程序主要有两个功能:一是从CAN总线获取风机运行状态信息并向用户显示;另一种是对机组状态信息进行评估和处理,并通过CAN接口将控制信息发送给各子控制模块,系统可以在多主模式下工作,接收多个节点的数据,并将数据发送给多个节点。因此,申请程序中应包括不同的文件包,并对收到的信息进行分析。为了提高系统的响应速度,应用程序采用了多线程机制。本系统针对不同的任务设计了三个独立的线程,主体部分负责主界面的实时数据显示、历史数据查询、机组状态的逻辑评估和过程控制,由于数据库的读写是磁盘文件的直接操作,速度慢,所以在一个独立的线程中实现历史数据的写入,以防止对主线程控制程序的影响。但是,历史数据的查询只在某些情况下使用,仍然在主体部分实现,为了避免数据丢失,数据是在一个独立的线程中接收的。
总结:总的来说,目前风力发电控制技术主要掌握在国外大公司手中,而国内机组的控制主要依靠技术的引进,因为CAN总线的运用给风力发电控制系统带来好处较多,因此,研究和设计具有独立所有权的机组控制系统具有深远的意义。
参考文献
[1]陈旭.变桨距风力发电控制系统的研究[J].科学技术创新,2018(27):192-193
[2]雷慧杰,张艳伟,葛峰.模拟风力发电控制系统的设计[J].电子制作,
2021(07):13-16