基于CAN网络互联风电控制系统的研究
Key work: CAN, CAN gateway, Internet, Wind power.
摘要:本文提出了 CAN网络互联的方法,并以风力发电系统为例对 CAN网络互联进行了分析。本文将若干台风机所包含的 CAN节点组成一组,形成一个子网,该子网与其他的子网通过局域网进行互连。所形成的局域网又可以通过路由器或网关与 Internet互连,这样实现风力发电与其他能源系统数据交换的需求。本文指出直接将CAN节点的应用层与 CAN网关的应用层进行互连是一种比较简便的方法,同时也便于各种监管应用软件的设计。
关键词:控制器域网; CAN网关; 网络互连 ; 风力发电 .
1. 前言
CAN节点 CAN网关 路由器或CAN网关
* 实线箭头为实际通信过程,空心箭头为逻辑链路图 1 在网关应用层上对 CAN和 LAN进行互
CAN的英文全称为 Controller Area Network,直接翻译过来就是“控制器域网”,这里简称“控域网”。其概念是上个世纪八十年代 BOSCH公司提出来的。到了 1993年该总线标准被 ISO接纳为 ISO 11898-1标准,该标准详细制定了 CAN总线数据链路层中的逻辑链路控制(LLC)和媒体访问控制(MAC) 两个子层的标准 [1]。
另外目前应用得比较多的还是 BOSCH公司制定的 CAN系列标准。按照 BOSCH公司的 CAN
2.0标准 [2],CAN的物理层、传输层、对象层对应了 OSI的物理层、数据链路层,相当于 TCP/IP的网络接口层,其中传输层是 CAN的核心层次,包含了数据的传输、确认、检错、速度控制等功能。这里将 CAN节点的这三个层次称之为“CAN接口”。
网络互联的目的就是要将不同的网络互相连接在一起。网络互联可以在物理层、数据链路层、网络层和应用层等多个层次上来进行。目前应用比较多的则是在网络层上来进行互联。
对 CAN节点进行网络互联也可以在网络层上进行,这需要对 TCP/IP网络层进行编程,编程技巧性比较强。这里提出在 TCP/IP的应用层上实现 CAN与 LAN的互联,图 1显示的就是这种互联方式。这样就可以使用比较简单的 Winsock编程技术,很多的功能都可以在网关计算机中实现,CAN应用层中网络互联协议的设计就可以得到简化。
在网络层以下, CAN网关同时拥有与 CAN连接的 CAN接口以及与局域网连接的网络接口。而网络层以上对应了 TCP/IP的网络层、传输层和应用层。在 CAN网关应用层之上可以设计各种 CAN管理软件,以便实现对 CAN总线的监控和管理。
2. 风力发电控制系统网络的互联
2.1 拓扑结构和原理
风力发电系统中每一个风机只需要少数的几个 CAN节点就可以完成控制工作,因此可以多台风机组成一组,使用一个 CAN子网来进行互相连接,而每一个 CAN子网可以容纳高达110个节点。各风机组之间则可以通过 CAN网关使用 LAN来进行连接。该风电场的局域网则可以通过网关服务器或者是路由器与 Internet互联,以满足整个风电场网络与其他能源系统的数据交换的要求。图 2显示的就是这样的一个风电场网络互联的拓扑结构。
该系统中,每一台风机内部主要包含了三个 CAN节点:变速变桨距系统,蓄电池充放电系统,功率输出与控制系统。CAN管理中心则包含了串行通信控制节点。以便实现 CAN与网关在数据链路层和物理层上的连接。
2.2 单片机控制 CAN总线智能节点的设计 1 智能节点的电路 利用单片机来设计风力发电系统中 CAN总线的智能节点,目前有两种可供选择的方法,
一种是直接利用片内集成了CAN控制器的单片机,例如飞利浦公司推出的P87C591型单片机,这种单片机内部将 P87C554微控制器和 SJA1000独立的 CAN控制器结合在了一起,这样一片单片机就同时完成了 CAN总线数据的收发以及智能节点设备的控制。第二种方法则是使用一般的 AD型单片机结合独立的 CAN总线控制器进行控制。这样可以为智能节点灵活地选择不同功能的单片机,做到系统功能的最大程度提升。例如对于其中一部分需要进行功率输出和控制的节点,这时候可以使用 A/D型单片机来实现这种控制。
这里采用第二种方法,利用一片 Holtek系列 A/D型单片机 HT46R47结合 MCP2510 CAN总线控制器以及 TJA1050 CAN收发器来设计相应的智能节点,采用这种方法的好处在于可以针对不同的智能节点选择不同的单片机。比如在蓄电池充放电以及功率输出的节点中,使用A/D型单片机电路性能比较好。而在串行通信等智能节点则使用 I/O型单片机性能更好。 对于每一个节点的单片机控制,可以通过设计相应的程序来完成。由于 CAN总线控制器已经完成了 CAN总线物理层和数据链路层的功能 (图 3),单片机程序的编写工作只需要在应用层上完成即可。
2 CAN控制器数据收发程序设计
单片机使用中断控制的方法来判断 CAN控制器数据的接收。即如果 CAN总线上有数据到来,则将引发单片机的一次外部中断,单片机据此可以接收 CAN总线上到来的数据。在接收数据的时候,首先对 MCP2510进行初始化,清除 TXBNCTRL.TXREQ位以便重新设置发送缓冲器,然后写入接收方的地址,发送数据。
3 通信节点的控制
对于这一部分节点可以使用带有串行通信功能的 I/O型单片机进行控制,比如使用带有 USB控制器的单片机(例如 HT46RB50系列单片机)与计算机进行通信[3]。
2.3 CAN-LAN网关的设计 1 CAN数据包的封装 目前已经有一些专用的设备提供 CAN网关的功能。对于单片机系统而言,还可以直接
采用专用的 TCP/IP协议集芯片,如上海精致科技有限公司研制 E5112等。当然也可以采用 PC来实现 CAN网关的功能。利用 PC来实现 CAN网关功能的好处在于可以在更高的层次上实现对 CAN总线的管理。
对于 CAN网关的研究,已经有一些文献在探讨 [4],其中不乏一些很有创意的设计,例如 CAN-GPRS网关、PLC-CAN、WorldFIP-CAN、CAN –Profibus、CAN-RS232网关等。在上述网关方案中,除了 CAN-GPRS工作在网络层以上的层次外,其他的“网关”都工作在数据链路层以下,或严格来说,称之为桥接器更合适一些。而对于 CAN-Ethernet网关[5]的探讨,近年来相关研究也在迅速增加,反映出对于 CAN与局域网进行互联的需求比较大。
这里利用 PC进行 CAN网关的设计,由于 PC具备更多的资源,而 CAN总线节点数量可以达到 110个,因此利用一台 PC作为 CAN-LAN网关,可以同时管理大约三十台风机。然后在网络层或更高的层次上对 CAN与 LAN进行互联。
在一个 CAN子网中,每个 CAN节点具备一个唯一的 IP地址。每一个 CAN节点要将数据发送到外部,必须通过 CAN-LAN网关。由于 CAN地址只有一个字节,且 CAN数据帧的长度最大只有 8个字节,因此为了节约资源,提高 CAN总线数据传输的效率,这里使用 192.168开头的 C类 IP地址,最后一个字节设置为 CAN节点的主机地址,从右到左第二个字节为子网地址。因此 LAN节点 m将拥有子网地址 m,该子网地址对应的子网中,可以最多有 254个主机地址,每个主机地址对应一个 CAN节点 i,这样各 CAN节点 IP地址构成形式将为:192.168.m.i。当然由于 CAN节点总数不会超过 110个,因此实际的主机地址会少于 110个。另外 CAN网关在该子网中的地址设置为: 192.168.m.254,这是各子网内部 CAN节点默认网关地址。另外规定各 LAN节点外部 IP地址为 192.168.254.m。
在数据包转发的时候,可以直接使用 IP地址来进行。为了有效地进行数据的转发,就要对发送的数据进行封装。在 CAN应用层对数据进行封装的方法很多,也有现成的协议可供使用,比如 CANopen等。但是这些协议都比较复杂,对于比较小的单片机系统来说,运行<
提交
助力企业恢复“战斗状态”:MyMRO我的万物集·固安捷升级开工场景方案
车规MOSFET技术确保功率开关管的可靠性和强电流处理能力
未来十年, 化工企业应如何提高资源效率及减少运营中的碳足迹?
2023年制造业“开门红”,抢滩大湾区市场锁定DMP工博会
2023钢铁展洽会4月全新起航 将在日照触发更多商机