资源描述
Modbus-BACnet协议转换网关总体设计方案
Modbus TO BACnet IP协议转换网关
总体设计方案
[V1.0]
编写: ___
校对: ___
审核:____________
审批:____________
广东××楼宇科技有限公司
2009-8-2
目 录
一、项目背景 3
二、设计原则 3
三、拓扑结构 4
四、总体设计方案 5
4.1 产品整体设计 5
4.2 协议转换器功能 5
五、硬件设计方案 6
5.1 MTB协议转换器硬件结构 6
5.2 MTB协议转换器功能说明 7
六、软件设计方案 8
6.1 软件架构设计 8
6.2 MTB协议转换器系统子模块设计 10
6.2.1 BACnet接口模块 10
6.2.2 Modbus接口模块 12
6.2.3 CGI 模块 12
6.2.4 Web模块 12
6.2.5 安全性设计 16
七、技术参数 17
7.1 MTB协议转换器主模块技术参数 17
八、开发工具 18
九、进度安排、项目组成员、及预算 18
一、项目背景
本产品用于将MODBUS RTU通讯的设备接入BACnet IP网络。本产品在MODBUS网络中为主站,可接8个从站。本产品在BACnet IP网络中为一个网络设备,用户可将从MODBUS RTU网络中的数据点一一对应到BACnet IP网络中的数据点。
Modbus RTU 转BACnetIP, 通过BACnet对象可以读/写任何标准的Modbus寄存器。
1、 实现从MODBUS RTU主(Master)到BACnet IP转换。
2、 向下提供1个RS485/MODBUS RTU接口,可连接8台MODBUS从(Slave)设备,速率支持2400~38400bps,通讯距离可达1000米。
3、 向上提供1个BACnet IP接口,速率支持10/100M。
4、 Modbus 与BACnet数据映射配置采用web进行配置,
5、 支持Modbus的coils、holding register、input register、discrete input这四类标准的寄存器 ;Modbus寄存器的映射关系和Modbus RTU的波特率等参数通过WEB进行配置
6、 Modbus轮循的时间间隔可以进行配置
二、设计原则
总体设计原则是产品必须以市场为导向,满足用户的使用需求,要把握住产品的主流方向,保证产品在生命周期内不会被淘汰。产品开发坚持宏观把控,从各方面考虑风险因素,争取把风险降低到最低。
三、拓扑结构
图3.1 MTB协议转换器3000的系统拓扑图
该系统采用二级网络的架构,MTB协议转换器与通用BACnet浏览器软件或客户端通过BACnet IP进行数据交互,并能与第三方标准的BA系统进行无缝集成;系统内嵌WEB服务器,Modbus与 BACnet系统配置通过Http协议直接访问、配置,操作直观、简洁。
四、总体设计方案
4.1 产品整体设计
该协议转换器核心的功能是实现Modbus RTU与BACnet IP协议数据转换。该系列协议转换器内嵌了功能强大的Web控制软件,用户无需上位机软件,通过Web页面访问系统界面可实现对协议转换器的管理和控制,并可进行参数配置,Modbus从机设备管理等功能,充分发挥Web强大的管理和控制功能。
现场人员可以直接通过浏览器对MTB协议转换器系统进行访问、配置,配置完成后可以快速与支持BACnetIP协议的BAS系统进行集成。MTB协议转换器与Modbus从机设备模块之间通过RS485进行通信,带有1条RS485总线,每条总线可扩展8个Modbus从机设备.
4.2 协议转换器功能
1. Web功能
a) 可通过登陆IE浏览器访问、配置协议转换器相关参数。
b) 数据对象配置,包括对模拟量、二进制量、多态、输入、输出、值对象进行配置。
c) Modbus配置,配置菜单包括,Modbus RTU数据、Modbus RTU设置、
2. 网络通信
a) 与Modbus从机设备通信,采用Modbus RTU协议实现数据通信。
b) 集成BACnetIP协议,在以太网上采用BACnet IP协议向BAS系统接口。
c) 实现Modbus协议到BACnet IP协议的数据映射,把Modbus从机设备数据转换为标准的BACnet IP对象。
3. 安全机制
a) 密码登陆,经过授权的用户才允许登陆访问MTB协议转换器控制器。
4. 辅助功能
a) 带有电源、运行和通信指示灯。
b) 带有蜂鸣器提示功能。
五、硬件设计方案
5.1 MTB协议转换器硬件结构
MTB协议转换器采用模块化设计,主要功能电路有CPU,程序存储电路,数据存储电路,485通信电路,Ethernet通信电路,USB电路,实时时钟电路,复位电路,指示灯电路,硬件结构如图5.1所示:
图:5.1硬件结构图
5.2 MTB协议转换器功能说明
1. 电源电路:给MTB协议转换器各个电路提供供电,采用DC-DC电源芯片,输入DC24V,输出5V,再由LDO芯片把5V变换成3.3V和1.8V,供整个MTB协议转换器使用。主要技术参数:
a) 供电电压:DC24V ,
b) 输出电压:DC5.0V,3.3V,1.8V。
2. CPU电路:该模块主要是一个芯片外加一个晶振电路。,这是整个MTB协议转换器控制器的核心部分,实现各种复杂的逻辑运算和通信数据处理,以及对其他外围电路的监测和控制。微处理器芯片内部嵌入32bit的CPU,小容量内部RAM、ROM,具有外部存储扩展接口EBI、I2C、SPI、UART、USB、Ethernet等各种通信外设接口, JTAG和debug调试口等,可以满足复杂的控制和各种通信协议的处理。主要技术指标如下:
1) 32bit芯片,主频200MHz,
2) 带有MMU功能,支持Linux操作系统,
3) 具有EBI接口,可外扩FLASH和SDRAM,
4) 1个以上的10 M /100M自适应Ethernet通信接口,
5) 2个USB接口,其中一个USB Host,一个USB Device,
6) 1—2个I2C接口,
7) 1—2个SPI接口。
可选的核心芯片:
三星:S3C2410,主频200MHz, 3个串口,2个以太网接口,带有MMU功能,可扩展Nand Flash,SDRAM。
本设计中选用三星的S3C2410控制芯片。芯片简介: S3C2410处理器是Samsung公司基于ARM公司的ARM920T处理器核,采用0.18um制造工艺的32位微控制器,该处理器最高可运行在203MHz。
功能特点:
Ø 内部1.8V,存储器3.3V,外部I/O3.3V,16KB数据Cache,16KB指令Cache,MMU,
Ø 内置外部存储器控制器(SDRAM控制和芯片选择逻辑),
Ø 4个带外部请求线的DMA,
Ø 3个通用异步串行端口,
Ø 2通道SPI,
Ø 一个多主I2C总线,一个I2S总线控制器,
Ø 两个USB HOST,一个USB DEVICE,
Ø 117个通用I/O,
Ø 带MMU的先进的体系结构支持WinCE、EPOC32、Linux,
Ø 272-FBGA封装。
3. 存储电路:通过EBI接口外扩存储,包括程序存储器、数据存储器,配置如下:
1) 采用64M的Nand Flash,
2) 采用64M的SDRAM。
4. 以太网通信电路:2个10M/100M的以太网通信电路,该电路主要由以太网控制芯片,网路变压器及RJ-45接口组成。
5. USB通信电路:一个USB Host接口和USB Device接口,该接口可用作程序升级或扩展功能用。
6. 实时时钟电路:采用实时时钟芯片,给MTB协议转换器提供精准的实时时钟,具有后备电池。
7. 指示灯和蜂鸣器电路:指示灯用于MTB协议转换器运行指示、报警指示和通信指示,蜂鸣器用于系统启动提示或其他扩展功能。
a) 调试口:Debug通过RS232方式实现,JTAG调试口直接引出即可。
六、软件设计方案
6.1 软件架构设计
1. MTB协议转换器的软件架构采用分层,模块化的设计思想,以降低耦合性和开发难度。MTB协议转换器功能从下到上依次为硬件平台、操作系统层、设备驱动层、通信层和应用层。图6.1为系统软件架构图:
图6.1软件架构图
MTB协议转换器各层功能描述:
1. 硬件平台:由CPU、内存和各种外设组成,是实现MTB协议转换器软件功能的载体。
2. 系统驱动层:在MTB协议转换器的硬件平台之上加载Linux操作系统,并在操作系统之上开发出与MTB协议转换器硬件相关的设备驱动,并调用相关的库及SHELL,通过Device Management层进行统一调度和管理,为通信层和应用层提供服务。
3. 通信层:也称通信进程,通信进程监听BACnet、Modbus和Http等通信,并收发MTB协议转换器间的互操作“服务”。MTB协议转换器所支持的通信协议有:
1) BACnet协议:采用BACnet协议创建标准的BACnet对象实例集,实现BACnet IP协议,该协议用于MTB协议转换器与BAS之间集成通信。
2) Modbus协议:标准的Modbus RTU协议,通过RS485总线与MODBUS从机设备进行通信,采集现场数据并对现场建筑设备进行控制。
3) Http协议:此协议是访问MTB协议转换器嵌入的web服务器的一种协议,用户可以通过IE浏览器访问MTB协议转换器的Web页面。
4. 应用层:包含应用进程、控制对象实例集、配置管理进程和Web服务器几个部分,这是MTB协议转换器核心的内容。
1) 对象实例集:表示楼宇自控设备的标准对象实例集,它是通信进程和应用进程相互联系的接口。配置管理进程:楼宇自控设备初始化设置与具体应用有关的参数,以及实现楼宇设备专有的管理功能。
2) CGI:即通用网关接口(Commom Gateway Interface),通过嵌入到Web服务器中的CGI进程,接收CGI参数请求对设备管理层的数据用XML报文进行封装,回传到外部请求组件。
3) Web Server:用户界面的一部分,通过嵌入式的Web服务器实现对控制器各个监控点的监控和系统的设置功能。
6.2 MTB协议转换器系统子模块设计
MTB协议转换器软件主要包括BACnet模块、Modbus模块、web模块、cgi模块。各部分关系如下图:
配置文件
共享内存
配置参数
BACnet设备
实时输入缓冲
实时输出缓冲
Modbus模块
Web/CGI模块
BACnet模块
浏览器
BAS系统
Modbus设备x
如上图,系统工作流程为:
1) BACnet模块,Modbus模块和Web/CGI是三个并发的进程,通过配置文件,共享内存和消息队列实现数据通讯和共享。其中配置文件存放在jffs2/yaffs文件系统中,可修改,掉电数据不丢失;BACnet设备是BACnet模块内部使用的内存数据;实时输入输出缓冲用共享内存实现。
2) 用户使用浏览器访问嵌入式web服务器,浏览信息浏览和配置页面。
3) WEB模块通过CGI模块读写配置文件。
4) modbus模块读写配置文件,按照配置的modbus设备个数,地址,数据点,波特率,轮询间隔时间等参数,实时采集各个modbus设备的数据,放入实时输入缓冲中。
5) BACnet模块根据配置文件中数据点的映射关系,创建BACnet设备以及BACnet对象点。
6) BACnet模块响应来自BACnet Client(如BAS系统)的访问,从实时输入缓冲中获取数据更新BACnet对象的数据,并提交给访问者。
7) BACnet模块接收到来自BACnet Client(如BAS系统)的数据输出请求时候,将发送消息给Modbus模块,要求执行数据输出指令。
8) Modbus模块从输出缓冲中取数据,定时刷新输出,或者接收到数据输出指令时候立即执行。
6.2.1 BACnet接口模块
BACnet接口模块,在Cimetrics公司的BACnet协议栈基础上进行开发,该协议栈支持windows和Linux操作系统,支持实现为BACnet网关,BACnet Server设备,或者BACnet Client设备。
本应用中,可实现为一个标准的BACnet Server设备,根据配置的映射关系,将modbus设备的数据点映射为该BACnet设备的一个数据对象。
1) 首先,调用BACnet协议栈API的初始化配置函数,申请BACnet资源,设置BACnet节点地址相关信息,最大对象个数等。
2) 然后读取配置文件,生成BACnet对象列表,并且初始化数据值,数据单位,对象状态等。
3) 调用协议栈API,初始化读写属性的回调函数,在回调函数里面可以截获BAS系统对BACnet对象属性的读写访问,从而执行必要的数据更新操作和执行实际的数据输出指令。
在读属性回调函数中,从实时输入缓冲中获取数据,更新BACnet对象当前值,并用当前值响应读请求;
在写属性回调函数中,分析写属性,向Modbus模块发送执行数据输出的指令。
4) 调用协议栈API函数,启动协议栈运行主线程程序。
5) 如果系统退出,则调用协议栈API,释放协议栈分配的BACnet资源
MTB协议转换器按照BACnet协议一致性类别4进行设计实现:
一致性类别4的要求
Service Type
Execute/Initiate
Read property
Execute
Read property multiple
Execute
Write property
Execute
Write property multiple
Execute
Who has
Execute
I have
Initiate
Who is
Execute
I am
Initiate
如表,实现以下服务功能:
1) 读对象单个属性服务
2) 读对象多个属性服务
3) 写对象单个属性服务
4) 写对象多个属性服务
5) Who-has报文响应服务
6) Who-is报文响应服务
7) 定时广播i-have报文服务
8) 定时广播i-am报文服务
BACnet模块支持的BACnet标准对象实例如下:
Ø AI:模拟量输入Analog Input,
Ø AO:模拟量输出Analog Output,
Ø AV:模拟变量Analog Value,用于设定点SetPoint,中间变量等,
Ø DI(BI):数字量输入Digital Input(二进制输入Binary Input),
Ø DO(BO):数字量输出Digital Output(二进制输出Binary Output),
Ø DV(BV):数字变量Digital Value(二进制变量Binary Value),用于表示设备的启停命令等,
Ø MSI:多状态输入对象
Ø MSO:多态输出对象
Ø MSV:多状态值对象数
Ø Device:设备,用于描述MTB协议转换器及MODBUS从机设备相关信息。
MTB协议转换器实现BACnet对象列表如下:
对象名称
别名
最大数量
设备对象
DEVICE
1
二进制输入对象
Binary Input
300
二进制输出对象
Binary Output
100
模拟量输入对象
Analog Input
300
模拟量输出对象
Analog Output
100
二进制值对象
Binary Value
100
模拟值对象类型
Analog Value
100
多状态输入对象
MutileStats Input
300
多态输出对象
MutileStats Output
100
多状态值对象
MutileStats Value
100
6.2.2 Modbus接口模块
控制器提供标准的Modbus RTU接口,以满足低成本、快速的连接需求。
Modbus 协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。它已经成为一通用工业标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。
此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了一控制器请求访问其它设备的过程,如果回应来自其它设备的请求,以及怎样侦测错误并记录。它制定了消息域格局和内容的公共格式。
地址码
功能码
数据区
CRC高字节
CRC低字节
1字节
1字节
N字节
1字节
1字节
在MTB协议转换器的Modbus接口模块中,主要实现以下功能码操作。
Function Codes
Read coil status
Read input status
Read holding registers
Read input registers
Preset single register
Preset multiple register
Preset single coils
1) Modbus模块读取配置文件,生成modbus设备列表,包含各种通讯配置,数据点配置信息
2) 启动485总线通信线程,执行轮询和指令解析逻辑
3) Modbus模块根据配置的设备地址,波特率,数据点位信息,轮询间隔,在485总线上面实时采集数据,放入数据缓冲区;
4) Modbus模块定时刷新输出,或者接收数据输出指令,将数据通过485总线写入modbus设备中。
6.2.3 CGI 模块
CGI模块的功能是通过嵌入到Web服务器中的CGI进程,接收CGI参数请求对设备管理层的数据用XML报文进行封装,回传到外部请求组件。功能包括:
n 接收系统命令、系统配置的读取和设置。
n 设备层接口的数据的XML封装,提供给Web页面。
n 使用Apache Web服务器,提供页面服务
n 使用CGI库,提供对控制器内配置文件进行读写功能,已经其它配置。
CGI分为以下部分:
Ini文件访问模块:提供对ini格式配置文件的读写操作函数
XML文件生成模块:提供将数据信息组织成XML格式的函数
CGIC库函数:实现CGI程序的基本框架库函数。
6.2.4 Web模块
采用AJAX技术,快速稳定的实现设备监控页面的刷新功能。在EXTJS和jQuery的基础上进行开发。支持的浏览器类型为:
l Internet Explorer 6+
l FireFox 1.5+ (PC, Mac)
主要功能模块划分为:
l 系统设置
n 安全信息
n 网络接口
n BACnet通讯设置
n Modbus通讯设置
l 辅助工具
n 重新启动
n 软件升级
n 帮助
其中重点描述Data Objects菜单、Modbus RTU Data菜单、Modbus RTU Setup菜单
A、Data Objects菜单:浏览映射后的BACnet数据点列表
Analog:包括Input Objects、Output Objects、Value Objects
Binany: 包括Input Objects、Output Objects、Value Objects
MutileStats: 包括Input Objects、Output Objects、Value Objects
其中AI对象数据点浏览页面参考设计:
主要浏览参数如下:
Object # : BACnet对象ID
Object Name :BACnet对象名称
Present Value : 当前值
B、Modbus RTU Data: 用于浏览当前Modbus读写数据点映射表
RTU Registers参考设计
C、Modbus RTU Data Setup: 用于映射Modbus数据点到BACnet数据对象
包括选项如下:Local Device、RTU ReadMap、RTU WriteMap
Local Device :配置对modbus 从设备的访问所需的通讯参数
通讯波特率: 9600,19200,38400等
奇偶校验: 无校验,奇校验,偶校验
轮询周期:定义总线的轮询周期
通讯超时:定义与每个设备进行通讯的超时等待时间
FC 5/6 instead of 15/16:是否使用modbus 5/6号功能替代使用15/16号功能对设备进行读写访问。
RTU ReadMap: 建立modbus可读数据点到BACnet数据点的读映射
RTU WriteMap:建立modbus可写数据点到BACnet数据点的写映射
Remote Type
Modbus数据点类型
如线圈,开关量,寄存器
Remote Register Format
数据点数据格式
整数,浮点数,位变量等
Remote Unit#
Modbus设备地址
S
是否交换浮点数高低寄存器数据
Scale
模拟量的度量变换参数,
为0或1表示不变换
转换值=原始寄存器值*度量变换参数
比如原始寄存器值为1000,度量变换参数为0.01,则实际转换值为10.00
Local Object#
BACnet对象编号
如AI x,BI x等
Name
BACnet对象名
6.2.6 配置文件设计
配置文件是控制器的核心数据结构之一,完成控制器地址,通讯参数配置,以及modbus设备数据点和BACnet对象点之间的映射关系。采用Linux下常用的(section,key,value)结构形式的配置文件,可读性强,且可以手工编辑,参考设计配置文件内容和格式如下:
// Config.ini
[common] // 普通设置
Ip= // IP地址
Netmask= // 子网掩码
Gateway= // 网关地址
Baudrate= // 波特率
Parity= // 校验位,none,odd,even
Poll_period= // 轮询周期,秒为单位
Timeout= // modbus通讯等待超时,秒为单位
bacnet_device_instance= // BACnet设备编号
bacnet_port= // BACnet端口号,默认 0xBAC0
Bacnet_device_description= // BACnet设备描述
Username= // 用户名
Userpassword= // 用户密码
[rtu_read_map_xx] // 第XX个RTU READ MAP
Remote-type= // 数据点类型,0-4: none, coil output,discrete input,
//input register,holding register
Format= //数据格式 integer,unsigned,double,float,bit
unitNo= // 数据点所在modbus设备地址
RegisterNo= // 数据点寄存器编号
S // 是否交换double,float高低寄存器值
Scale= // 度量变换参数
objected= // 数据点映射对应的BACnet对象ID
objectName= // 数据点映射对应的BACnet对象名称
[rtu_write_map_xx] // 第XX个RTU WRITE MAP
// 与RTU READ MAP相同
七、技术参数
7.1 MTB协议转换器主模块技术参数
功能:
规格
供电电源
DC24V
处理器
32bit CPU处理器,主频200MHz
程序存储
64M Nand Flash
数据存储
64M SDRAM
以太网通信
规格
2路10M-100M自适应Ethernet,标准RJ45接口
支持协议
BACnet IP,TCP/IP,Http等
RS-485总线通信
总线数量
1路RS485总线通信,支持8个modbus slaver,
485通信速率
支持9600 bps、19200 bps、38400 bps等常用波特率
通信线缆
采用12-22AWG双绞屏蔽线RVSP
支持协议
Modus RTU
工作环境
0°C -- 50°C,5--90%RH (非凝结)
存储环境
-20°C -- 70°C,5--95%RH (非凝结)
注:
该方案BACnet接口模块,采用国际著名公司Cimetrics公司的BACnet商业协议栈,我公司花巨资引进美国商业协议栈代码,兼容性好,兼容性西门子、江森、艾顿(霍尼韦尔)等厂商楼宇自控系统管理平台,详细资料请参考Cimetrics公司网站。
下面内容来自该网站。
B1140 - BACstac/32 - BACnet Software for Embedded Systems
BACstac/32 is the industry's most robust and complete BACnet solution for the development of embedded control products.
Our customers have ported the BACstac source code to many 32-bit hardware/OS platforms. The BACstac's Operating System Abstraction defines a clean interface between the core BACstac code and the operating system.
Product Description
B1140 BACnet Software for Embedded Systems
The Cimetrics BACstac saves “man-years” of development when your company needs to create a BACnet solution for a 32-bit embedded platform.
Implementation of the BACnet standard is a a challenging assignment for even the most skilled computer programmers. The differences between BACnet and traditional IT protocols can lead to a significant learning curve when starting from scratch.
Our software team has created a set of BACnet libraries which greatly simplify the task of creating BACnet-compliant products. Even the largest companies in the HVAC industry use our code because it is a very complex and time-consuming task keeping up with the ongoing changes that are taking place in the BACnet standard. Numerous BACstac-based products are now BTL listed.
Specifications
B1140 BACnet Software for Embedded Systems
This is a BACnet protocol stack designed for the development of BACnet-compliant applications that run on 32-bit embedded platforms. Complete C-language source code is included. The customer is responsible for porting the BACnet software to the target platform.
The following specifications are for version 6.1 of B1140 BACnet Software for Embedded Systems.
BACnet revision: BACnet 2004 (all object types and application services) plus selected addenda.
Data links: BACnet/IP with Foreign Device and BBMD support, Ethernet (IEEE 802.3), ARCNET, MS/TP, PTP
BACnet routing: This product supports BACnet routing functionality and the creation of multi-device gateways.
Operating system requirements: The target platform must support threads, semaphores, recursive mutexes, dynamic memory allocation, time, persistent storage (for configuration data), and the required network interfaces. Please refer to the Porting Guide for more information.
Development tools: For Linux-based target platforms, gcc version 3.0 or later is supported.
Code provided: Example programs, unit tests, sample makefiles, and complete C-language source code.
Documentation provided: User's Guide, Porting Guide, and Programmers Reference.
Applications
More than 150 manufacturers are registered members of the BACnet community. This group includes prestigious companies like Siemens, Honeywell, Secom, JVC, Trane, Eaton/Cutler Hammer, KMC Controls, LG Electronics, Priva, Loytec, Matsushita, Matrikon, Mitsubishi, Samsung, Trend, Wago, and many more.
ALL of these companies mentioned use the Cimetrics BACstac !
Use the BACstac to create BACnet-compliant products for HVAC control, lighting control, physical access control and alarm systems.
23 / 23
展开阅读全文