STM控制器资料

  • 格式:docx
  • 大小:289.83 KB
  • 文档页数:8

第四章 BACnet专用控制器软硬件系统

4.1 BACnet专用控制器硬件系统

4.1.1 硬件结构

本控制器的硬件平台为嵌入式STM32V5开发板,主要由STM32F103微控制器组成,该微控制器带有以太网接口和RS485接口,其他还包括电源模块、ADC(数/模转换器)模块、存储器单元等错误!未找到引用源。。硬件模型如下图所示:

CPUSTM32F103以太网模块EIA-485驱动工作站路由器电源晶振485现场总线

图控制器硬件构成

4.1.2 STM32MCU简介

本控制器主芯片选用基于ARM Cortex-M3 32位RISC内核的高性能STM32F103VET6。因为拥有内置的ARM内核,因此它与所有的ARM工具和软件兼容,所以软件开发平台我们选取Keil μVision5。芯片的主要特性如下:

 工作频率为72MHz;

 工作电压为2.0V--3.6V,工作温度在-40°C至+105°C的范围;

 它具有100引脚封装,有着多达80个快速I/O端口和联接到两条APB总线的外设;

 内置高速存储器(128K字节的闪存和20K字节的SRAM);

 2个12位的ADC,用于对输入电源和负载电流检测,具有双采样和保持功能,A/D测量范围:0-3.6 V,片上集成了温度传感器;

 拥有4个通用16位定时器、2个看门狗定时器以及一个PWM定时器,所以在时序方面能够达到BACnet需求。

 3个USART接口,其中一个用于MS/TP总线的串口收发;

 2个I2C(SMBus/PMbus)和2个SPI同步串行接口(1兆位/秒);

 内嵌4至16MHz高速晶体振荡器、带校准功能的32kHz RTC振荡器、40kHz的RC振荡器、经出厂调校的8MHz的RC振荡器;

 一个USB和一个CAN接口;

 支持三种低功耗模式:睡眠模式、停机模式和待机模式,用以保证低功耗应用的省电要求。

 调试模式包括:串行线调试(SWD)和JTAG接口,本文使用JTAG调试。

4.1.3 RS485通信模块

本控制器中使用的RS-485收发器芯片为SP3490。SP3490是+3.3V低功耗的全双工收发器,符合RS-485电气规范,能够满足本文控制器有关串行通信的需求,数据传输速率可高达10Mbps(带负载),可实现低功耗操作,而且同时不会降低性能。其他特性还包括:

 可与+5V的逻辑电路共同工作;

 -7V~+12V的共模输入电压范围;

 ±200mV 的接收器输入灵敏度;

 允许在同一串行总线上连接32个收发器等;

 兼容 LTC490 和 SN75179。

图4-2 RS-485接口电路

4.1.4 电源模块

通过稳压器AMS1117-3.3输入+5V,提供3.3V的固定电压输出,为了降低电磁干扰,电容C1-C5为CPU提供BANK电源滤波。VREF+采用VDDA电源基准。LED灯显示当前电源连通状态。为RTC的备份电源采用V1 3.3V锂离子片状电池。

该稳压器应用范围广泛,可用于高效线性稳压器、后置稳压器、用于交换式电源、5V至3.3V线性稳压器、有源SCSI终端等。

图4-3 电源模块电路

4.1.5 时钟源电路

共需要两路时钟输入,一路是CPU处理器的工作时钟,另一路提供给RTC电路。

低速外部时钟源(LSE)为32.768KHz晶体谐振器B2。C10、C11谐振电容选择6P。

外部晶体/陶瓷谐振器(HSE)为8MHz晶体谐振器B1,C8、C9谐振电容选择10P,系统的时钟经过PLL模块将时钟提高到72MHz。

图4-4 时钟源电路 4.1.6 JTAG接口

JTAG(Joint test action group)也是一种国际标准测试协议(IEEE 1149.1兼容),主要用于芯片代码的烧写和测试。因为ARM内核的处理器中都集成了JTAG调试模块,本文选用的STM32处理器就是如此,所以对于ARM系统来说,使用JTAG的调试模式最方便。同时JTAG调试具有很多的优点,比如软件硬件均可调试,十分便捷、无需任何监控程序、可以重复利用JTAG硬件测试接口,还能够在RAM 和ROM中设置断点。综上考虑,本文选取了JTAG作为本控制器的调试模式,控制器的JTAG接口电路如下图:

图4-5 JTAG接口电路

4.2 BACnet专用控制器软件设计

本文中的控制器是一个按照BACnet互操作性要求设计的BACnet专用控制器(B-ASC),采用了主流的软硬件技术,具有模拟输入/输出、数字输入/输出。控制器的软件设计以嵌入式实时操作系统µC/OS-Ⅱ为基础,采用多任务机制,通过任务调度和任务监视,具有较好的实时性和可靠性。软件层面的模型如下图4-6:

I/O模块应用程序Device对象Analog-Input对象Analog-Output对象Binary-Input对象Binary-Out对象对象实例集嵌入式µC/OS-Ⅱ操作系统协议栈网络与服务Device Communication Control或Read Property或Write PropertyResult+或者Result-Who-has或者Who-isI-have或者I-am图4-6 控制器软件模型 4.2.1 需求分析

由于使用一致性类和功能组的概念进行BACnet系统的说明和设计有一定难度且较为抽象,所以为了更清晰明了的对BACnet网络中的DDC控制系统进行说明和描述,ASHRAE 13 DDC(ASHRAE Guideline-13,Special Direct Digital

Control System)总结了DDC系统的体系结构、输入/输出接口结构、通信、程序配置和系统测试等方面,定义了一种设计及说明DDC控制系统的标准化方法错误!未找到引用源。。该方法将对楼宇自控系统内任意设备间的交互内容描述总结为以下5个互操作域:

(1)“数据共享”(Data Sharing)互操作域;

(2)“报警与事件管理”(Alarm and Event Management)互操作域;

(3)“时间安排”(Scheduling)互操作域;

(4)“趋势或日志”(Trending)互操作域;

(5)“设备与网络管理”(Device and Network Management)互操作域。

BACnet协议共定义了6个类型的BACnet标准设备:

① 操作员工作站(Operator Workstation,B-OWS)

② 楼宇控制器(Building Controller,B-BC)

③ 高级应用控制器(Advanced Application Controller,B-AAC)

④ 专用控制器(Application Specific Controller,B-ASC)

⑤ 智能执行器(Smart Actuator,B-SA)

⑥ 智能传感器(Smart Sensor,B-SS)

这6种标准设备各自实现不同类别的互操作域(Interoperation Area)。本文设计的控制属于BACnet专用控制器(B-ASC),它所实现的功能用互操作域描述如下:

(1)数据共享:允许其他设备访问所有对象的属性值;允许其他设备(如操作员工作站B-OWS)修改所有或部分对象的属性值;

(2)报警与事件管理:不要求支持该项功能;

(3)时间安排:不要求支持该项功能;

(4)趋势与日志:不要求支持该项功能;

(5)设备与网络管理:只允许设置状态和控制参数。

具体到实际中,一个典型的BACnet控制器应具备以下几个方面的功能:

(1)通信功能:正确收发报文,能够和网络内其他的BACnet设备进行通信。

(2)监视功能:监视与它相连的控制设备的状态,并能够将其状态信息传达到网BACnet络中。 (3)控制功能:能够控制与其相连的底层设备的运行状态。

4.2.2 基于BACnet协议的控制器通信

本文使用了BACnet的一个开源协议进行二次开发,最新版本的源码可以从网站下载,本文使用的源码版本为bacnet-stack-0.8.2。该开源协议栈可移植到多种体系结构的芯片中,可实现BACnet服务器、客户机和路由器等功能,使用时根据需要进行选择。协议栈同时实现了大部分的BACnet协议标准服务的编码和解码函数,对于比如模拟输入/输出、数字输入/输出等常用的BACnet对象也得到应用,可以满足本文的开发使用需求。

BACnet协议栈在本文所设计控制器中的整体实现过程如下图4-7所示:

应用程序系统运行软硬件输入软硬件输出ASC应用用户单元BACnet应用对象设备对象AI、AOBI、BOAPIBACnet应用服务BACnet编码器BACnet解码器APCI,服务相关参数请求状态机响应状态机APCI APDUAPCI APDU应用层协议状态机网络层N_UNITDATA.reqN_UNITDATA.ind数据链路层MS/TP主节点状态机发送队列TxQ接收队列RxQDL_UNITDATA.reqDL_UNITDATA.indNPCI,APDUMPCI,NPDU物理层(UART)发送帧接收帧图4-7 协议栈实现示意图

根据手上STM32开发板的硬件配置和考虑到实验室应用环境中的数据参数,我们在程序中建立了五种BACnet对象:一个Device对象、Binary_Input对象、Binary_Output对象、Analog_Input对象、Analog_Output对象。Binary_Input对象对应如回风机运行状态和故障状态,Binary_Output对象对应开发板上的继电器输出,控制相连接开关的启停,Analog_Input对象对应连接传感器输入的模拟量值例如温度、湿度、压力等,Analog_Output对象对应输出的模拟量信号如回风机频率调节等。Device对象则是对设备的概括描述,包含了基本信息。

对控制器中BACnet参数的配置包括MAC地址、设备对象实例等。设备对象实例没有硬性要求,只要不和互联网络内其他设备重复即可,此处设置为103;因为实验室内还有另外5个标准MS/TP设备,所以为了有序而将MAC地址设置为6。

控制器与其他BACnet设备间的通信基于不同的应用服务,具有不同的互操作功能。本文的BACnet专用控制器主要具有数据共享和网络管理两部分互操作内容。通过ReadProperty、WriteProperty、Who-Is、Who-Has等完成服务发起方和服务执行方之间的操作。

4.2.3 PID控制算法

作为楼宇自控系统,需要对很多环境参数进行控制,例如温度、湿度、压力等,而控制器在运行时可以集成一些控制算法来实时控制设备运行状态。在自控系统中,数据参数会一直处于变化状态,很难建立出一个精确的数学模型,采用PID控制算法在此时就可以起到较好的效果。因为该算法的简单、鲁棒性强等优点,目前在楼宇DDC控制器中应用最为广泛。

一般PID算法的表达式为:

dttdeTdtteTteKttpD0I1u(4.1)

对应模拟控制器的传递函数为: